core++-1.7/0040755000175000001440000000000010147210064011767 5ustar joachimuserscore++-1.7/ext/0040755000175000001440000000000010147210064012567 5ustar joachimuserscore++-1.7/ext/Makefile0100644000175000001440000000636110144725457014250 0ustar joachimusers# file: Makefile (for COREX) # # Makefile for CORE Library Extensions (libcorex++.a) # # We create the Level 1, 2 and 3 versions # of each library file, so that users can # run their CORE programs in either level. # $Id: Makefile,v 1.15 2004/11/11 18:10:55 exact Exp $ # ============================================================= # PATHS ======================================================= # ============================================================= CORE_PATH=.. INCLUDE=-I${CORE_PATH}/inc -I${CORE_PATH}/gmp/include MODULES := linearAlgebra geometry2d geometry3d L1_OBJS := $(foreach mod, ${MODULES}, $(mod)$(VAR)_level1.o) L2_OBJS := $(foreach mod, ${MODULES}, $(mod)$(VAR)_level2.o) L3_OBJS := $(foreach mod, ${MODULES}, $(mod)$(VAR)_level3.o) # ============================================================= # VARIABLES, FLAGS ============================================ # ============================================================= include ${CORE_PATH}/Make.config COREX_LIB_LEVEL3=${CORE_PATH}/lib/libcorex++$(VAR)_level3.a COREX_LIB_LEVEL2=${CORE_PATH}/lib/libcorex++$(VAR)_level2.a COREX_LIB_LEVEL1=${CORE_PATH}/lib/libcorex++$(VAR)_level1.a COREX_SHARED_LIB_LEVEL3=${CORE_PATH}/lib/libcorex++$(VAR)_level3.so COREX_SHARED_LIB_LEVEL2=${CORE_PATH}/lib/libcorex++$(VAR)_level2.so COREX_SHARED_LIB_LEVEL1=${CORE_PATH}/lib/libcorex++$(VAR)_level1.so TARGET=${COREX_LIB_LEVEL3} ${COREX_LIB_LEVEL2} ${COREX_LIB_LEVEL1} ifeq (${LINKAGE}, shared) TARGET += $(COREX_SHARED_LIB_LEVEL3) $(COREX_SHARED_LIB_LEVEL2) \ $(COREX_SHARED_LIB_LEVEL1) endif # ============================================================= # TARGETS ===================================================== # ============================================================= default: $(TARGET) graphicsTools: cd graphics; ${MAKE} # ============================================================= # RULES ====================================================== # ============================================================= ${COREX_LIB_LEVEL3}: ${L3_OBJS} -@rm -rf $@ $(AR) $@ $? ${COREX_SHARED_LIB_LEVEL3}: ${L3_OBJS} -@rm -rf $@ $(CXX) $(CORE_LDFLAGS) -o $@ $? ${COREX_LIB_LEVEL2}: ${L2_OBJS} -@rm -rf $@ $(AR) $@ $? ${COREX_SHARED_LIB_LEVEL2}: ${L2_OBJS} -@rm -rf $@ $(CXX) $(CORE_LDFLAGS) -o $@ $? ${COREX_LIB_LEVEL1}: ${L1_OBJS} -@rm -rf $@ $(AR) $@ $? ${COREX_SHARED_LIB_LEVEL1}: ${L1_OBJS} -@rm -rf $@ $(CXX) $(CORE_LDFLAGS) -o $@ $? %_level3.o: %.cpp ${CXX} $(CORE_CXXFLAGS) -DCORE_LEVEL=3 $(INCLUDE) -c $< -o $@ %_level2.o: %.cpp ${CXX} $(CORE_CXXFLAGS) -DCORE_LEVEL=2 $(INCLUDE) -c $< -o $@ %_level1.o: %.cpp ${CXX} $(CORE_CXXFLAGS) -DCORE_LEVEL=1 $(INCLUDE) -c $< -o $@ clean: -@test -z "*.o" || rm -f *.o -${MAKE} -C geom2d clean -${MAKE} -C geom3d clean veryclean: clean -@test -z "$(COREX_LIB_LEVEL3)" || rm -rf "$(COREX_LIB_LEVEL3)" -@test -z "$(COREX_LIB_LEVEL2)" || rm -rf "$(COREX_LIB_LEVEL2)" -@test -z "$(COREX_LIB_LEVEL1)" || rm -rf "$(COREX_LIB_LEVEL1)" -@test -z "$(COREX_SHARED_LIB_LEVEL1)"||rm -rf "$(COREX_SHARED_LIB_LEVEL1)" -@test -z "$(COREX_SHARED_LIB_LEVEL2)"||rm -rf "$(COREX_SHARED_LIB_LEVEL2)" -@test -z "$(COREX_SHARED_LIB_LEVEL3)"||rm -rf "$(COREX_SHARED_LIB_LEVEL3)" -${MAKE} -C geom2d veryclean -${MAKE} -C geom3d veryclean core++-1.7/ext/README0100644000175000001440000000102710104505102013435 0ustar joachimusersREADME File for CORE EXTENSIONS CURRENT EXTENSION PACKAGES (1) Linear Algebra: implements Vectors and Matrices, implements determinant (2) Geometry: divided into geom2d and geom3d (together: "geom*d") implements Point*d, Line*d, Segment*d Circle2d, Plane3d, Triangle3d, Polygon3d Note that geom3d is independent of geom2d. In particular, we test if a point is in a triangle in space by direct primitives in 3-d, and not by projection to the planar case. (3) Graphics: elementary display methods based on openGL core++-1.7/ext/geometry2d.cpp0100644000175000001440000000065607740440064015372 0ustar joachimusers // file: geometry3d.cc // sources for 3d geometry primitives // // author: Shubin Zhao (shubinz@cs.nyu.edu) // CORE Library version 1.4 // $Id: geometry2d.cpp,v 1.6 2003/10/07 04:25:24 exact Exp $ #ifndef CORE_LEVEL #define CORE_LEVEL 3 #endif #include #include #include "geom2d/point2d.cpp" #include "geom2d/line2d.cpp" #include "geom2d/segment2d.cpp" #include "geom2d/circle2d.cpp" core++-1.7/ext/geometry3d.cpp0100644000175000001440000000076307725664744015412 0ustar joachimusers// file: geometry3d.cc // sources for 3d geometry primitives // // author: Igor Pechtchanski (pechtcha@cs.nyu.edu) // CORE Library version 1.4 // $Id: geometry3d.cpp,v 1.4 2003/09/04 16:35:48 exact Exp $ #ifndef CORE_LEVEL #define CORE_LEVEL 3 #endif #include #include #include "geom3d/point3d.cpp" #include "geom3d/line3d.cpp" #include "geom3d/plane3d.cpp" #include "geom3d/segment3d.cpp" #include "geom3d/polygon3d.cpp" #include "geom3d/triangle3d.cpp" core++-1.7/ext/linearAlgebra.cpp0100644000175000001440000003011110104137473016021 0ustar joachimusers// // File: linearAlgebra.ccp // -- class Vector implementation // -- class Matrix implementation // Linear Algebra Extension of the CORE library, ver. 1.0 // Copyright (c) 1998, 1999, 2000 Exact Computation Project // written by Igor Pechtchanski (pechtcha@cs.nyu.edu) // $Id: linearAlgebra.cpp,v 1.7 2004/08/04 10:49:31 exact Exp $ // #ifndef CORE_LEVEL #define CORE_LEVEL 3 #endif #include static Vector VECTOR_ZERO_2D(0.0, 0.0); static Vector VECTOR_ZERO_3D(0.0, 0.0, 0.0); ////////////////////////////////////////////////////////////////////// // Vector class implementation ////////////////////////////////////////////////////////////////////// Vector::Vector(int d) : dim(d) { _rep = new double[dim]; for (int i = 0; i < dim; i++) _rep[i] = 0; } Vector::Vector() : dim(-1) { _rep = NULL; } Vector::Vector(double x, double y) : dim(2) { _rep = new double[dim]; _rep[0] = x; _rep[1] = y; } Vector::Vector(double x, double y, double z) : dim(3) { _rep = new double[dim]; _rep[0] = x; _rep[1] = y; _rep[2] = z; } Vector::Vector(int d, double *element) : dim(d) { _rep = new double[dim]; for (int i = 0; i= dim) throw RangeException(); return _rep[i]; } double& Vector::operator[](int i) { if (i < 0 || i >= dim) throw RangeException(); return _rep[i]; } double Vector::norm() const { return sqrt(dotProduct(*this, *this)); } double Vector::maxnorm() const { double n = 0; // for (int i = 0; i < dim; i++) // if (fabs(_rep[i]) > n) n = fabs(_rep[i]); return n; } double Vector::infnorm() const { double n = 0; for (int i = 0; i < dim; i++) n += fabs(_rep[i]); return n; } bool Vector::isZero() const { for (int i=0; idimension() != dim) throw Vector::ArithmeticException(); for (int j=0; j < dim; j++) m(i+1, j) = (*v[i])[j]; } Vector result(dim); for (int l=0; l>(std::istream& i, Vector& v) { int dim; i >> dim; Vector w(dim); for (int j=0; j> w[j]; v = w; return i; } std::ostream& operator<<(std::ostream& o, const Vector& v) { o << "Vector("; for (int i = 0; i < v.dim; i++) o << (i>0?",":"") << v._rep[i]; o << ")"; return o; } ////////////////////////////////////////////////////////////////////// // Matrix class implementation ////////////////////////////////////////////////////////////////////// Matrix::Matrix(int d) : dim1(d), dim2(d) { _rep = new double[dim1*dim2]; for (int i = 0; i < dim1*dim2; i++) _rep[i] = 0; } Matrix::Matrix(int d1, int d2) : dim1(d1), dim2(d2) { _rep = new double[dim1*dim2]; for (int i = 0; i < dim1*dim2; i++) _rep[i] = 0; } Matrix::Matrix(double m00, double m01, double m10, double m11) : dim1(2), dim2(2) { _rep = new double[dim1*dim2]; _rep[0] = m00; _rep[1] = m01; _rep[2] = m10; _rep[3] = m11; } Matrix::Matrix(double m00, double m01, double m02, double m10, double m11, double m12, double m20, double m21, double m22) : dim1(3), dim2(3) { _rep = new double[dim1*dim2]; _rep[0] = m00; _rep[1] = m01; _rep[2] = m02; _rep[3] = m10; _rep[4] = m11; _rep[5] = m12; _rep[6] = m20; _rep[7] = m21; _rep[8] = m22; } Matrix::Matrix(int m, int n, double *data) : dim1(m), dim2(n) { _rep = new double[dim1 * dim2]; for (int i=0; i < dim1 * dim2; i++) _rep[i] = data[i]; } Matrix::Matrix(const Matrix& m) : dim1(m.dim1), dim2(m.dim2) { _rep = new double[dim1*dim2]; for (int i = 0; i < dim1*dim2; i++) _rep[i] = m._rep[i]; } Matrix::~Matrix() { delete[] _rep; } Matrix& Matrix::operator=(const Matrix& m) { if (dim1*dim2 != m.dim1*m.dim2) { delete[] _rep; _rep = new double[m.dim1*m.dim2]; } dim1 = m.dim1; dim2 = m.dim2; int i = 0; // Chen Li, if use for statemen it gives some strange compiler error // so I changed it to "equivalent" while statement. ??? // for (i = 0; i < dim1*dim2; i++) { while (i < dim1 * dim2) { _rep[i] = m._rep[i]; i++; } return (*this); } bool Matrix::operator==(const Matrix& m) { if (dim1 != m.dim1 || dim2 != m.dim2) return false; for (int i = 0; i < dim1*dim2; i++) if (_rep[i] != m._rep[i]) return false; return true; } bool Matrix::operator!=(const Matrix& m) { return !(*this == m); } const Matrix& Matrix::operator+=(const Matrix& m) { if (dim1 != m.dim1 || dim2 != m.dim2) throw ArithmeticException(); for (int i = 0; i < dim1*dim2; i++) _rep[i] += m._rep[i]; return *this; } const Matrix& Matrix::operator-=(const Matrix& m) { if (dim1 != m.dim1 || dim2 != m.dim2) throw ArithmeticException(); for (int i = 0; i < dim1*dim2; i++) _rep[i] -= m._rep[i]; return *this; } const Matrix& Matrix::operator*=(double d) { for (int i = 0; i < dim1*dim2; i++) _rep[i] *= d; return *this; } const double& Matrix::operator()(int i, int j) const { if (i < 0 || i >= dim1 || j < 0 || j >= dim2) throw RangeException(); return _rep[i*dim2 + j]; } double& Matrix::operator()(int i, int j) { if (i < 0 || i >= dim1 || j < 0 || j >= dim2) throw RangeException(); return _rep[i*dim2 + j]; } const Matrix& Matrix::transpose() { if (dim1 == dim2) { for (int i = 0; i < dim1; i++) for (int j = i+1; j < dim2; j++) { double t = _rep[i*dim2 + j]; _rep[i*dim2 + j] = _rep[j*dim1 + i]; _rep[j*dim1 + i] = t; } } else { int d = dim1; dim1 = dim2; dim2 = d; double *r = _rep; _rep = new double[dim1*dim2]; for (int i = 0; i < dim1; i++) for (int j = 0; j < dim2; j++) _rep[i*dim2 + j] = r[j*dim1 + i]; } return *this; } // not right! // BUG to be fixed! double Matrix::determinant() const { if (dim1 != dim2) throw ArithmeticException(); Matrix A = *this; int i, j, k; for (i = 0; i < dim1 - 1; i++) { if (A(i,i) == 0) { // pivoting int p = i; for (int q = i + 1; q < dim1; q++) { if (A(q, i) != 0) { p = q; break; } } if (p == i) return 0; // assert(p != i); // swap double tmp; for (int d = i; d < dim1; d++) { tmp = A(i, d); A(i, d) = A(p, d); A(p, d) = tmp; } } for (j = i + 1; j < dim1; j++) { A(j, i) /= A(i, i); for (k = i + 1; k < dim1; k++) { A(j,k) -= A(i,k) * A(j,i); } } } double det = 1; for (i = 0; i < dim1; i++) det *= A(i,i); return det; } // friend det function (for 2x2 determinants) double det(const double a, const double b, const double c, const double d) { return (a*d - b*c); } // friend det function (u, v are 2d vectors) double det(const Vector u, const Vector & v) { assert(u.dimension()==2); assert(v.dimension()==2); return( u[0] * v[1] - u[1] * v[0] ); } Matrix Matrix::matrixAlgebraRemainder(int m, int n) const { Matrix R(dim1-1, dim2-1); int pos=0; for (int i = 0; i < dim1; i++) { if (i == m) continue; for (int j = 0; j < dim2; j++) { if (j == n) continue; R._rep[pos++] = _rep[i*dim1+j]; } } return R; } double Matrix::valueAlgebraRemainder(int m, int n) const { if ((m+n) % 2) { // (m+n) is odd return -matrixAlgebraRemainder(m, n).determinant(); } else { // (m+n) is even return matrixAlgebraRemainder(m, n).determinant(); } } Matrix operator+(const Matrix& a, const Matrix& b) { Matrix m = a; m += b; return m; } Matrix operator-(const Matrix& a, const Matrix& b) { Matrix m = a; m -= b; return m; } Matrix operator*(const Matrix& a, double b) { Matrix m = a; m *= b; return m; } Matrix operator*(double a, const Matrix& b) { Matrix m = b; m *= a; return m; } Vector operator*(const Vector& a, const Matrix& b) { if (a.dim != b.dim1) throw Matrix::ArithmeticException(); Vector v(b.dim2); for (int i = 0; i < b.dim2; i++) { double d = 0; for (int j = 0; j < a.dim; j++) d += a._rep[j]*b._rep[j*b.dim2 + i]; v._rep[i] = d; } return v; } Vector operator*(const Matrix& a, const Vector& b) { if (b.dim != a.dim2) throw Matrix::ArithmeticException(); Vector v(a.dim1); for (int i = 0; i < a.dim1; i++) { double d = 0; for (int j = 0; j < b.dim; j++) d += a._rep[i*a.dim2 + j]*b._rep[j]; v._rep[i] = d; } return v; } Matrix operator*(const Matrix& a, const Matrix& b) { if (a.dim2 != b.dim1) throw Matrix::ArithmeticException(); Matrix m(a.dim1, b.dim2); for (int i = 0; i < a.dim1; i++) for (int j = 0; j < b.dim2; j++) { double d = 0; for (int k = 0; k < a.dim2; k++) d += a._rep[i*a.dim2 + k]*b._rep[k*b.dim2 + j]; m._rep[i*b.dim2 + j] = d; } return m; } Matrix transpose(const Matrix& a) { Matrix m = a; m.transpose(); return m; } std::istream& operator>>(std::istream& i, Matrix& m) { int dim; i >> dim; Matrix n(dim); for (int j=0; j> n(j,k); m = n; return i; } std::ostream& operator<<(std::ostream& o, const Matrix& m) { o << "Matrix("; for (int i = 0; i < m.dim1; i++) { o << (i>0?";":""); for (int j = 0; j < m.dim2; j++) o << (j>0?",":"") << m._rep[i*m.dim2 + j]; } o << ")"; return o; } core++-1.7/ext/report.txt0100644000175000001440000000723307437361200014654 0ustar joachimusers Geometry Library Development Report Shubin Zhao Summer,2001 Description This Geometry Library is an extension of the CORE library. The library includes 2-D and 3-D parts. The library provides basic geometry operations. It also provides good 2-d and 3-d intersection functions which can deal with any degeneracy cases. These two parts are independent that means the 3-D part is not based on 2-D. All the computations are done in 3-D. No projection is used. The 2-D library includes Point, Line, Segment and Circle classes. The 3-D library includes Point, Line, Seg ment, Plane, Polygon and Triangle classes. An important part of the 3-D library is the triangle-triangle intersection functions. We also include test programs for t he library. All the 2-D and 3-D classes have a base class named GeomObj. Some Design Issue Both the 2-d and 3-d library use some common linear algebra classes which are basically definations of Vector and Matrix. These two classes can be of any dimension. So both 2-d and 3-d library can use them. In either library, the point class is a basic class that used by other classes, like line or segment. It also includes some predicates like points orientation etc. Each class has a dim() function which return the dimension of the object. Note that this is not the dimension of the coordinates. The dimension of an object is defined like this: A point is of dimension 0; A line, segment or cirle is of dimension 1; A plane is of dimension 2; A polygon or triangle is of dimension 2. The dim() function is a virtual function so that it can be used to test the type of an object. You may notice this may not be enough to distinct line or segment. But as an intersection object, line or segment can not happen both. For triangle or polygon cases, a triangle can be viewed as polygon. So it doesn't matter. Each class that is implemented intersection operation has two functions, one is intersect predicate, which return the dimension of the intersection. If no intersection, it return -1. It returns 0 if the intersection is a point and etc. The intersection function returns a reference of the intersection object of two objects. It returns NULL if no intersection indeed. As we mentioned above, you can use dim() function to check what real object the intersection is. For the intersection functions, it should be good to implement them as commutative. But since there is a circular include problem, we didn't implement them that way. T his can be implemented as friend functions, by which we can easily make them commutative. Test Programs The test programs are implemented for the 3-d library. There are two test programs. One is the pentagon test, which compute the inner and outer pentagon for repeatedly. If the computing is exact, the resulting pentagon should be exactly the same as the orginal one. Another program is to test all the functions that has been implemented. We design the test program that tends to test all the functions and different cases in the library. The three tests are designed for segment, plane and triangle classes. Since most of segment function implementation is based on line functions, so line class should be covered if the segment test is okay. Further Works (1) Add check to make sure an object is proper before computing intersection or other computation. An improper object may cause problems in computation. (2) Implement intersection functions to be communitative. A suggestion is to use friend functions. (3) Use different functions for coplanar intersection and non-coplanar intersection. Otherwise the coplanarity test has to be done repeatedly. core++-1.7/ext/geom2d/0040755000175000001440000000000010147210064013744 5ustar joachimuserscore++-1.7/ext/geom2d/Makefile0100644000175000001440000000122207662550257015421 0ustar joachimusers# file: Makefile (for geom2d) # # $Id: Makefile,v 1.2 2003/05/21 01:04:47 exact Exp $ # ============================================================= # PATHS ======================================================= # ============================================================= CORE_PATH=.. INCLUDE=-I${CORE_PATH}/inc -I${CORE_PATH}/gmp LIBPATH=-L${CORE_PATH}/lib -L${CORE_PATH}/gmp/.libs # ============================================================= # FLAGS ======================================================= # ============================================================= clean: -${MAKE} -C test clean veryclean: -${MAKE} -C test veryclean core++-1.7/ext/geom2d/circle2d.cpp0100644000175000001440000000771407725666704016175 0ustar joachimusers/***************************************************************** * File: circle2d.cc * Synopsis: * Basic 2-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: circle2d.cpp,v 1.5 2003/09/04 16:52:20 exact Exp $ *****************************************************************/ #include #include Circle2d::Circle2d(const Point2d& P1, const Point2d& P2, const Point2d& P3) : p1(P1), p2(P2), p3(P3), cp(0), rp(0) { orient = orientation2d(p1, p2, p3); if (orient == 0 ) { std::cout << "Circle2d::Circle2d: non-admissable triple"; exit(1); } } Circle2d::~Circle2d() { if (cp) delete cp; if (rp) delete rp; } //center a, with b0 on circle Circle2d::Circle2d(const Point2d& a, const Point2d& b0) : p1(b0) { p2 = b0; p2.rotate90(a); p3 = p2; p3.rotate90(a); cp = new Point2d(a); rp = new double(a.distance(b0)); } Circle2d::Circle2d() : p1(0,0), p2(0,0), p3(0,0) { } Circle2d::Circle2d(const Point2d& m, double r) { Point2d a(m.X(), m.Y()+r); Point2d b(m.X(), m.Y()-r); Point2d c(m.X()+r, m.Y()); p1 = a; p2 = b; p3 = c; cp = new Point2d(m); rp = new double(r); } Circle2d& Circle2d::operator=(const Circle2d& C) { p1 = C.p1; p2 = C.p2; p3 = C.p3; orient = C.orient; cp = C.cp; rp = C.rp; return *this; } Point2d Circle2d::center() { if (cp == 0) { if (collinear(p1, p2, p3)) { std::cout << "Circle2d::center(): points are collinear." << std::endl; } Line2d l1 = p_bisector(p1, p2); Line2d l2 = p_bisector(p2, p3); Point2d m; cp = (Point2d *)l1.intersection(l2); } return *cp; } double Circle2d::radius() { if (rp == 0) rp = new double( center().distance(p1) ); return *rp; } bool Circle2d::operator==(const Circle2d& c) const { if (!c.contains(p1)) return false; if (!c.contains(p2)) return false; if (!c.contains(p3)) return false; return true; } double Circle2d::distance(const Point2d& p) { double d = p.distance(center()) - radius(); return d; } double Circle2d::distance(const Line2d& l) { double d = l.distance(center()) - radius(); if (d < 0) d = 0; return d; } double Circle2d::distance(Circle2d& c) { double d = center().distance(c.center()) - radius() - c.radius(); if (d < 0) d = 0; return d; } int Circle2d::side_of(const Point2d& p) const { double ax = p1.X(); double ay = p1.Y(); double bx = p2.X() - ax; double by = p2.Y() - ay; double bw = bx*bx + by*by; double cx = p3.X() - ax; double cy = p3.Y() - ay; double cw = cx*cx + cy*cy; double d1 = cy*bw - by*cw; double d2 = bx*cw - cx*bw; double d3 = by*cx - bx*cy; double px = p.X() - ax; double py = p.Y() - ay; double pw = px*px + py*py; double D = px*d1 + py*d2 + pw*d3; if (D != 0) return (D > 0) ? 1 : -1; else return 0; } bool Circle2d::outside(const Point2d& p) { return (orient * side_of(p)) < 0; } bool Circle2d::inside(const Point2d& p) { return (orient * side_of(p)) > 0; } bool Circle2d::contains(const Point2d& p) const { return side_of(p) == 0; } std::ostream& operator<<(std::ostream& out, Circle2d& c) { out << "Circle2d[ center=" << c.center() << ", radius=" << c.radius() << "]"; return out; } std::istream& operator>>(std::istream& in, Circle2d c) { Point2d p1, p2, p3; std::cout << "\nInput first point(-,-):"; in >> p1; std::cout << "\nInput second point(-,-):"; in >> p2; std::cout << "\nInput third point(-,-):"; in >> p3; c = Circle2d(p1, p2, p3); return in; } core++-1.7/ext/geom2d/line2d.cpp0100644000175000001440000001025010055167005015624 0ustar joachimusers/***************************************************************** * File: line2d.cc * Synopsis: * Basic 2-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: line2d.cpp,v 1.8 2004/05/26 19:20:37 exact Exp $ *****************************************************************/ #include Line2d::Line2d(const Point2d &p, const Vector &v) : p0(p), p1(p + v), V(v) { assert(p != p+v); } Line2d::Line2d(const Point2d &p, const Point2d &q) : p0(p), p1(q), V(p - q) { assert(p != q); } Line2d::Line2d(const Line2d &l) : p0(l.p0), p1(l.p1), V(l.V) { assert(l.p0 != l.p1); } Line2d::Line2d() : p0(0.0, 0.0), p1(0.0, 0.0), V(0) {} // line passes through the origin with direction 0. // improper line /************************************************************* * distance and others *************************************************************/ double Line2d::distance(Point2d p) const { double d = (p1.X()-p0.X())*(p0.Y()-p.Y()) - (p1.Y()-p0.Y())*(p0.X()-p.X()); d /= p0.distance(p1); return (d < 0) ? -d : d; } Point2d Line2d::projection(const Point2d& q) const { Vector Vpq = q - p0; double lambda = dotProduct(Vpq, V)/dotProduct(V, V); return p0 + lambda * V; } int Line2d::orientation( const Point2d& p ) const { double d2 = (p1.Y()-p0.Y())*(p0.X()-p.X()); double d1 = (p1.X()-p0.X())*(p0.Y()-p.Y()); if (d1 == d2) return 0; else return (d1 > d2) ? +1 : -1; /// which is which } double Line2d::y_abs() const { if (isVertical()) { core_error("Error in computing abs for a vertical line", __FILE__, __LINE__, false); return 0; } else return (p0.Y() - slope()*p0.X()); } // returning the tangent of the slope angle double Line2d::slope() const { double dx = p0.X() - p1.X(); double dy = p0.Y() - p1.Y(); if (dx == 0) { core_error("Error in computing slope for a vertical line", __FILE__, __LINE__, false); return 0; } else return dy / dx; } /************************************************************* * intersection *************************************************************/ int Line2d::intersects(const Line2d& l) const{ // return the dimension of intersection // return -1 if not intersect if( isParallel( l ) ) return -1; else if( isCoincident( l ) ) return 1; else // intersection is point return 0; } GeomObj* Line2d::intersection(const Line2d& l) const { if ( intersects(l) == -1 ) return NULL; if( is_trivial() || l.is_trivial() ) { return NULL; } if( isCoincident( l ) ) return new Line2d(*this); double u = det(l.direction(), V); double w = det(l.direction(), l.startPt() - p0 ); double lambda = w/u; Vector t = lambda * V; return new Point2d(p0 + t); } int orientation2d( Line2d& l, Point2d& p) { Point2d start = l.startPt(); Point2d end = l.stopPt(); double d2 = (end.Y()-start.Y())*(start.X()-p.X()); double d1 = (end.X()-start.X())*(start.Y()-p.Y()); if (d1 == d2) return 0; else return (d1 > d2) ? +1 : -1; /// which is which } std::ostream & operator<<(std::ostream &out, const Line2d &l) { return out << "Line2d[" << l.p0 << "===" << l.p1 << ";" << l.V << "]"; } std::istream& operator>>(std::istream& in, Line2d& l) { // syntax: {[} p {===} q {]} Point2d p, q; char c; do in.get(c); while (isspace(c)); if (c != '[') in.putback(c); in >> p; do in.get(c); while (isspace(c)); while (c == '=') in.get(c); while (isspace(c)) in.get(c); in.putback(c); in >> q; do in.get(c); while (c == ' '); if (c != ']') in.putback(c); l = Line2d(p, q); return in; } Line2d p_bisector(const Point2d& p, const Point2d& q) { return Line2d(p, q).rotate90(midPoint(p, q)); } core++-1.7/ext/geom2d/point2d.cpp0100644000175000001440000002235510104505102016024 0ustar joachimusers/***************************************************************** * File: point2d.ccp * Synopsis: * Basic 2-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * Chee Yap (yap@cs.nyu.edu), 2002. * * To Do: * Generation of random and special point sets * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: point2d.cpp,v 1.13 2004/08/05 19:28:02 exact Exp $ *****************************************************************/ #include "CORE/CORE.h" #include "CORE/geom2d/point2d.h" // returns the midpoint between a and b Point2d midPoint(const Point2d& a, const Point2d& b) { return Point2d( (a.X() + b.X())/2 , (a.Y() + b.Y())/2 ); } // returns "asymmetric center" point on the line through a, b. // default: alpha = 0.5 (the midpoint or center) Point2d aCenter(const Point2d& a, const Point2d& b, machine_double alpha) { return Point2d( (1 - alpha) * a.X() + alpha * b.X() , (1 - alpha) * a.Y() + alpha * b.Y() ); } /* orientation: computes the orientation of points a, b, and c as the sign of the determinant | ax ay 1 | | bx by 1 | | cx cy 1 | i.e., it returns +1 if point c lies left of the directed line through a and b, 0 if a,b,and c are collinear, and -1 otherwise. */ int orientation2d(const Point2d& a, const Point2d& b, const Point2d& c) { double d1 = (a.X() - b.X()) * (a.Y() - c.Y()); double d2 = (a.Y() - b.Y()) * (a.X() - c.X()); if (d1 == d2) return 0; else return (d1 > d2) ? +1 : -1; } bool leftTurn(const Point2d& a, const Point2d& b, const Point2d& c) { return (orientation2d(a,b,c)>0); } bool rightTurn(const Point2d& a, const Point2d& b, const Point2d& c) { return (orientation2d(a,b,c)<0); } double area(const Point2d& a, const Point2d& b, const Point2d& c) /* computes the signed area of the triangle determined by a, b, c, positive if orientation(a,b,c) > 0, and negative otherwise. */ { return ((a.X()-b.X()) * (a.Y()-c.Y()) - (a.Y()-b.Y()) * (a.X()-c.X())); } bool collinear(const Point2d& a, const Point2d& b, const Point2d& c) /* returns true if points a, b, and c are collinear, i.e., orientation(a, b, c) = 0, and false otherwise. */ { return (a.Y()-b.Y()) * (a.X()-c.X()) == (a.X()-b.X()) * (a.Y()-c.Y()); } bool between(const Point2d& a, const Point2d& b, const Point2d& c) /* returns true if a,b,c are collinear and b is strictly * between a and c. */ { return ((collinear(a,b,c) && dotProduct(a-b, c-b)<0)); } bool betweenVar(const Point2d& a, const Point2d& b, const Point2d& c) /* returns true if dotProduct(a-b,c-b)<0; * If a,b,c are collinear, this is equivalent * to b lying strictly between a and c. */ { return (dotProduct(a-b, c-b)<0); } Point2d::Point2d() : x(0.0), y(0.0) {} Point2d::Point2d(double _x, double _y) : x(_x), y(_y) {} Point2d::Point2d(const Point2d &p) : x(p.x), y(p.y) {} Point2d::Point2d(Vector v) : x(v[0]), y(v[1]) { } Point2d& Point2d::operator=(const Point2d& p) { x = p.x; y = p.y; return *this; } double Point2d::distance(const Point2d p) const { double dx = x - p.x; double dy = y - p.y; return sqrt(dx*dx + dy*dy); } Vector Point2d::operator-(const Point2d &p) const { return Vector(x - p.x, y-p.y); } Point2d Point2d::operator+(const Vector &v) const { return Point2d(x+v[0], y+v[1]); } Point2d Point2d::rotate90(const Point2d& p) { double px = p.X(); double py = p.Y(); double dx = X() - px; double dy = Y() - py; return Point2d(px-dy, py+dx); } bool Point2d::operator==(const Point2d &p) const { return (x == p.x) && (y == p.y); } std::ostream &operator<<(std::ostream &out, const Point2d p) { out << "Point2d(" << p.x << "," << p.y << ")"; return out; } /* OLD: std::istream& operator>>(std::istream& in, Point2d& p) // Format: ( nnn , nnn ) // where the white spaces, "(", "," and ")" are all optional. // but no other non-white chars may be used. { double x, y; // CORE disallow in >> double???? char c; // char buf[256]; do in.get(c); while (in && isspace(c)); if (!in) return in; if (c != '(') in.putback(c); in >> x; do in.get(c); while (isspace(c)); if (c != ',') in.putback(c); in >> y; do in.get(c); while (c == ' '); if (c != ')') in.putback(c); p = Point2d(x, y); return in; } */ // NEW version of operator>> uses the auxilliary functions: // startNum(char), // getToChar(istream, char), // getToNum(istream, char). // startNum(c): check if char c can be the start of a literal number // i.e., if c occurs in string '01234567890+-.' bool startNum(char c) { switch(c) { case '0': ; case '1': ; case '2': ; case '3': ; case '4': ; case '5': ; case '6': ; case '7': ; case '8': ; case '9': ; case '+': ; case '-': ; case '.': return true; break; } return false; }//startNum(c) // getToChar(istream, mark): // -- moves input cursor to the next occurrence of mark // -- in any case, it will stop if it gets to the beginning // of the next number (indicated by startNum()). bool getToChar( std::istream& in, char mark) { char c; char buf[256]; bool got_mark = false; do { in.get(c); if (!isspace(c)) { if (c == mark) { got_mark = true; // this is what we were looking for } else if (c == '#') { // rest of line is discarded as comment in.getline(buf,256); } else if (startNum(c)) { //IOErrorFlag = 2; // I/O Error 2: did not find // mark before next number in.putback(c); // we accept this even if mark not yet found return false; // Usually not considered error } else { //IOErrorFlag = 1; // I/O Error 1: return false; // Unexpected character } } } while (!(got_mark || in.eof())); return (got_mark); }//getToChar // getToNum(istream, mark, strict): // -- moves input cursor to the beginning of the next number. bool getToNum( std::istream& in, char mark, bool strict=false) { // default value for strict is false // NOTES: We ignore spaces, comment lines // and accept at most one copy of the "mark" character. // [It must be exactly one copy when strict=true] // If so, we return true. // Return false if reach eof with no number, or // saw 2 "mark" characters, or saw ANY other unexpected chars. char c; char buf[256]; bool got_mark = false; bool got_num = false; do { in.get(c); if (!isspace(c)) { if (c == mark) { if (got_mark) { //IOErrorFlag = 2; // I/O Error 2: return false; // Second mark found } else got_mark = true; // this is what we were looking for } else if (startNum(c)) { // we may get this before finding mark in.putback(c); // but we accept this (not considered error) got_num = true; } else if (c == '#') { // rest of line is discarded as comment in.getline(buf,256); } else { //IOErrorFlag = 1; // I/O Error 1: return false; // Unexpected character } } } while (!(got_num || in.eof())); return (got_num && (got_mark || !strict)); }//getToNum // Operator>>>(in, p) : Reads an input point which has the format // ( nnn , nnn ) // where the white spaces, "(", "," and ")" are all optional. std::istream& operator>>(std::istream& in, Point2d& p) { // NOTE: No other non-white chars may be used. Whenever we see #, // the rest of line is omitted, and it counts as white space. // E.g., "[ nnn : nnn ]" is no good but "( nnn, nnn) #xxx" is OK. double x, y; // if (!(getToNum(in, '(') || IOErrorFlag || in.eof())) if (!(getToNum(in, '(') || in.eof())) return in; // No first value else in >> x; // if (!(getToNum(in, ',') || IOErrorFlag ||in.eof())) if (!(getToNum(in, ',') || in.eof())) return in; // no second value else in >> y; getToChar(in, ')'); // This terminates if the start of the next number p = Point2d(x, y); // occurs before ')'. return in; } // operator>> // readPoints(iS, pA, MaxN, N) : // reads a sequence of points from istream iS into Point2d array pA. int readPoints(std::istream & iS, Point2d *pA, int MaxN, int N){ // DEFAULT VALUES: MaxN=1000, N=0 // The input stream constains a sequence of 2K+1 numbers of the form // // [NN] ( x1 , y1 ) ( x2 , y2 ) ... ( xK , yK ) // // The i-th point is (xi, yi). // (0) NN is optional if N is given as argument (then N is set to NN) // (1) Any of the "(", "," and ")" are optional // (2) Newlines, extra white spaces, '#' are all ignored. // (3) Also, everything after '#' is discarded. // If N > MaxN, nothing is read and 0 is returned. // Returns the number of points actually read, i.e, min(K, N). int i; // IOErrorFlag = 0; // initially no error if (N == 0) { // read NN from input if (getToNum(iS, ' ')) iS >> N; else return 0; } if (N > MaxN) return 0; for (i = 0; i < N; i++){ if (iS.eof()) break; // if (!IOErrorFlag) { if (true) { iS >> pA[i]; } else { i = 0; break; } } return i; // number of points read }//readPoints(...) core++-1.7/ext/geom2d/segment2d.cpp0100644000175000001440000001525107725666705016372 0ustar joachimusers /***************************************************************** * File: segment2d.cc * Synopsis: * Basic 2-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: segment2d.cpp,v 1.5 2003/09/04 16:52:21 exact Exp $ *****************************************************************/ #include /************************************************************ * * constructors ************************************************************/ //ray segment Segment2d::Segment2d(const Point2d &p, const Vector &v) : p0(p), p1(p + v) { directed = false; open = false; } Segment2d::Segment2d(const Point2d &_p0, const Point2d &_p1) : p0(_p0), p1(_p1) { directed = false; open = false; } Segment2d::Segment2d(const Segment2d &s) : p0(s.startPt()), p1(s.stopPt()) { directed = false; open = false; } Segment2d::Segment2d() : p0(0.0, 0.0), p1(0.0, 0.0) { directed = false; open = false; } // line passes through the origin with direction 0. /************************************************************ * * Member functions ************************************************************/ // test if two segments are coincident bool Segment2d::isCoincident( const Segment2d& s) const { if( directed ) return (p0==s.startPt() && p1==s.stopPt()); else if( (p0==s.startPt() && p1==s.stopPt()) || (p1==s.startPt() && p0==s.stopPt()) ) return true; else return false; } // returns the Euclidean distance between this segment and point q // problem exists when segment is open double Segment2d::distance( const Point2d& p ) const{ double s1 = dotProduct(p1-p0, p-p0); double s2 = dotProduct(p1-p0, p-p1); if( s1*s2 <= 0) return toLine().distance( p ); else return (s1>0)? p1.distance( p ) : p0.distance( p ); } // returns the point on segment closest to q /* NOTE: * problem exist when segment is open! * need to be solved later */ Point2d Segment2d::nearPt( const Point2d& p ) const { double s1 = dotProduct(p1-p0, p-p0); double s2 = dotProduct(p1-p0, p-p1); if( s1*s2 <= 0) return toLine().projection( p ); else return (s1>0)? p1 : p0; } bool Segment2d::contains( const Point2d& p ) const { if( !toLine().contains( p ) ) return false; // must be collinear here double sign = dotProduct(p-p0, p-p1); if( sign < 0 ) return true; else if( sign==0 && !open ) return true; else return false; } //decides whether this segment intersects t int Segment2d::intersects( const Line2d& l) const { if( l.contains(p0) && l.contains(p1) ) // this segment is on l return 1; int s1 = l.orientation( p0 ); int s2 = l.orientation( p1 ); if(s1==0 && s2==0) //is on return 1; else if( s1*s2>0 ) return -1; else return 0; } //return dim of intersection int Segment2d::intersects( const Segment2d& s) const { int res = intersects( s.toLine()); if( res == -1 ) return -1; else if( res == 0 ) if( s.intersects( toLine() ) == 0 ) return 0; //double check else return -1; else { // must be collinear double s1 = dotProduct( s.startPt()-p0, s.startPt()-p1 ); // o<-----*-->o double s2 = dotProduct( s.stopPt()-p0, s.stopPt()-p1 ); // o<---------o<--* double s3 = dotProduct( p0-s.startPt(), p0-s.stopPt() ); // *<-----o-->* double s4 = dotProduct( p1-s.startPt(), p1-s.stopPt() ); // *<---------*<--o if( s1<0 || s2<0 || s3<0 || s4<0 ) // -o---*--o----*- OR: -o---*-----*-o- //one end point is contained return 1; // then must be a segment intersection else if( s1==0 && s2==0 ) // -8===========8- return 1; // coincident else if( s1>0 && s2>0 ) return -1; // -o--------o-*----*- or *----*--o--------o- else // one end point is coincident -o--------8-------o- if( open || s.isOpen() ) return -1; else return 0; } } // return intersection point if this segment and l intersect at a single point // the intersection point is returned GeomObj* Segment2d::intersection( const Line2d& l ) const { if( l.isCoincident( toLine() ) ) return new Segment2d(*this); Point2d* p = (Point2d*)l.intersection( toLine() ); if( p!=NULL && contains( *p ) ) return p; else return NULL; } // return intersection -- segment or point GeomObj* Segment2d::intersection( const Segment2d& s ) const { if( toLine().isCoincident( s.toLine() ) ) { // colinear // first intersect the segment s with ray starting from p0 Segment2d interSegment; double s1 = dotProduct(s.startPt() - p0, p1-p0 ); double s2 = dotProduct(s.stopPt() - p0, p1-p0 ); if( s1<0 && s2<0 ) return NULL; else if(s1>=0 && s2>=0) // copy s interSegment = Segment2d( s ); else if (s1>=0) interSegment = Segment2d(p0, s.startPt()); else interSegment = Segment2d(p0, s.stopPt()); // then intersect the resulting segment with ray starting from p1 double s3 = dotProduct(interSegment.startPt() - p1, p1-p0 ); double s4 = dotProduct(interSegment.stopPt() - p1, p1-p0 ); if( s3>0 && s4>0 ) return NULL; else if(s3<=0 && s4>0) interSegment = Segment2d(interSegment.startPt(), p1); else if(s4<=0 && s3>0) interSegment = Segment2d(interSegment.stopPt() , p1); //else -- s3<=0 && s4<=0 //do nothing cause intersection remains unchanged if( interSegment.isTrivial() ) //intersection is point return new Point2d( interSegment.startPt() ); else return new Segment2d( interSegment ); } else{ // use line-line intersection Point2d* p = (Point2d *)toLine().intersection( s.toLine() ); if( p!=NULL && contains(*p) && s.contains(*p) ) // check return p; else return NULL; } } std::ostream& operator<<(std::ostream& out, const Segment2d & s) { return out << "Segment2d[" << s.p0 << "," << s.p1 << "; directed=" << s.directed << "; open=" << s.open << "]"; } std::istream& operator>>(std::istream& in, Segment2d& l) { Point2d pStart, pEnd; std::cout << "\nInput segment start point(-,-):"; in >> pStart; std::cout << "Input segment end point(-,-):"; in >> pEnd; l = Segment2d(pStart, pEnd); return in; } core++-1.7/ext/geom2d/test/0040755000175000001440000000000010147210064014723 5ustar joachimuserscore++-1.7/ext/geom2d/test/Makefile0100644000175000001440000000320207736760347016405 0ustar joachimusers# Makefile for pentagon # # Core Library, $Id: Makefile,v 1.4 2003/10/02 08:25:11 exact Exp $ CORE_PATH=../../.. include $(CORE_PATH)/Make.config CORE_INC=-I$(CORE_PATH)/inc -I$(CORE_PATH)/gmp/include CORE_LIB=-L$(CORE_PATH)/lib -L$(CORE_PATH)/gmp/lib -lcore$(VAR) -lgmp -lm #================================================= # Define target files (put all your files here) #================================================= LEV=1 LEV=3 TARGETS= pentagon_level3 pentagon_level1 p=tGeom2d ifile = i5 ifile = i5a ifile = i5b default: ${p} ./${p} all: $(TARGETS) test: $(TARGETS) ./pentagon_level1 < inputs/${ifile} ./pentagon_level3 < inputs/${ifile} tGeom2d: tGeom2d.o ${CXX} $(CXXFLAGS) $? -lcorex${VAR}_level${LEV} $(CORE_LIB) -o $@ %_level1: %_level1.o ${CXX} $(CXXFLAGS) $? -lcorex${VAR}_level1 $(CORE_LIB) -o $@ %_level3: %_level3.o ${CXX} $(CXXFLAGS) $? -lcorex${VAR}_level3 $(CORE_LIB) -o $@ #================================================= # Rules for Level 1 and Level 3 #================================================= %_level1.o: %.cpp ${CXX} -c -DCORE_LEVEL=1 $(CXXFLAGS) $(CORE_INC) $< -o $@ %_level3.o: %.cpp ${CXX} -c -DCORE_LEVEL=3 $(CXXFLAGS) $(CORE_INC) $< -o $@ .cpp.o: ${CXX} -c -DCORE_LEVEL=${LEV} $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/ext/geom2d/test/README0100644000175000001440000000024607736760347015632 0ustar joachimusersREADME This is for local testing of geometry package Something seems funny about the pentagon example -- it is always correct even at level 1 with degenerate input? core++-1.7/ext/geom2d/test/pentagon.cpp0100644000175000001440000000647007736760347017276 0ustar joachimusers/***************************************************************** * File: pentagon.ccp * Synopsis: * pentagon test * Author: Shubin Zhao (2001) * (modified, Chee Yap, 2003) * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: pentagon.cpp,v 1.3 2003/10/02 08:25:11 exact Exp $ *****************************************************************/ #include "CORE/CORE.h" #include "CORE/geometry2d.h" using namespace std; void inner( Point2d pentagon[5], Point2d * output) { for(int i=0; i<5; i++) { Line2d diagnal1(pentagon[i], pentagon[(i+2)%5]); Line2d diagnal2(pentagon[(i+1)%5], pentagon[(i+4)%5]); output[i] = *(Point2d *)diagnal1.intersection(diagnal2); } } void outer( Point2d pentagon[5], Point2d * output) { for(int i=0; i<5; i++) { Line2d edge1(pentagon[i], pentagon[(i+1)%5]); Line2d edge4(pentagon[(i+3)%5], pentagon[(i+4)%5]); output[i] = *(Point2d *)edge1.intersection(edge4); } } bool isEqual(Point2d pentA[5], Point2d pentB[5]) { for(int i=0; i<5; i++) { if( pentA[i] != pentB[i] ) return false; } return true; } void assign( Point2d* pent_dst, Point2d* pent_src ) { for( int j=0; j<5; j++ ) pent_dst[j] = pent_src[j]; } void pent_print(Point2d pentagon[5]) { cout << "\nPentagon:\n"; cout << pentagon[0] << "\n" << pentagon[1] << "\n" << pentagon[2] << "\n" << pentagon[3] << "\n" << pentagon[4] << "\n" ; } int main( int argc, char* argv[] ) { Point2d pentagon2d[5]; //= { Point2d(1.0, 0.0), // Point2d(0.309017, 0.951), // Point2d(-0.809017, 0.587785), // Point2d(-0.809017, -0.587785), // Point2d(0.309017, -0.951) }; loadPoints(cin, pentagon2d, 5); Point2d pentTmp[5]; Point2d pentInner[5]; Point2d pentOuter[5]; EscapePrec = CORE_INFTY; int rounds = 2; if( argc > 1 ) for( int i=1; i * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: line3d.cpp,v 1.5 2003/09/04 16:53:44 exact Exp $ *****************************************************************/ #include /************************************************************ * * constructors ************************************************************/ Line3d::Line3d(const Point3d &p, const Vector &v) : p0(p), p1(p + v), V(v) { } Line3d::Line3d(const Point3d &_p0, const Point3d &_p1) : p0(_p0), p1(_p1), V(_p1 - _p0) { } Line3d::Line3d(const Line3d &l) : p0(l.p0), p1(l.p1), V(l.V) { } Line3d::Line3d() : p0(0.0, 0.0, 0.0), p1(0.0, 0.0, 0.0), V(0) {} // line passes through the origin with direction 0. /************************************************************ * * Member functions ************************************************************/ double Line3d::distance(const Point3d& q) const { Vector Vpq = q - p0; Vector u = V.cross( Vpq ); return u.norm()/V.norm(); } Point3d Line3d::projection(const Point3d& q) const { Vector Vpq = q - p0; double lambda = dotProduct(Vpq, V)/dotProduct(V, V); return p0 + lambda * V; } bool Line3d::contains(const Point3d& p) const { return V.cross( p - p0 ).isZero(); } bool Line3d::isCoincident(const Line3d& l) const { return contains( l.startPt() ) && contains( l.stopPt() ); } bool Line3d::isSkew(const Line3d& l2) const { //assert(intersects(l2) >= 0); double d = dotProduct(p0 - l2.startPt(), V.cross(l2.direction())); return (d != 0); } bool Line3d::isParallel(const Line3d& l2) const { return V.cross(l2.direction()).isZero(); } int Line3d::intersects(const Line3d &l) const { // return the dimension of intersection // return -1 if not intersect if( !coplanar(p0, p1, l.startPt(), l.stopPt()) ) return -1; else if( isCoincident( l ) ) return 1; else if( isParallel( l ) ) return -1; else // intersection is point return 0; } GeomObj* Line3d::intersection(const Line3d &l) const { if( intersects( l ) == -1 ) return NULL; if( isCoincident( l ) ) return new Line3d(*this); Vector u = l.direction().cross(V); Vector w = l.direction().cross( l.startPt() - p0 ); double lambda = dotProduct(w,u) / dotProduct(u,u); Vector t = lambda * V; return new Point3d(p0 + t); } std::ostream &operator<<(std::ostream &o, const Line3d &l) { return o << "Line3d[" << l.p0 << "," << l.p1 << ";" << l.V << "]"; } std::istream& operator>>(std::istream& in, Line3d& l) { Point3d pStart, pEnd; std::cout << "\nInput start point(-,-,-):"; in >> pStart; std::cout << "Input end point(-,-,-):"; in >> pEnd; l = Line3d(pStart, pEnd); return in; } core++-1.7/ext/geom3d/plane3d.cpp0100644000175000001440000001573107725667030016024 0ustar joachimusers/***************************************************************** * File: plane3d.cc * Synopsis: * Basic 3-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: plane3d.cpp,v 1.6 2003/09/04 16:53:44 exact Exp $ *****************************************************************/ #include #include /************************************************************ * * constructors ************************************************************/ //copy constructor Plane3d::Plane3d(const Plane3d & pl) : a(pl.A()), b(pl.B()), c(pl.C()), d(pl.displacement()), n( pl.normal() ){ } // plane with direction v passes through point p Plane3d::Plane3d(const Point3d & p, const Vector &v) : a(v[0]), b(v[1]), c(v[2]), d(0.0), n(v) { d = - dotProduct(v, p.toVector()); } //plane passes through points p1, p2, p3 Plane3d::Plane3d(const Point3d &p1, const Point3d &p2, const Point3d &p3) { Vector V31 = p1 - p3; Vector V32 = p2 - p3; n = V31.cross( V32 ); a = n[0]; b=n[1]; c=n[2]; d = - dotProduct(n, p3.toVector()); } //plane passes through point p and line l Plane3d::Plane3d(const Point3d &p, const Line3d &l) { Plane3d(p, l.startPt(), l.stopPt() ); } //plane passes through point p and segment s Plane3d::Plane3d(const Point3d &p, const Segment3d &s) { Point3d p1 = s.startPt(); Point3d p2 = s.stopPt(); Plane3d(p, p1, p2 ); } // plane determined by vector and displacement Plane3d::Plane3d(const Vector& v1, double d1) : a(v1[0]), b(v1[1]), c(v1[2]), d(d1), n(v1) { } // plane determined by equation Plane3d::Plane3d(double a1, double b1, double c1, double d1) : a(a1), b(b1), c(c1), d(d1), n(a1, b1, c1) { } /************************************************************ * * member functions ************************************************************/ double* Plane3d::coeffients() const { double* params = new double[4]; params[0] = a; params[0] = b; params[0] = c; params[0] = d; return params; } // test coincidence bool Plane3d::isCoincident(const Plane3d& pl) const { Vector Vcross = n.cross( pl.normal() ); if( ( !Vcross.isZero() ) && (d == pl.displacement()) ) return true; else return false; } bool Plane3d::isParallel(const Plane3d& pl) const { return n.cross( pl.normal() ).isZero(); } bool Plane3d::isParallel(const Line3d& l) const { return dotProduct( n, l.direction() ) == 0; } bool Plane3d::contains( const Point3d& p ) const { return apply(p) == 0 ; } bool Plane3d::contains( const Line3d& l ) const { return ( contains( l.startPt() ) && contains( l.stopPt() ) ); } bool Plane3d::contains( const Segment3d& s ) const { return ( contains( s.startPt() ) && contains( s.stopPt() ) ); } Point3d Plane3d::projection(const Point3d& p) const { double lambda = apply(p) / dotProduct(n, n); return (p - n * lambda ); } Line3d Plane3d::projection(const Line3d& l) const { return Line3d( projection( l.startPt() ), projection( l.stopPt() ) ); } Segment3d Plane3d::projection(const Segment3d& s) const { return Segment3d( projection( s.startPt() ), projection( s.stopPt() ) ); } //distance // d = A*px + B*px + c*pz + d/ double Plane3d::distance( const Point3d& p ) const { double dist = apply(p); return fabs(dist)/n.norm(); } double Plane3d::distance( const Line3d& l ) const { if( intersects( l ) ) return 0; else //line l must be paralell with this plane return distance( l.startPt() ); } double Plane3d::distance( const Segment3d& s ) const { if( intersects( s ) ) return 0.0; else // minimum distance must be at end points return core_min( distance( s.startPt() ), distance( s.stopPt() ) ); } // test if the line is paralell to the plane // return dim of intersection int Plane3d::intersects( const Line3d& l ) const { if( contains( l ) ) return 1; else return (dotProduct(n, l.direction()) != 0.0)? 0 : -1; } // test if two end points lie on different side of the plane // return dim of intersection int Plane3d::intersects( const Segment3d& s ) const { if( contains(s) ) return 1; double dist1 = apply( s.startPt() ); double dist2 = apply( s.stopPt() ); if( dist1 * dist2 > 0 ) return -1; else return 0; } int Plane3d::intersects( const Plane3d& pl ) const { if( isCoincident( pl ) ) return 2; Vector Vcross = n.cross( pl.normal() ); if( !Vcross.isZero() ) return 1; else return -1; } // need improvement GeomObj* Plane3d::intersection( const Line3d& l ) const { if( intersects( l ) == -1 ) return NULL; Point3d interPt = l.startPt() + (l.direction() * ( - apply( l.startPt() ) / (dotProduct(n, l.direction())) ) ); return new Point3d(interPt); } // need improvement GeomObj* Plane3d::intersection( const Segment3d& s ) const { if( contains( s ) ) return new Segment3d(s); GeomObj* obj = intersection( s.toLine() ); if( obj == NULL ) return NULL; else { Point3d* p = (Point3d *)obj; if( s.contains( *p ) ) return obj; else return NULL; } } // we know the direction of intersection line is cross product of two normals // we just need to get an intersection point GeomObj* Plane3d::intersection( const Plane3d& pl ) const { if( isParallel( pl ) ) return NULL; else { // intersection must be a line Vector l_direction = n.cross( pl.normal() ); //direction of intersection line Point3d p1; // projection of the origin on this plane Point3d p2; // projection of the origin on plane pl if( d == 0 ) p1 = ORIGIN_3D; else { double K = - dotProduct(n, n)/d; p1 = Point3d(a/K, b/K, c/K); } // compute projection of origin on pl if( pl.displacement() == 0 ) p2 = ORIGIN_3D; else { double K = - dotProduct(pl.normal(), pl.normal())/pl.displacement(); p2 = Point3d(pl.A()/K, pl.B()/K, pl.C()/K); } if( p1 == p2 ) return new Line3d(p1, l_direction); Line3d line_on_this( p1, projection( p2 )); Point3d* pInterPt = (Point3d *)pl.intersection( line_on_this ); return new Line3d(*pInterPt, l_direction); } } std::ostream& operator<<(std::ostream& o, const Plane3d& pl) { return o << "Plane3d [normal=" << pl.n << ", displacement=" << pl.d << "]"; } std::istream& operator>>(std::istream& in, Plane3d& pl) { Point3d p; std::cout << "\nInput normal of plane(-,-,-):"; in >> p; // point is in the same format as vector in 3d double disp; std::cout << "Input displacement of plane:"; in >> disp; pl = Plane3d( p.toVector(), disp ); return in; } core++-1.7/ext/geom3d/point3d.cpp0100644000175000001440000001077707725667031016064 0ustar joachimusers /***************************************************************** * File: point3d.cc * Synopsis: * Basic 3-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: point3d.cpp,v 1.4 2003/09/04 16:53:45 exact Exp $ *****************************************************************/ #include // midPt(p, q) returns (p+q)/2: Point3d midPt3d ( Point3d& a, Point3d& b) { return Point3d((a.X()+b.X())/2,(a.Y()+b.Y())/2, (a.Z()+b.Z())/2); } /* returns true if points a, b, c and d are coplanar, i.e., * orientation(a, b, c, d) = 0, and false otherwise. */ bool coplanar(const Point3d& a, const Point3d& b, const Point3d& c, const Point3d& d) { return ( orientation3d(a, b, c, d) == 0 ); } /************************************************************ * CONSTRUCTORS ************************************************************/ Point3d::Point3d() : x(0), y(0), z(0) { } Point3d::Point3d(double _x, double _y, double _z) : x(_x), y(_y), z(_z) { } Point3d::Point3d(const Point3d& p) : x(p.x), y(p.y), z(p.z) { } Point3d::Point3d(const Vector& v) : x(v[0]), y(v[1]), z(v[2]) { if( v.dimension() > 3 ) throw Vector::RangeException(); } /************************************************************ * METHODS ************************************************************/ Point3d& Point3d::operator=(const Point3d& p) { x = p.x; y = p.y; z = p.z; return *this; } Vector Point3d::operator-(const Point3d &p) const { return Vector(x - p.x, y - p.y, z - p.z); } Point3d Point3d::operator+(const Vector& v) const { return Point3d(x + v[0], y + v[1], z + v[2]); } Point3d Point3d::operator-(const Vector& v) const { return Point3d(x - v[0], y - v[1], z - v[2]); } Point3d Point3d::operator*(const double& a) const { return Point3d(x*a, y*a, z*a); } double Point3d::distance(const Point3d& p) const { double dx = x - p.x; double dy = y - p.y; double dz = z - p.z; return sqrt(dx*dx + dy*dy + dz*dz); } bool Point3d::operator==(const Point3d& p) const { return (x == p.x) && (y == p.y) && (z == p.z); } // compute signed volume of a tetrahedron double signed_volume(const Point3d& a, const Point3d& b, const Point3d& c, const Point3d& d) { double a11 = a.x-d.x; double a12 = a.y-d.y; double a13 = a.z-d.z; double a21 = b.x-d.x; double a22 = b.y-d.y; double a23 = b.z-d.z; double a31 = c.x-d.x; double a32 = c.y-d.y; double a33 = c.z-d.z; double s = a11*(a22*a33-a23*a32) - a12*(a21*a33-a23*a31) + a13*(a21*a32-a22*a31); return s; } /* orientation3d(a, b, c, d) * computes the orientation of points a, b, c, d as the sign * of the determinant * | ax ay az 1 | * | bx by bz 1 | * | cx cy cz 1 | * | dx dy dz 1 | * i.e., it returns +1 if d lies in the opposite side w.r.t. the * counter-clockwise side of plane formed by a, b, c */ int orientation3d(const Point3d& a, const Point3d& b, const Point3d& c, const Point3d& d) { double s = signed_volume(a, b, c, d); if( s == 0 ) return 0; else return (s>0)? 1 : -1; } /* area(a, b, c) returns 1/2 times the determinant of orientation(a,b,c) * above. This is the signed area of the triangle determined by a, b, c, * positive if orientation(a,b,c) > 0, and negative otherwise. */ double volume(const Point3d& a, const Point3d& b, const Point3d& c, const Point3d& d) { double signed_vol = signed_volume(a, b, c, d); return (signed_vol > 0)? signed_vol : -signed_vol; } std::ostream &operator<<(std::ostream &o, const Point3d& p) { return o << "Point(" << p.x << "," << p.y << "," << p.z << ")"; } std::istream& operator>>(std::istream& in, Point3d& p) { double x, y, z; char c; do in.get(c); while (in && isspace(c)); if (!in) return in; if (c != '(') in.putback(c); in >> x; do in.get(c); while (isspace(c)); if (c != ',') in.putback(c); in >> y; do in.get(c); while (isspace(c)); if (c != ',') in.putback(c); in >> z; do in.get(c); while (c == ' '); if (c != ')') in.putback(c); p = Point3d(x, y, z); return in; } core++-1.7/ext/geom3d/polygon3d.cpp0100644000175000001440000001466707725667031016424 0ustar joachimusers/***************************************************************** * File: polygon3d.cc * Synopsis: * Basic 3-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: polygon3d.cpp,v 1.5 2003/09/04 16:53:45 exact Exp $ *****************************************************************/ #include /************************************************************ * constructors ************************************************************/ Polygon3d::Polygon3d() { headN = NULL; size = 0; } // copy constructor Polygon3d::Polygon3d(const Polygon3d& plg) { copy( plg ); size = plg.getSize(); } Polygon3d::~Polygon3d() { freeMemory(); } /************************************************************ * member functions ************************************************************/ void Polygon3d::freeMemory() { if( headN != NULL ) // free memory for( int i=0; inext; delete pNode; } headN = NULL; size = 0; } // copy point list from other polygon // make sure old list has been deleted before calling this void Polygon3d::copy( const Polygon3d& plg) { headN = NULL; size = 0; for( int i=0; inext ) if( p == *(pNode->p) ) return true; return false; } Point3d* Polygon3d::getPoint( int index ) const { assert( index < size ); PointNode* pNode = headN; //locate for( int i=0; inext ); return pNode->p; } void Polygon3d::removePoint( int index ) { assert( index < size ); PointNode* pNode = headN; if( index == 0 ) headN = headN->next; //locate for( int i=0; inext ); pNode->prev->next = pNode->next; pNode->next->prev = pNode->prev; delete pNode; size--; if( size==0 ) headN = NULL; } bool Polygon3d::removePoint( const Point3d& p ){ PointNode* pNode = headN; if( *(pNode->p) == p ) // move list head headN = pNode->next; for( int i=0; ip) == p ) { pNode->prev->next = pNode->next; pNode->next->prev = pNode->prev; delete pNode; size--; if( size == 0 ) headN = NULL; return true; } pNode = pNode->next; } return false; } void Polygon3d::removeAllPoints() { freeMemory(); } // add a new point void Polygon3d::addPoint( const Point3d& p ) { if( searchPoint(p) ) return; // do not add duplicated point if( headN == NULL ) { headN = new PointNode(p); headN->next = headN; headN->prev = headN; } else { //insert in a double linked list PointNode *pNode = new PointNode(p); headN->prev->next = pNode; pNode->next = headN; pNode->prev = headN->prev; headN->prev = pNode; } size++; } // get previous point of given point Point3d* Polygon3d::nextPoint( const Point3d& pt ) const { PointNode* pNode = headN; for( int i=0; inext ) if( pt == *(pNode->p) ) return pNode->next->p; // p is not found return NULL; } // get previous point of given point Point3d* Polygon3d::prevPoint( const Point3d& pt ) const { PointNode* pNode = headN; for( int i=0; inext ) if( pt == *(pNode->p) ) return pNode->prev->p; // p is not found return NULL; } Polygon3d& Polygon3d::operator=( const Polygon3d& plg) { removeAllPoints(); copy( plg ); size = plg.getSize(); return *this; } // test if two polygon is identical // two polygons are indentical iff they have the same set of points // in the same order bool Polygon3d::operator ==(Polygon3d& plg) const { if( size != plg.getSize() ) return false; assert( size >= 2); // locate the first point of plg Iterator I = plg.getIterator(); Point3d * pPoint = I.getPoint(); PointNode * pNode = headN; int i; for( i=0; inext ) if( *(pNode->p) == *pPoint ) break; if( i == size ) // not found the first point return false; // we should check both directions Iterator J = I; PointNode * pTempN = pNode; for( i=0; inext ) if( *(J.getPoint()) != *(pTempN->p) ) break; if( i==size ) return true; for( i=0, J=I, pTempN = pNode; inext ) if( *(J.getPoint()) != *(pTempN->p) ) break; if( i==size ) return true; return false; } bool Polygon3d::verify() { if( size <= 3 ) { std::cout<< "\nWARNING:Polygon has less than three points"; return false; } // 1. verify coplanarity // get container plane first Plane3d pl = Plane3d( *getPoint(0), *getPoint(1), *getPoint(2) ); PointNode* pNode = headN; for( int i=0; ip) ) ) return false; pNode = pNode->next; } // 2. verify edges // to be compeled return true; } // test coplanarity bool Polygon3d::isCoplanar( const Point3d& p ) const { assert( size>= 3 ); Plane3d pl = Plane3d( *getPoint(0), *getPoint(1), *getPoint(2) ); return pl.contains( p ); } // test coplanarity bool Polygon3d::isCoplanar( const Plane3d& pl ) const { PointNode* pNode = headN; for( int i=0; ip) ) ) return false; pNode = pNode->next; } return true; } // test if p is on amy edge bool Polygon3d::isOnEdge( const Point3d& p ) const { PointNode* pNode = headN; for( int i=0; ip), *(pNode->next->p) ); if( s.contains(p) ) return true; pNode = pNode->next; } return false; } /************************************************************ * I/O ************************************************************/ std::ostream &operator<<(std::ostream &o, const Polygon3d &plg) { o << "Polygon3d: size=" << plg.getSize() << std::endl; for( int i=0; i * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: segment3d.cpp,v 1.5 2003/09/04 16:53:45 exact Exp $ *****************************************************************/ #include #include /************************************************************ * * constructors ************************************************************/ //ray segment Segment3d::Segment3d(const Point3d &p, const Vector &v) : p0(p), p1(p + v) { directed = false; open = false; } Segment3d::Segment3d(const Point3d &_p0, const Point3d &_p1) : p0(_p0), p1(_p1) { directed = false; open = false; } Segment3d::Segment3d(const Segment3d &s) : p0(s.startPt()), p1(s.stopPt()) { directed = false; open = false; } Segment3d::Segment3d() : p0(0.0, 0.0, 0.0), p1(0.0, 0.0, 0.0) { directed = false; open = false; } // line passes through the origin with direction 0. /************************************************************ * * Member functions ************************************************************/ // test if two segments are coincident bool Segment3d::isCoincident( const Segment3d& s) const { if( directed ) return (p0==s.startPt() && p1==s.stopPt()); else if( (p0==s.startPt() && p1==s.stopPt()) || (p1==s.startPt() && p0==s.stopPt()) ) return true; else return false; } bool Segment3d::isCoplanar( const Line3d& l) const { return coplanar(p0, p1, l.startPt(), l.stopPt() ); } bool Segment3d::isCoplanar( const Segment3d& s) const { return coplanar(p0, p1, s.startPt(), s.stopPt() ); } // reverses the direction of the segment void Segment3d::reverse() { Point3d p = p0; p0 = p1; p1 = p0; } // returns the Euclidean distance between this segment and point q // problem exists when segment is open double Segment3d::distance( const Point3d& p ) const{ double s1 = dotProduct(p1-p0, p-p0); double s2 = dotProduct(p1-p0, p-p1); if( s1*s2 <= 0) return toLine().distance( p ); else return (s1>0)? p1.distance( p ) : p0.distance( p ); } // returns the point on segment closest to q /* NOTE: * problem exist when segment is open! * need to be solved later */ Point3d Segment3d::nearPt( const Point3d& p ) const { double s1 = dotProduct(p1-p0, p-p0); double s2 = dotProduct(p1-p0, p-p1); if( s1*s2 <= 0) return toLine().projection( p ); else return (s1>0)? p1 : p0; } bool Segment3d::contains( const Point3d& p ) const { if( !toLine().contains( p ) ) return false; // must be collinear here double sign = dotProduct(p-p0, p-p1); if( sign < 0 ) return true; else if( sign==0 && !open ) return true; else return false; } //decides whether this segment intersects t int Segment3d::intersects( const Line3d& l) const { int res = toLine().intersects(l); if( res == 0 ) { // lines intersect // test segment Vector normal = l.direction().cross(p1 - p0); Point3d Pn = l.startPt() + normal; int s1 = orientation3d( l.startPt(), l.stopPt(), Pn, p0 ); int s2 = orientation3d( l.startPt(), l.stopPt(), Pn, p1 ); if(s1==0 && s2==0) //is on return 1; else if( s1*s2>0 ) return -1; else return 0; }else // not intersect or coincident return res; } //return dim of intersection int Segment3d::intersects( const Segment3d& s) const { int res = intersects( s.toLine()); if( res == -1 ) return -1; else if( res == 0 ) if( s.intersects( toLine() ) == 0 ) return 0; //double check else return -1; else { // must be collinear double s1 = dotProduct( s.startPt()-p0, s.startPt()-p1 ); // o<-----*-->o double s2 = dotProduct( s.stopPt()-p0, s.stopPt()-p1 ); // o<---------o<--* double s3 = dotProduct( p0-s.startPt(), p0-s.stopPt() ); // *<-----o-->* double s4 = dotProduct( p1-s.startPt(), p1-s.stopPt() ); // *<---------*<--o if( s1<0 || s2<0 || s3<0 || s4<0 ) // -o---*--o----*- OR: -o---*-----*-o- //one end point is contained return 1; // then must be a segment intersection else if( s1==0 && s2==0 ) // -8===========8- return 1; // coincident else if( s1>0 && s2>0 ) return -1; // -o--------o-*----*- or *----*--o--------o- else // one end point is coincident -o--------8-------o- if( open || s.isOpen() ) return -1; else return 0; } } // return intersection point if this segment and l intersect at a single point // the intersection point is returned GeomObj* Segment3d::intersection( const Line3d& l ) const { if( !isCoplanar( l ) ) return NULL; if( l.isCoincident( toLine() ) ) return new Segment3d(*this); Point3d* p = (Point3d*)l.intersection( toLine() ); if( p!=NULL && contains( *p ) ) return p; else return NULL; } // return intersection -- segment or point GeomObj* Segment3d::intersection( const Segment3d& s ) const { if( !isCoplanar(s) ) return NULL; if( toLine().isCoincident( s.toLine() ) ) { // colinear // first intersect the segment s with ray starting from p0 Segment3d interSegment; double s1 = dotProduct(s.startPt() - p0, p1-p0 ); double s2 = dotProduct(s.stopPt() - p0, p1-p0 ); if( s1<0 && s2<0 ) return NULL; else if(s1>=0 && s2>=0) // copy s interSegment = Segment3d( s ); else if (s1>=0) interSegment = Segment3d(p0, s.startPt()); else interSegment = Segment3d(p0, s.stopPt()); // then intersect the resulting segment with ray starting from p1 double s3 = dotProduct(interSegment.startPt() - p1, p1-p0 ); double s4 = dotProduct(interSegment.stopPt() - p1, p1-p0 ); if( s3>0 && s4>0 ) return NULL; else if(s3<=0 && s4>0) interSegment = Segment3d(interSegment.startPt(), p1); else if(s4<=0 && s3>0) interSegment = Segment3d(interSegment.stopPt() , p1); //else -- s3<=0 && s4<=0 //do nothing cause intersection remains unchanged if( interSegment.isTrivial() ) //intersection is point return new Point3d( interSegment.startPt() ); else return new Segment3d( interSegment ); } else{ // use line-line intersection Point3d* p = (Point3d *)toLine().intersection( s.toLine() ); if( p!=NULL && contains(*p) && s.contains(*p) ) // check return p; else return NULL; } } // return bisector plane Plane3d Segment3d::bisect_plane() const { Point3d midPt = p0+(p1-p0)*0.5; Vector normal = p1-p0; return Plane3d( midPt, normal ); } std::ostream& operator<<(std::ostream& out, const Segment3d & s) { return out << "Segment3d[" << s.p0 << "," << s.p1 << "; directed=" << s.directed << "; open=" << s.open << "]"; } std::istream& operator>>(std::istream& in, Segment3d& l) { Point3d pStart, pEnd; std::cout << "\nInput segment start point(-,-,-):"; in >> pStart; std::cout << "Input segment end point(-,-,-):"; in >> pEnd; l = Segment3d(pStart, pEnd); return in; } core++-1.7/ext/geom3d/triangle3d.cpp0100644000175000001440000003223707725667031016533 0ustar joachimusers/***************************************************************** * File: triangle3d.cc * Synopsis: * Basic 3-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: triangle3d.cpp,v 1.5 2003/09/04 16:53:45 exact Exp $ *****************************************************************/ #include /************************************************************ * constructors ************************************************************/ Triangle3d::Triangle3d(const Point3d& v1, const Point3d& v2, const Point3d& v3) :p0(v1), p1(v2), p2(v3) {} // given three vertices Triangle3d::Triangle3d( const Triangle3d& T ) :p0(T.V1()), p1(T.V2()), p2(T.V3()) {} // given a triangle /************************************************************ * predicates ************************************************************/ bool Triangle3d::contains( const Point3d& p ) const { // take the end of normal vector as viewpoint Point3d viewpoint( normal() ); int s1, s2, s3; s1 = orientation3d( viewpoint, p, p0, p1); s2 = orientation3d( viewpoint, p, p1, p2); s3 = orientation3d( viewpoint, p, p2, p0); if( s1==s2==s3 ) //p is inside return true; else if( s1*s2*s3==0 ) //p is on edge return true; else return false; } bool Triangle3d::isOnEdge( const Point3d& p ) const { return Segment3d(p0,p1).contains(p) || Segment3d(p1,p2).contains(p) || Segment3d(p0,p2).contains(p); } bool Triangle3d::inside( const Point3d& p ) const { assert( isCoplanar( p ) ); // use normal vector as viewpoint Point3d viewpoint( normal() ); int s1, s2, s3; s1 = orientation3d( viewpoint, p, p0, p1); s2 = orientation3d( viewpoint, p, p1, p2); s3 = orientation3d( viewpoint, p, p2, p0); if( s1==s2==s3 ) //is inside return true; else return false; } Polygon3d* Triangle3d::toPolygon() const { Polygon3d* plg = new Polygon3d(); plg->addPoint( p0 ); plg->addPoint( p1 ); plg->addPoint( p2 ); return plg; } /************************************************************ * Intersections ************************************************************/ bool Triangle3d::do_intersect( const Segment3d& s ) const { if( isCoplanar(s) ) { if( contains( s.startPt() ) || contains( s.stopPt() )) return true; // segment might lies inside the triangle if( s.intersects( Segment3d(p0,p1) ) ) return true; //stop if( s.intersects( Segment3d(p1,p2) ) ) return true; //stop if( s.intersects( Segment3d(p0,p2) ) ) return true; //stop return false; } else { if( toPlane().intersects( s )==-1 ) return false; //make sure intersects inside this triangle Point3d pStart = s.startPt(); Point3d pStop = s.stopPt(); int s1 = orientation3d( pStart, pStop, p0, p1); int s2 = orientation3d( pStart, pStop, p1, p2); int s3 = orientation3d( pStart, pStop, p2, p0); if( s1*s2*s3 == 0 ) return true; if( s1==s2==s3 ) //intersects inside return true; else return false; } } bool Triangle3d::do_intersect( const Line3d& l ) const { if( isCoplanar(l) ) { if( Segment3d(p0,p1).intersects(l) ) return true; //stop if( Segment3d(p1,p2).intersects(l) ) return true; //stop if( Segment3d(p0,p2).intersects(l) ) return true; //stop return false; } else { Point3d pStart = l.startPt(); Point3d pStop = l.stopPt(); int s1 = orientation3d( pStart, pStop, p0, p1); int s2 = orientation3d( pStart, pStop, p1, p2); int s3 = orientation3d( pStart, pStop, p2, p0); if( s1*s2*s3 == 0 ) return true; if( s1==s2==s3 ) //intersects inside return true; else return false; } } bool Triangle3d::do_intersect( const Plane3d& pl ) const { // compute the signed distances for vertices double dist1 = pl.apply( p0 ); double dist2 = pl.apply( p1 ); double dist3 = pl.apply( p2 ); if( dist1*dist2 <= 0 || dist2*dist3 <= 0 || dist1*dist3 <= 0 ) return true; // different signs else return false; } bool Triangle3d::do_intersect( const Triangle3d& T ) const { // at least one edge must intersect the other triangle if( T.intersects( Segment3d(p0,p1) ) ) return true; if( T.intersects( Segment3d(p1,p2) ) ) return true; if( T.intersects( Segment3d(p0,p2) ) ) return true; return false; } int Triangle3d::intersects( const Segment3d& s ) const { GeomObj *interObj = intersection(s); return (interObj==NULL)? -1 : interObj->dim(); } int Triangle3d::intersects( const Line3d& l ) const { GeomObj *interObj = intersection(l); return (interObj==NULL)? -1 : interObj->dim(); } int Triangle3d::intersects( const Plane3d& pl ) const { GeomObj *interObj = intersection(pl); return (interObj==NULL)? -1 : interObj->dim(); } int Triangle3d::intersects( const Triangle3d& T ) const { GeomObj *interObj = intersection(T); return (interObj==NULL)? -1 : interObj->dim(); } GeomObj* Triangle3d::intersection( const Segment3d& s ) const { if( isCoplanar( s ) ) return coplanar_intersection(s); else { GeomObj * interObj = toPlane().intersection(s); if (interObj==NULL) return NULL; else return contains( *(Point3d *)interObj )? interObj : NULL; } } GeomObj* Triangle3d::intersection( const Line3d& l ) const { if( isCoplanar( l ) ) return coplanar_intersection(l); else { GeomObj * interObj = toPlane().intersection(l); if (interObj==NULL) return NULL; else return contains( *(Point3d *)interObj )? interObj : NULL; } } // return intersection with a plane GeomObj* Triangle3d::intersection( const Plane3d& pl ) const { //being contained in plane if( isCoplanar( pl ) ) return new Triangle3d(*this); // must not be coplanar GeomObj *interObjs[3] = {NULL, NULL, NULL}; interObjs[0] = pl.intersection( Segment3d(p0, p1) ); if( interObjs[0]!=NULL && interObjs[0]->dim() == 1 ) // segment return interObjs[0]; interObjs[1] = pl.intersection( Segment3d(p1, p2) ); if( interObjs[1]!=NULL && interObjs[1]->dim() == 1 ) // segment return interObjs[1]; interObjs[2] = pl.intersection( Segment3d(p0, p2) ); if( interObjs[2]!=NULL && interObjs[2]->dim() == 1 ) // segment return interObjs[2]; if( interObjs[0]==NULL && interObjs[1]==NULL && interObjs[2]==NULL ) return NULL; Point3d *firstPt = (Point3d *) (( interObjs[0]!=NULL )? interObjs[0] : interObjs[1]); Point3d *secondPt = (Point3d *) (( interObjs[2]!=NULL )? interObjs[2] : interObjs[1]); assert( firstPt!=NULL && secondPt!=NULL ); // special care when we get three intersection points // there must be two duplicates if( interObjs[0]!=NULL && interObjs[1]!=NULL && interObjs[2]!=NULL ) if( *firstPt==*secondPt ) secondPt = (Point3d *) interObjs[1]; if( *firstPt == *secondPt ) { // a point return firstPt; delete secondPt; } else { // a segment return new Segment3d( *firstPt, *secondPt ); delete firstPt; delete secondPt; } } GeomObj* Triangle3d::intersection( const Triangle3d& T ) const { Plane3d PL1 = toPlane(); Plane3d PL2 = T.toPlane(); GeomObj * T1_in_PL2 = intersection( PL2 ); GeomObj * T2_in_PL1 = T.intersection( PL1 ); if( T1_in_PL2 == NULL || T2_in_PL1 == NULL ) return NULL; switch( T1_in_PL2->dim() ) { case 2: //triangle return coplanar_intersection(T); case 1: { // segment Segment3d s1 = *(Segment3d *)T1_in_PL2; if( T2_in_PL1->dim() == 0 ) return s1.contains( *(Point3d *)T2_in_PL1 )? T2_in_PL1 : NULL; else if( T2_in_PL1->dim() == 1 ) return s1.intersection( *(Segment3d *)T2_in_PL1 ); else { std::cerr << "\nShould not reach here"; return NULL; }} case 0: //point return T.contains( *(Point3d *)T1_in_PL2 )? T1_in_PL2 : NULL; default: std::cerr << "\nShould not reach here"; return NULL; } } // coplanar segment intersection GeomObj* Triangle3d::coplanar_intersection( const Segment3d& s ) const { Polygon3d plg1; plg1.addPoint( s.startPt() ); plg1.addPoint( s.stopPt() ); Polygon3d plg2 = *in_half_plane(p0, p1, p2, plg1); plg1 = *in_half_plane(p1, p2, p0, plg2); plg2 = *in_half_plane(p2, p0, p1, plg1); //now plg2 contains the intersection object switch( plg2.getSize() ) { case 0: return NULL; case 1: return plg2[0]; // a point case 2: return new Segment3d( *plg2[0], *plg2[1] ); default: std::cout << "Internal Error: intersects with " << s << std::endl; return NULL; } } // coplanar line intersection // maybe there is a cleaner way to do this GeomObj* Triangle3d::coplanar_intersection( const Line3d& l ) const { Point3d* interPts[3] = {NULL, NULL, NULL}; int count=0; GeomObj * interObj; interObj=Segment3d(p0, p1).intersection(l); if( interObj != NULL && interObj->dim() == 0 ) interPts[count++] = (Point3d *)interObj; interObj=Segment3d(p1, p2).intersection(l); if( interObj != NULL && interObj->dim() == 0 ) interPts[count++] = (Point3d *)interObj; interObj=Segment3d(p2, p0).intersection(l); if( interObj != NULL && interObj->dim() == 0 ) interPts[count++] = (Point3d *)interObj; switch( count ) { case 0: return NULL; case 1: return interPts[0]; case 2: if( *interPts[0] == *interPts[1] ) return interPts[0]; // a point else return new Segment3d( *interPts[0], *interPts[1] ); case 3: // there must be two points that are the same if( *interPts[0] == *interPts[1] ) return new Segment3d(*interPts[0], *interPts[2] ); else return new Segment3d(*interPts[0], *interPts[1] ); default: return NULL; } } // coplanar triangle intersection GeomObj* Triangle3d::coplanar_intersection( const Triangle3d& T ) const { Polygon3d plg1; plg1.addPoint( T.V1() ); plg1.addPoint( T.V2() ); plg1.addPoint( T.V3() ); Polygon3d plg2 = *in_half_plane(p0, p1, p2, plg1); plg1 = *in_half_plane(p1, p2, p0, plg2); plg2 = *in_half_plane(p2, p0, p1, plg1); //now plg2 contains the intersection object switch( plg2.getSize() ) { case 0: return NULL; case 1: return new Point3d(*plg2[0]); // a point case 2: return new Segment3d( *plg2[0], *plg2[1] ); default: return new Polygon3d(plg2); // a polygon } } Polygon3d* Triangle3d::in_half_plane( const Point3d& pa, \ const Point3d& pb, \ const Point3d& pSide, \ Polygon3d& plg ) const { Polygon3d::Iterator I = plg.getIterator(); Polygon3d* outPlg = new Polygon3d(); for( int i=0; iaddPoint( *pPoint ); if( plg.getSize() == 1 ) return outPlg; // stop here if no other points if( s1 != 0 ) { // not collinear Point3d *nextPoint = plg.nextPoint( *pPoint ); int s2 = coplanar_orientation(pa, pb, pSide, *nextPoint ); if( s2*s1 < 0 ) { // different side Line3d l(pa, pb); Point3d *interPt = (Point3d *)Segment3d(*pPoint, *nextPoint).intersection(l); if( interPt==NULL ) std::cerr << "\nInternal Error: coplanar_intersection"; outPlg->addPoint( *interPt ); } } }//for loop return outPlg; } // test orientation of p against line formed by pa and pb // return 0 if p is collinear with pa and pb // return -1 if p is on opposite side of point ps // return 1 if p is on the same side of point ps int Triangle3d::coplanar_orientation( const Point3d& pa, const Point3d& pb, const Point3d& ps, const Point3d& p ) const { if( Line3d(pa, pb).contains( p ) ) return 0; // Vector normal = (pb-pa).cross(ps-pa); int s1 = orientation3d(pa, pb, ps, normal); // s1 = 1 or -1 int s2 = orientation3d(pa, pb, p , normal); // s2 = 1 or -1 return s1*s2; } /*************************************************************** * I/O ***************************************************************/ std::ostream &operator<<(std::ostream &o, const Triangle3d& T) { return o << "Triangle3d:\n" << "\t" << T.p0 << std::endl << "\t" << T.p1 << std::endl << "\t" << T.p2; } std::istream& operator>>(std::istream& in, Triangle3d& T) { Point3d pv1, pv2, pv3; std::cout << "\nInput first point(-,-,-):"; in >> pv1; std::cout << "\nInput second point(-,-,-):"; in >> pv2; std::cout << "\nInput third point(-,-,-):"; in >> pv3; T = Triangle3d(pv1, pv2, pv3); return in; } core++-1.7/ext/geom3d/test/0040755000175000001440000000000010147210064014724 5ustar joachimuserscore++-1.7/ext/geom3d/test/Makefile0100644000175000001440000000257607662550437016416 0ustar joachimusers# Makefile for test # # Core Library, $Id: Makefile,v 1.3 2003/05/21 01:06:39 exact Exp $ CORE_PATH=../../.. include $(CORE_PATH)/Make.config CORE_INC=-I$(CORE_PATH)/inc -I$(CORE_PATH)/gmp CORE_LIB=-L$(CORE_PATH)/lib -L$(CORE_PATH)/gmp/.libs -lcore$(VAR) -lgmp -lm #================================================= # Define target files (put all your files here) #================================================= TARGETS= test_level3 test2_level3 all: $(TARGETS) test: $(TARGETS) ./test_level3 ./test2_level3 %_level1: %_level1.o ${CXX} $(CXXFLAGS) $? -lcorex_level1 $(CORE_LIB) -o $@ %_level3: %_level3.o ${CXX} $(CXXFLAGS) $? -lcorex_level3 $(CORE_LIB) -o $@ #================================================= # Rules for Level 1 and Level 3 #================================================= %_level1.o: %.cpp ${CXX} -c -DCORE_LEVEL=1 $(CXXFLAGS) $(CORE_INC) $< -o $@ %_level3.o: %.cpp ${CXX} -c -DCORE_LEVEL=3 $(CXXFLAGS) $(CORE_INC) $< -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/ext/geom3d/test/README0100644000175000001440000000302107437361200015604 0ustar joachimusers This file explains the tests designed in the test program. The triangle-triangle intersection functionss is extensively tested in this program. Here are some cases that has been tested. ##### TEST 1: Share one vertex ##### T1: 0,1,0 1,2,1 4,4,1 T2: 3,0,0 0,1,0 3,1,2 Intersection: Point3d(0 1 0) ##### TEST 2: non-coplanar intersection symetric test ##### T1: 1,1,-1 1,1,1 4,0,-1 T2: 3,0,0 0,1,0 3,1,2 Intersection: Segment3d (1, 1, 2/3) -- (1.5, 5/6, 2/3) ##### TEST 3: Touch at one vertex ##### T1: 0,0,-1 6,0,-1 4,5,-1 T2: 4,0,-1 5,0,5 3,1,4 Intersection Point3d(4,0,-1) ##### TEST 4: Coplanar share one vertex ###### T1: 4,5,1 2,3,1 5,4,1 T2: 9,6,1 6,7,1 4,5,1 Intersection: Point3d(4,5,1) ##### TEST 5: ###### T1: 1,1,-1 4,1,-1 5,6,-1 T2: 3,1,-1 6,1,-1 4,4,3 Intersection Segment3d (3,1,-1) -- (4,1,-1) ##### TEST 6: Intersect on one vertex(inside another T) ######### T1: 1,1,1 7,1,1 5,6,1 T2: 4,3,1 3,5,4 4,5,6 Intersection: Point3d(4, 3, 1) ##### TEST 7: One vertex is on another edge ####### T1: 1,2,3 7,2,3 5,7,3 T2: 4,2,3 3,6,6 4,2,8 Intersection: Point3d(4, 2, 3) ##### TEST 8: intersect on one edge ##### T1: 1,0,1 6,0,1 5,6,1 T2: 1,0,-1 5,6,3 4,0,5 Intersection: Segment3d (2,0,1)-- (3,3,1) ##### TEST 9: coplanar symmetric test ##### T1: 3,2,2 9,2,2 7,7,2 T2: 6,4,2 5,9,2 9,8,2 T1<>T2 == T2<>T1 ##### TEST 10: ##### T1: 1,0,2 6,0,2 5,6,2 T2: 2,0,2 1,2,5 4,6,2 Intersection: Segment3d (2,0,2) -- (3,3,2) ##### TEST 11: reflective test ##### T1: 1,0,2 6,0,2 5,6,2 T1<>T1 == T1 ##### END OF TEST ##### core++-1.7/ext/geom3d/test/test.cpp0100644000175000001440000003557107662550437016442 0ustar joachimusers/***************************************************************** * File: test.cc * Synopsis: * 3-dimensional geometrytest program * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: test.cpp,v 1.2 2003/05/21 01:06:39 exact Exp $ *****************************************************************/ #include "CORE.h" #include "geometry3d.h" #include int num_of_errors = 0; void polygon3d_test() { cout << "\n\n############# Test Polygon3d ###############\n"; Triangle3d T1, T2; T1 = Triangle3d( Point3d(0,1,0), Point3d(1,2,1), Point3d(4,4,1) ); T2 = Triangle3d( Point3d(3,0,0), Point3d(0,1,0), Point3d(3,1,2) ); GeomObj* pInterObj = T1.intersection( T2 ); Point3d ansPt = Point3d(0,1,0); if( pInterObj == NULL || pInterObj->dim() != 0 || ansPt!= *((Point3d*)pInterObj) ) { cout << "ERROR! --intersection( Triangle3d & ) -- test 1" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Triangle3d & ) -- test 1" << endl; if( T1.do_intersect( T2 ) != true ) { cout << "ERROR! --do_intersect( Triangle3d & ) -- test 1.1" << endl; num_of_errors++; } else cout << "CORRECT! --do_intersect( Triangle3d & ) -- test 1.1" << endl; T1 = Triangle3d( Point3d(1,1,-1), Point3d(1,1,1), Point3d(4,0,-1) ); GeomObj* pInterObj1 = T2.intersection( T1 ); GeomObj* pInterObj2 = T1.intersection( T2 ); if( pInterObj1 == NULL || pInterObj2 == NULL ) { cout << "ERROR! --intersection( Triangle3d & )" << endl; num_of_errors++; } else if( *((Segment3d *)pInterObj1) != *((Segment3d *)pInterObj2) ) { cout << "ERROR! --intersection( Triangle3d & ) -- test 2" << endl; num_of_errors++; } else { //cout << *((Segment3d *)pInterObj1) << endl; cout << "CORRECT! --intersection( Triangle3d & ) -- test 2" << endl; delete pInterObj1; delete pInterObj2; } T1 = Triangle3d( Point3d(0,0,-1), Point3d(6,0,-1), Point3d(4,5,-1) ); T2 = Triangle3d( Point3d(4,0,-1), Point3d(5,0,5), Point3d(3,1,4) ); pInterObj = T1.intersection( T2 ); ansPt = Point3d(4, 0, -1); if( pInterObj == NULL || *(Point3d *)pInterObj != ansPt ) { cout << "ERROR! --intersection( Triangle3d & ) -- test 3" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Triangle3d & ) -- test 3" << endl; T1 = Triangle3d( Point3d(4,5,1), Point3d(2,3,1), Point3d(5,4,1) ); T2 = Triangle3d( Point3d(4,5,1), Point3d(9,6,1), Point3d(6,7,1) ); pInterObj = T1.intersection( T2 ); ansPt = Point3d(4, 5, 1); if( pInterObj == NULL || *(Point3d *)pInterObj != ansPt ) { cout << "ERROR! --intersection( Triangle3d & ) -- test 4" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Triangle3d & ) -- test 4" << endl; T1 = Triangle3d( Point3d(1,1,-1), Point3d(4,1,-1), Point3d(5,6,-1) ); T2 = Triangle3d( Point3d(3,1,-1), Point3d(6,1,-1), Point3d(4,4,3) ); pInterObj = T1.intersection( T2 ); Segment3d ansSeg(Point3d(3, 1, -1), Point3d(4,1,-1) ); if( pInterObj == NULL || *(Segment3d *)pInterObj != ansSeg ) { cout << "ERROR! --intersection( Triangle3d & ) -- test 5" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Triangle3d & ) -- test 5" << endl; if( T1.intersects( T2 ) != true ) { cout << "ERROR! --do_intersect( Triangle3d & ) -- test 5.1" << endl; num_of_errors++; } else cout << "CORRECT! --do_intersect( Triangle3d & ) -- test 5.1" << endl; T1 = Triangle3d( Point3d(1,1,1), Point3d(7,1,1), Point3d(5,6,1) ); T2 = Triangle3d( Point3d(4,3,1), Point3d(3,5,4), Point3d(4,5,6) ); pInterObj = T1.intersection( T2 ); ansPt = Point3d(4, 3, 1); if( pInterObj == NULL || *(Point3d *)pInterObj != ansPt ) { cout << "ERROR! --intersection( Triangle3d & ) -- test 6" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Triangle3d & ) -- test 6" << endl; T1 = Triangle3d( Point3d(1,2,3), Point3d(7,2,3), Point3d(5,7,3) ); T2 = Triangle3d( Point3d(4,2,3), Point3d(3,6,6), Point3d(4,2,8) ); pInterObj = T1.intersection( T2 ); ansPt = Point3d(4, 2, 3); if( pInterObj == NULL || *(Point3d *)pInterObj != ansPt ) { cout << "ERROR! --intersection( Triangle3d & ) -- test 7" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Triangle3d & ) -- test 7" << endl; T1 = Triangle3d( Point3d(1,0,1), Point3d(6,0,1), Point3d(5,6,1) ); T2 = Triangle3d( Point3d(1,0,-1), Point3d(5,6,3), Point3d(4,0,5) ); pInterObj = T1.intersection( T2 ); ansSeg = Segment3d( Point3d(2,0,1), Point3d(3,3,1) ); if( pInterObj == NULL || *(Segment3d *)pInterObj != ansSeg ) { cout << "ERROR! --intersection( Triangle3d & ) -- test 8" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Triangle3d & ) -- test 8" << endl; T1 = Triangle3d( Point3d(3,2,2), Point3d(9,2,2), Point3d(7,7,2) ); T2 = Triangle3d( Point3d(6,4,2), Point3d(5,9,2), Point3d(9,8,2) ); pInterObj1 = T1.intersection( T2 ); pInterObj2 = T2.intersection( T1 ); //cout<<*(Polygon3d *)pInterObj2 << endl; if( pInterObj1 == NULL || pInterObj2 == NULL || *(Polygon3d *)pInterObj1 != *(Polygon3d *)pInterObj2 ) { cout << "ERROR! --intersection( Triangle3d & ) -- test 9" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Triangle3d & ) -- test 9" << endl; T1 = Triangle3d( Point3d(1,0,2), Point3d(6,0,2), Point3d(5,6,2) ); T2 = Triangle3d( Point3d(2,0,2), Point3d(1,2,5), Point3d(4,6,2) ); pInterObj = T1.intersection( T2 ); ansSeg = Segment3d( Point3d(2,0,2), Point3d(3,3,2) ); if( pInterObj == NULL || *(Segment3d *)pInterObj != ansSeg ) { cout << "ERROR! --intersection( Triangle3d & ) -- test 10" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Triangle3d & ) -- test 10" << endl; pInterObj = T1.intersection( T1 ); if( pInterObj == NULL || *(Polygon3d *)pInterObj != *T1.toPolygon() ) { cout << "ERROR! --intersection( Triangle3d & ) -- test 11" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Triangle3d & ) -- test 11" << endl; T1 = Triangle3d( Point3d(3,2,2), Point3d(9,2,4), Point3d(7,7,2) ); ansSeg = Segment3d( Point3d(7,7,2), Point3d(6,2,3)); pInterObj = T1.intersection( Segment3d(Point3d(5,-3,4), Point3d(7,7,2)) ); //cout << *(Segment3d *)pInterObj << endl; if( pInterObj == NULL || *(Segment3d *)pInterObj != ansSeg ) { cout << "ERROR! --intersection( Segment3d & ) -- test 12" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Segment3d & ) -- test 12" << endl; T1 = Triangle3d( Point3d(3,2,2), Point3d(9,2,4), Point3d(7,7,2) ); ansSeg = Segment3d( Point3d(7,7,2), Point3d(6,2,3)); pInterObj = T1.intersection( Line3d(Point3d(8,12,1), Point3d(5,-3,4)) ); //cout << *(Segment3d *)pInterObj << endl; if( pInterObj == NULL || *(Segment3d *)pInterObj != ansSeg ) { cout << "ERROR! --intersection( Line3d & ) -- test 13" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Line3d & ) -- test 13" << endl; cout << "\n############# End of Polygon3d Test ###############\n"; } void plane3d_test() { cout << "\n\n############# Test Plane3d ###############\n"; Plane3d plane1( Point3d(3.0, 0.0, 0.0), Point3d(0.0, 1.0, 0.0), Point3d(3.0, 3.0, 0.0) ); //XY plane Plane3d plane2( Point3d(1.0, 0.0, 0.0), Point3d(0.0, 1.0, 0.0), Point3d(0.0, 0.0, 1.0) ); double dist = plane2.distance( ORIGIN_3D ); if( dist != sqrt( double(3) )/ double(3) ) { cout << "ERROR! -- distance( Point3d &)" << endl; num_of_errors++; } else cout << "CORRECT! -- distance( Point3d &)" << endl; Point3d image = plane2.projection( ORIGIN_3D ); Point3d ansPt = Point3d(BigRat(1,3), BigRat(1,3), BigRat(1,3)); if( image != ansPt ) { cout << "ERROR! --projection( Point3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --projection( Point3d &)" << endl; image = plane1.projection( Point3d(2.5, 1.0, 5.0) ); ansPt = Point3d(2.5, 1.0, 0.0); if( image != ansPt ) { cout << "ERROR! --projection( Point3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --projection( Point3d &)" << endl; if( !plane2.contains( Point3d(0.5, 0.5, 0.0) ) ) { cout << "ERROR! --contains( Point3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --contains( Point3d &)" << endl; Line3d* resLine = (Line3d *)plane1.intersection(plane2); Line3d ansLine( Point3d(1.0, 0.0, 0.0), Point3d(0.0, 1.0, 0.0) ); //cout << *resLine << endl; if( !ansLine.isCoincident(*resLine) ) { cout << "ERROR! --intersection( Plane3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Plane3d &)" << endl; int resInt = plane1.intersects(plane2); //cout << resInt << endl; if( resInt != 1 ) { cout << "ERROR! --intersects( Plane3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --intersects( Plane3d &)" << endl; Segment3d s1( Point3d(1,1,1), Point3d(-1,-1,-1) ); Point3d* pResPt = (Point3d *)plane1.intersection(s1); if( *pResPt != ORIGIN_3D ) { cout << "ERROR! --intersection( Segment3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Segment3d &)" << endl; resInt = plane1.intersects(s1); //cout << resInt << endl; if( resInt != 0 ) { cout << "ERROR! --intersects( Segment3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --intersects( Segment3d &)" << endl; cout << "############# End of Plane3d Test ###############\n"; } void segment3d_test() { cout << "############# Test Segment3d ###############\n"; Segment3d s1( Point3d(0.0, 0.0, 3.0), Point3d(5.0, 0.0, 3.0)); Segment3d s2( Point3d(0.0, 1.0, 3.0), Point3d(3.0, 3.0, 3.0)); Point3d* pResPt = (Point3d* )s1.toLine().intersection( s2.toLine() ); Point3d ansPt(-1.5, 0.0, 3.0); //cout << *pResPt << endl; if (ansPt != *pResPt) { cout << "ERROR! --intersection( Segment3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Segment3d &)" << endl; Point3d resPt = s1.nearPt( Point3d(3.0, 3.0, 3.0) ); ansPt = Point3d(3.0, 0.0, 3.0); //cout << resPt << endl; if (ansPt != resPt) { cout << "ERROR! --nearPt( Point3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --nearPt( Point3d &)" << endl; resPt = s1.nearPt( s1.stopPt() ); //cout << resPt << endl; if (resPt != s1.stopPt() ) { cout << "ERROR! --nearPt( Point3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --nearPt( Point3d &)" << endl; Point3d p(12.33, 3.5, 0.02); resPt = s1.nearPt( p ); //cout << resPt << endl; if( s1.distance(p) != resPt.distance(p) ) { cout << "ERROR! --nearPt( Point3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --nearPt( Point3d &)" << endl; int resInt = s1.intersects( s2.toLine() ); cout << resInt << endl; if (resInt != -1) { cout << "ERROR! --intersect( Line3d &)" << endl; num_of_errors++; } else { cout << "CORRECT! --intersect( Line3d &)" << endl; } resInt = s1.intersects( s2 ); //cout << resInt << endl; if (resInt != -1) { cout << "ERROR! --intersect( Segment3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --intersect( Segment3d &)" << endl; resInt = s1.intersects( s1 ); //cout << resInt << endl; if (resInt != 1) { cout << "ERROR! --intersect( Segment3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --intersect( Segment3d &)" << endl; resInt = s2.intersects( Segment3d( s2.startPt(), ORIGIN_3D ) ); //cout << resInt << endl; if (resInt != 0) { cout << "ERROR! --intersect( Segment3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --intersect( Segment3d &)" << endl; pResPt = (Point3d *)s2.intersection( Line3d( s2.startPt(), ORIGIN_3D )); //cout << *pResPt << endl; if( pResPt==NULL || *pResPt != s2.startPt() ) { cout << "ERROR! --intersection( Line3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Line3d &)" << endl; Segment3d * pinterSeg = (Segment3d *)s1.intersection( Segment3d( Point3d(-1, 0, 3.0), \ Point3d(2, 0, 3.0))); Segment3d ansSeg( Point3d(0,0,3.0), Point3d(2,0,3.0) ); if( pinterSeg==NULL || *pinterSeg != ansSeg ) { cout << "ERROR! --intersection( Segment3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Segment3d &)" << endl; pinterSeg = (Segment3d *)s1.intersection( s1 ); if( pinterSeg==NULL || *pinterSeg != s1 ) { cout << "ERROR! --intersection( Segment3d &)" << endl; num_of_errors++; } else cout << "CORRECT! --intersection( Segment3d &)" << endl; cout << "############# End of Segment3d Test ###############\n"; } int intersects( const Segment3d& s, const Line3d& l) { Point3d p0= s.startPt(); Point3d p1= s.stopPt(); // double v = signed_volume(p0, p1, l.startPt(), l.stopPt()); if( !coplanar(p0, p1, l.startPt(), l.stopPt() ) ) return -1; if( l.contains(p0) && l.contains(p1) ) // this segment is on l return 1; // not collinear // use normal as a viewpoint Vector normal = l.direction().cross(p1 - p0); Point3d Pn = l.startPt() + normal; //cout << Pn << endl; double vol = signed_volume( l.startPt(), l.stopPt(), Pn, p1 ); cout << vol; if( vol > 0 ) cout << " is greater than 0\n"; else cout << " is less than 0\n"; int s1 = orientation3d( l.startPt(), l.stopPt(), Pn, p0 ); int s2 = orientation3d( l.startPt(), l.stopPt(), Pn, p1 ); if(s1==0 && s2==0) //is on return 1; else if( s1*s2>0 ) return -1; else return 0; } void bug_prog() { Segment3d s1( Point3d(0.0, 0.0, 3.0), Point3d(5.0, 0.0, 3.0)); Line3d l( Point3d(0.0, 1.0, 3.0), Point3d(3.0, 3.0, 3.0)); // cout << "s1=" << s1 << ", l=" << l << endl; intersects( s1, l ); //cout << "s1=" << s1 << ", l=" << l << endl; Point3d p0= s1.startPt(); Point3d p1= s1.stopPt(); Vector normal = l.direction().cross(p1 - p0); Point3d Pn = l.startPt() + normal; double vol = signed_volume( l.startPt(), l.stopPt(), Pn, p1 ); cout << vol <<"(sign=" < 0 ) cout << " is greater than 0\n"; else cout << " is less than 0\n"; } int main(int argc, char* argv[]) { segment3d_test(); cout << num_of_errors << " errors occured" << endl; plane3d_test(); cout << num_of_errors << " errors occured" << endl; polygon3d_test(); cout << "Test finished" << endl; cout << num_of_errors << " errors occured" << endl; cout << "\n########But report test program#########\n"; cout << "First, turn on filter..." << endl; setFpFilterFlag(true); bug_prog(); cout << "now, turn off filter..." << endl; setFpFilterFlag(false); bug_prog(); } core++-1.7/ext/geom3d/test/test2.cpp0100644000175000001440000000317707437361200016505 0ustar joachimusers#include "CORE.h" #include "geometry3d.h" #include void polygon3d_test() { cout << "\n\n############# Test Polygon3d ###############\n"; Triangle3d T1( Point3d(3.0, 0.0, 0.0), Point3d(0.0, 1.0, 0.0), Point3d(3.0, 3.0, 0.0) ); Triangle3d T2( Point3d(3.0, 0.0, 0.0), Point3d(0.0, 1.0, 0.0), Point3d(3.0, 1.0, 2.0) ); cout << T2 << endl; cout << T2.toPlane() << endl; cout << T1.toPlane() << endl; /* GeomObj* pInterObj = T1.intersection( T2.toPlane() ); */ double result = T1.toPlane().apply( T2.V1()) ; double result2 = T2.toPlane().apply( T1.V2()); if ( result == result2 ) cout << "TRUE" << endl; else cout << "FALSE" << endl; if (result2 == 0) cout << "CORRECT" << endl; else if (result2 - "0.0000000001" < 0) cout << "WRONG: Less than 0.00000000001" << endl; else cout << "WRONG: Greater than 0.00000000001" << endl; cout << "T1.toPlane().apply(T2.V1()) = " << result << endl; cout << setprecision(50) << "T2.toPlane().apply( T1.V2()) = " << result2.approx(1000, CORE_INFTY) << endl; cout << "T2.toPlane().contains( Segment3d( T1.V1(), T1.V2() ))? " ; if (T2.toPlane().contains( Segment3d( T1.V1(), T1.V2() ))) cout << "YES" << endl; else cout << "NO" << endl; /* Segment3d ansSeg( Point3d(3.0, 0.0, 0.0), Point3d(0.0, 1.0, 0.0) ); if( *(Segment3d *)pInterObj != ansSeg ) cout << "ERROR! --intersection( Triangle3d & )" << endl; else cout << "CORRECT! --intersection( Triangle3d & )" << endl; */ } int main(int argc, char* argv[]) { // segment3d_test(); // plane3d_test(); polygon3d_test(); cout << "Test finished" << endl; } core++-1.7/ext/graphics/0040755000175000001440000000000010147210064014367 5ustar joachimuserscore++-1.7/ext/graphics/Makefile0100755000175000001440000000754110145416735016051 0ustar joachimusers####################################################### # graphics subdirectory # whose source is exactly one .cpp file. # # To compile the main program, you can simply type "make" # If you prefer to choose you own file to compile, type # # make p=zzz # # where # zzz.cc (or zzz.cpp) is the name of the program. # # ####################################################### ####################################################### # variables/options # --use an editor to make sure that your preferred options # is the last one in its list. # --You should at least choose the platform variable ("pf"). ####################################################### CORE_PATH=../.. include ${CORE_PATH}/Make.config AMIYA_HOME=/home/yap/proj/visualhome/proj/bigImages/FromAmiya HOME=/home/visual/tools/drawpoly HOME=/home/exact/corelib/ext/graphics/ # platform (either "unix" or "cyg") # The platform variable should not be hardcoded but read from environment # variable... pf = $(PLATFORM) CC = g++ # file extension ext= ext=.c ext=.cc ext=.cpp # executable extension ifeq ($(pf),cyg) exe=.exe else exe= endif # Runtime libraries ifeq ($(pf),cyg) LIBS= -L\bin -lglut32 -LC:\WINNT\system32 -lopengl32 -lglu32 else LIBS = -L/usr/X11R6/lib -L/usr/unsupported/installers/chenli/lib \ -lglut -lGL -lGLU -lXmu -lXi -lXext -lX11 -lm -lsocket -lnsl LIBS = -L/usr/X11R6/lib \ -L/usr/unsupported/packages/opengl/Mesa2.4/lib \ -lglut -lGL -lGLU -lXmu -lXi -lXext -lX11 -lm -lsocket -lnsl LIBS = -L/usr/X11R6/lib \ -L/usr/unsupported/installers/exact/glut-3.7/lib/glut \ -lglut -lGL -lGLU -lXmu -lXi -lXext -lX11 -lm -lsocket -lnsl endif # Include headers files ifeq ($(pf),cyg) INC= -I\usr\include else INC = -I/usr/unsupported/installers/chenli/include INC = -I/usr/unsupported/packages/opengl/Mesa2.4/include INC = -I/usr/unsupported/installers/exact/glut-3.7/include endif # Load Flags ifeq ($(pf),cyg) LDFLAGS = else LDFLAGS = endif # program base is "p" p=draw p=drawpoly p=drawcurve # program version is "v" v=1 v= # program is "pv" pv=$(p)$(v) # data DATA=/home/visual/tools/drawpoly/data/ DATA= DATA=data/ ifile=input ifile=cissoid # tar files fn=DRAW ####################################################### # targets ####################################################### p executable default: $(CC) -g $(INC) $(pv)$(ext) \ $(LDFLAGS) $(LIBS) -o $(pv) newdraw: newdraw$(ext) $(CC) -g $(INC) newdraw$(ext) \ $(LDFLAGS) $(LIBS) -o newdraw draw: draw.cc $(CC) -g $(INC) draw.cc \ $(LDFLAGS) $(LIBS) -o draw poly drawpoly: drawpoly.cc $(CC) -g $(INC) drawpoly.cc \ $(LDFLAGS) $(LIBS) -o drawpoly curve drawcurve: drawcurve.cpp $(CC) -g $(INC) drawcurve.cpp \ $(LDFLAGS) $(LIBS) -o drawcurve draw.orig: draw.orig.cc $(CC) -g $(INC) draw.orig.cc \ $(LDFLAGS) $(LIBS) -o draw.orig # main test test1: ./drawcurve < ${DATA}test1 test test0 testcurve: ./drawcurve < ${DATA}test0 t: ./drawcurve < ${DATA}${ifile} t1: ./drawcurve 1 < ${DATA}plot testpoly: ./drawpoly < ${DATA}${ifile} testdraw: ./draw < ${DATA}${ifile} testnew: ./newdraw < ${DATA}${ifile} but butterfly: ./${pv} < ${DATA}butterfly ny: ./${pv} < ${DATA}nylines ####################################################### # housekeeping ####################################################### save: ci -l draw.cc drawpoly.cc newdraw.cc Makefile README tar: tar -cvf DRAW.tar draw*.c* Makefile README input* # to use this, you must specify the file name: e.g., make tar fn=1-april-1999 tar1: tar -cvf $(fn).tar Makefile README drawpoly.cc data/input* distrib: tar -cvf $(fn).tar Makefile README drawcurve.cpp data/test* data/butterfly clean: -@rm -f *.o *~ veryclean: clean -@rm -f *$(exe) x* ####################################################### # end of Makefile ####################################################### core++-1.7/ext/graphics/README0100755000175000001440000000317610054131035015253 0ustar joachimusersDrawpoly Files: 1. FILES: Makefile drawpoly.cpp -- original polygon display program drawcurve.cpp -- curve display program input* -- sample input files data/ -- directory for other input files 2. USAGE: --To compile the main program (drawcurve.cpp), first use an editor to choose the platform option (cygwin,unix,etc) in the Makefile. You may need to fix other options in this file. Then type "make". This creates the executable for draw.curve. --To run the program for a simple example, type "make test". --For more details on the input file format, see the source files (drawcurve.cpp). 3. EXTENSIONS: --Allow the display of individual points (with labels) --Allow display of optional labels on Polygon vertices --It may be best to write a script (e.g., perl) to process an input file, and then call a plain drawpoly to display the result... --We should automatically rescale the x- or y-coordinates into something that is reasonable 4. LOCAL NOTES: -- For you may need to set the correct LD_LIBRARY_PATH to get OpenGL: % setenv LD_LIBRARY_PATH \ ${LD_LIBRARY_PATH}:/usr/unsupported/packages/opengl/OpenGL-Mesa2.4/lib 5. HISTORY: The original drawpoly.cc program was originally written by Chen Li (1999) to help us debug the "convert program". The convert program, given any raster image I, computes a new image J where J is a translated, rotated and scaled version of I, but broken up different tiles of some fixed size. The file input0 is an example of a construction from the convert program. This was extended by Chee and Tingjen to allow more flexible input formats as well as colors. core++-1.7/ext/graphics/drawcurve.cpp0100755000175000001440000002166610145417043017114 0ustar joachimusers/*********************************************************************** * LAST UPDATE $Id: drawcurve.cpp,v 1.6 2004/11/13 14:45:55 exact Exp $ * * FILE NAME: drawcurve.cpp * (adapted from drawpoly.cc) * * USAGE: * >> drawcurve [verbose] [< inputfile] * * where the optional argument [verbose], if given, * will cause some printout on the screen (mainly * for debugging). * * To quit the display, type ESC. * * DESCRIPTION: * --- Reads from standard input a list of 2D polygons or polylines * and draws them. Each polygon has its own color. * --- The max and min values of input points are determined * and the window is scaled to fit the entire set of polygons * --- Uses OpenGL/GLUT library * * INPUT FORMAT: * --- Each polygon has the format * p * * * * ... * * E.g. * p 4 # this specifies a quadrilateral * 0.183 0.273 0.281 # the RGB color of the triangle * 0 2 # first point * -0.26 2 # second point * 1.5 2.07 # third point * .123e2 .123e-2 # fourth point (scientific notation!) * --- The separate elements are separated by whitespaces * (space, tabs or newlines). * --- By definition, the polygon is closed * (the first point is repeated at the end). * --- Instead of polygon (with the character 'p'), you could * specify an open polygonal curve, using the character 'o'. * --- We allow comment, which is any line * that begins with `#' (perhaps preceded by whitespaces). * Also, after each line in the above format. * --- Note that scientific notation is allowed. * * BUGS/FEATURES: * --The list of polygons is reversed * TODO: * zooming, panning, * axes display * labels and point display * * HISTORY: * Jan 28, 1999: original version by Chen Li, for * the visualization project at NYU * Mar 3, 1999: modified by Chee and Ting-Jen to allow comment * lines (`#') and common scaling in x and y directions * (so image is not distorted). * Mar 28, 2004: adapted by Chee for Core Library display ***********************************************************************/ #include #include #include #include #include #include #include #include using namespace std; #define MY_POLYGONS_LIST 1 const int SIZEOFBUFFER = 500; // DBL_MAX not found in cygwin environment, so hack: double DBL_MAX = (double)(1L << 30); char buf[SIZEOFBUFFER]; class Vertex2D { private: double x; double y; public: Vertex2D() :x(0), y(0) {} Vertex2D(double x, double y) : x(x), y(y) {} void setX(double x) { this->x = x; } void setY(double y) { this->y = y; } double xval() const { return x; } double yval() const { return y; } void dump() const { cout << " vertex (" << x << ", " << y << ")" << endl;} }; class Polygon2D { private: int n; // number of points in polygon char c; // c='p' for closed polygon, c='o' for open curve Vertex2D *p; double r, g, b; // colors public: Polygon2D *next; Polygon2D() : n(0), c('p'), p(NULL), next(NULL), r(1.0), g(1.0), b(1.0) {} Polygon2D(int n, char c, double r, double g, double b) { this->n = n; this->c = c; p = new Vertex2D[n]; this->r = r; this->g = g; this->b = b; next = NULL; } void setp(int i, const Vertex2D &v) { p[i] = v; } Vertex2D getp(int i) { return p[i]; } int nval() { return n; } char cval() { return c; } // The following is a KLUDGE to ensure that the colors of polygons are not // too dark (since they are drawn against a dark background: double rval() { return (r > 0.5) ? r: 1. -r; } double gval() { return g; } double bval() { return (b>0.5) ? b : 1.-b; } void dump() const { cout << "--- POLYGON ---" << endl; cout << "n = " << n << endl; for (int i=0; i> c; cin >> n; getNextChar(); double r, g, b; cin >> r >> g >> b; getNextChar(); Polygon2D *poly = new Polygon2D(n, c, r, g, b); for (int i=0; i> x >> y; getNextChar(); poly->setp(i, Vertex2D(x, y)); } poly->next = myPolys; myPolys = poly; c = getNextChar(); } if (verbose) { Polygon2D *tmp = myPolys; while (tmp) { tmp->dump(); tmp = tmp->next; } } return; }//readinPolys static void Idle( void ) { /* update animation vars */ glutPostRedisplay(); } void polygon(Polygon2D *poly) { // 'p' draws shaded polygons, so individual polygons may not show up: if (poly->cval() == 'p') glBegin(GL_LINE_LOOP); // for closed polygons else if (poly->cval() == 'o') glBegin(GL_LINE_STRIP); // for open polygons else { cout << "ERROR" << endl; exit(1); } glColor3f(poly->rval(), poly->gval(), poly->bval()); for (int i=0; inval(); i++) { glVertex2f((poly->getp(i).xval() - xo) * xScale * hStretch, (poly->getp(i).yval() - yo) * yScale * vStretch); } glEnd(); } void buildPolygonList() { glNewList(MY_POLYGONS_LIST, GL_COMPILE); glPushMatrix(); // polygons go here // should be rewritten to fit the concrete application Polygon2D *tmp = myPolys; while (tmp) { polygon(tmp); tmp = tmp->next; } glPopMatrix(); glEndList(); } static void Display( void ) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glPushMatrix(); /* draw stuff here */ glCallList(MY_POLYGONS_LIST); glPopMatrix(); glutSwapBuffers(); } static void Reshape( int width, int height ) { glViewport( 0, 0, width, height ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluOrtho2D(0.0, 100.0, 0.0, 100.0); // glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef( 50.0, 50.0, 0.0); } // not used static void Key( unsigned char key, int x, int y ) { switch (key) { case 27: exit(0); break; } glutPostRedisplay(); } // not used static void SpecialKey( int key, int x, int y ) { switch (key) { case GLUT_KEY_UP: break; case GLUT_KEY_DOWN: break; case GLUT_KEY_LEFT: break; case GLUT_KEY_RIGHT: break; } glutPostRedisplay(); } static double Init( bool verbose ) { readinPolys(verbose); /* compute scaling factor here, based on the scale of your polygons */ double xmin, xmax, ymin, ymax; double ratio; xmin = DBL_MAX; ymin = DBL_MAX; xmax = -DBL_MAX; ymax = -DBL_MAX; Polygon2D *tmp = myPolys; while (tmp) { for (int i=0; i < tmp->nval(); i++) { Vertex2D vi = tmp->getp(i); double vix = vi.xval(); double viy = vi.yval(); if (xmin > vix) xmin = vix; if (xmax < vix) xmax = vix; if (ymin > viy) ymin = viy; if (ymax < viy) ymax = viy; } tmp = tmp->next; } cout << "xmin = " << xmin << ", xmax = " << xmax << endl; cout << "ymin = " << ymin << ", ymax = " << ymax << endl; ratio = (xmax-xmin)/(ymax - ymin); // Chee: compensate for very large or very small ratios: if (ratio>5) { vStretch = ratio/5.; } if (ratio<0.2) { hStretch = 1./(ratio*5.); } cout << "ratio = (xmax-xmin)/(ymax-ymin) = " << ratio << endl; xo = (xmin + xmax) / 2.0; yo = (ymin + ymax) / 2.0; // modified by Chee and Ting-Jen double scale = ((xmax-xmin) < (ymax-ymin)) ? (ymax-ymin) : (xmax-xmin); xScale = 100 * 0.9 / (xmax-xmin); yScale = 100 * 0.9 / (ymax-ymin); cout << "xScale = " << xScale << endl; cout << "yScale = " << yScale << endl; return(ratio); }//Init int main( int argc, char *argv[] ) { double ratio; bool verbose=false; if (argc > 1) { verbose=true; cout << "Verbose Mode!" << endl; } glutInit( &argc, argv ); ratio = Init(verbose); glutInitWindowSize( (int)(400.0*ratio), 400 ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); glutCreateWindow(argv[0]); /* setup call lists, etc */ buildPolygonList(); glutReshapeFunc( Reshape ); glutKeyboardFunc( Key ); glutSpecialFunc( SpecialKey ); glutDisplayFunc( Display ); glutIdleFunc( Idle ); glutMainLoop(); } core++-1.7/ext/graphics/data/0040755000175000001440000000000010147210064015300 5ustar joachimuserscore++-1.7/ext/graphics/data/butterfly0100755000175000001440000020673710032655511017265 0ustar joachimusers# image size: 346 461 # 1/4/2001: this is the output from # Tingjen's implementation of Canny Line detector # applied to a butterfly image. # begin o 7 0.000 0.000 0.333 60 177 60 176 59 176 58 177 58 176 57 177 56 178 # end # begin o 22 0.000 0.000 0.667 60 167 61 166 62 166 61 167 60 168 59 168 58 167 58 166 58 165 58 164 58 163 58 162 58 161 58 160 57 159 57 158 57 157 57 156 57 155 57 154 57 153 57 152 # end # begin o 14 0.000 0.000 1.000 59 113 60 113 60 114 60 115 60 116 60 117 60 118 60 119 59 119 58 118 58 117 58 116 58 115 58 114 # end # begin o 20 0.000 0.143 0.000 65 167 64 167 65 166 65 165 65 164 66 163 65 162 65 161 66 160 65 159 65 158 65 157 65 156 64 155 63 154 62 153 61 153 60 152 59 151 58 151 # end # begin o 7 0.000 0.143 0.333 60 97 61 96 62 97 62 98 61 99 60 98 59 99 # end # begin o 49 0.000 0.143 0.667 62 127 62 128 62 129 62 130 62 131 62 132 62 133 62 134 62 135 63 136 63 137 63 138 63 139 63 140 63 141 63 142 63 143 63 144 63 145 63 146 64 147 63 148 62 149 61 149 60 148 61 147 61 146 60 145 60 144 60 143 60 142 60 141 60 140 60 139 59 138 59 137 59 136 59 135 59 134 59 133 60 132 60 131 60 130 60 129 60 128 60 127 60 126 60 125 59 124 # end # begin o 17 0.000 0.143 1.000 62 203 63 203 62 202 62 201 62 200 61 199 61 198 61 197 61 196 60 195 60 194 60 193 60 192 59 191 59 190 59 189 59 188 # end # begin o 6 0.000 0.286 0.000 63 187 63 186 63 185 62 184 61 185 60 186 # end # begin o 9 0.000 0.286 0.333 65 184 66 185 66 184 65 183 65 182 64 181 63 181 62 182 61 181 # end # begin o 13 0.000 0.286 0.667 62 121 63 120 62 119 62 118 62 117 62 116 62 115 62 114 62 113 62 112 62 111 62 110 62 109 # end # begin o 7 0.000 0.286 1.000 64 97 64 96 64 95 63 94 63 93 63 92 63 91 # end # begin o 6 0.000 0.429 0.000 64 99 64 100 64 101 64 102 64 103 63 104 # end # begin o 12 0.000 0.429 0.333 66 196 66 197 66 198 66 199 65 200 64 199 64 198 64 197 64 196 63 195 63 194 63 193 # end # begin o 6 0.000 0.429 0.667 65 194 65 193 65 192 64 191 64 190 64 189 # end # begin o 14 0.000 0.429 1.000 66 95 66 94 67 93 67 92 67 91 68 90 68 89 68 88 68 87 68 86 67 85 66 85 65 86 65 85 # end # begin o 12 0.000 0.571 0.000 65 120 65 119 65 118 65 117 65 116 65 115 65 114 65 113 65 112 65 111 65 110 65 109 # end # begin o 17 0.000 0.571 0.333 71 146 71 147 70 148 69 147 68 147 67 147 66 146 66 145 65 144 65 143 65 142 65 141 65 140 65 139 65 138 65 137 65 136 # end # begin o 17 0.000 0.571 0.667 69 241 68 240 68 239 67 238 67 237 67 236 67 235 66 234 66 233 66 232 66 231 65 230 65 229 65 228 65 227 65 226 65 225 # end # begin o 12 0.000 0.571 1.000 66 108 66 107 66 106 66 105 66 104 66 103 66 102 67 101 68 100 68 99 67 98 66 97 # end # begin o 19 0.000 0.714 0.000 69 204 69 203 69 202 68 201 68 200 68 199 68 198 68 197 68 196 68 195 68 194 67 193 67 192 67 191 67 190 67 189 67 188 67 187 66 186 # end # begin o 9 0.000 0.714 0.333 69 225 69 224 68 223 68 222 68 221 68 220 68 219 67 218 66 217 # end # begin o 22 0.000 0.714 0.667 74 127 75 126 76 125 76 126 75 127 74 128 73 128 72 127 71 126 71 127 70 126 69 126 68 127 67 126 67 125 68 124 68 123 68 122 68 121 68 120 68 119 67 118 # end # begin o 12 0.000 0.714 1.000 73 139 73 138 73 137 73 136 73 135 73 134 72 134 71 134 70 133 69 133 68 133 67 133 # end # begin o 10 0.000 0.857 0.000 68 117 68 116 68 115 68 114 68 113 68 112 68 111 68 110 68 109 68 108 # end # begin o 22 0.000 0.857 0.333 76 86 77 85 78 84 79 83 80 82 81 81 81 80 80 81 79 82 78 83 77 84 76 85 75 86 74 87 73 87 72 88 71 87 70 86 70 85 70 84 69 83 69 82 # end # begin o 6 0.000 0.857 0.667 70 101 71 100 71 101 70 102 70 103 69 104 # end # begin o 20 0.000 0.857 1.000 74 237 74 236 74 235 73 234 73 233 73 232 73 231 73 230 72 229 72 228 72 227 72 226 71 225 71 224 71 223 71 222 70 221 70 220 70 219 69 218 # end # begin o 9 0.000 1.000 0.000 69 237 69 238 70 237 70 236 70 235 70 234 69 233 69 232 69 231 # end # begin o 8 0.000 1.000 0.333 75 76 76 77 75 77 74 76 73 75 72 76 71 77 71 76 # end # begin o 18 0.000 1.000 0.667 86 84 85 85 84 86 83 85 82 85 81 86 80 87 79 88 78 89 77 90 77 91 76 92 75 93 74 94 73 95 73 96 72 97 71 98 # end # begin o 9 0.000 1.000 1.000 76 172 77 172 76 173 75 173 74 172 73 172 72 173 71 174 71 173 # end # begin o 22 0.143 0.000 0.000 78 185 79 184 79 185 78 186 77 187 76 188 75 189 74 189 73 188 72 187 71 186 71 185 71 184 71 183 71 182 71 181 71 180 71 179 71 178 71 177 71 176 71 175 # end # begin o 17 0.143 0.000 0.333 79 212 78 213 77 214 77 213 78 212 79 211 79 210 79 209 79 208 78 207 77 207 76 207 75 207 74 206 73 205 72 205 71 206 # end # begin o 16 0.143 0.000 0.667 75 216 76 215 76 216 75 217 74 218 73 217 73 216 73 215 72 214 72 213 72 212 72 211 72 210 72 209 72 208 72 207 # end # begin o 9 0.143 0.000 1.000 74 60 74 59 75 58 76 58 76 59 76 60 75 60 74 61 73 62 # end # begin o 23 0.143 0.143 0.000 87 142 88 141 88 142 87 143 87 144 86 145 85 146 84 147 83 148 82 149 81 150 80 151 79 151 78 151 77 152 76 152 75 151 74 151 73 150 73 149 73 148 73 147 73 146 # end # begin o 7 0.143 0.143 0.333 75 258 75 257 76 258 76 259 76 260 75 260 74 259 # end # begin o 11 0.143 0.143 0.667 85 133 84 134 83 135 82 135 81 134 80 134 79 134 78 135 77 135 76 135 75 136 # end # begin o 6 0.143 0.143 1.000 76 272 76 271 76 270 76 269 75 268 75 267 # end # begin o 7 0.143 0.286 0.000 77 120 78 119 78 120 77 121 77 122 77 123 76 124 # end # begin o 24 0.143 0.286 0.333 84 297 84 296 83 295 83 294 83 293 83 292 82 291 82 290 81 289 81 288 81 287 80 286 80 285 80 284 79 283 79 282 79 281 78 280 78 279 78 278 78 277 77 276 77 275 76 274 # end # begin o 7 0.143 0.286 0.667 80 77 81 78 81 79 80 78 79 77 78 77 77 77 # end # begin o 24 0.143 0.286 1.000 89 52 89 51 88 50 89 50 90 51 91 52 92 52 93 52 93 53 92 54 91 54 90 53 89 53 88 53 87 52 86 52 85 51 84 51 83 51 82 51 81 51 80 51 79 52 78 52 # end # begin o 8 0.143 0.429 0.000 82 65 83 64 83 63 82 64 81 65 80 65 79 64 78 63 # end # begin o 6 0.143 0.429 0.333 79 126 79 125 80 126 80 127 79 128 78 129 # end # begin o 12 0.143 0.429 0.667 79 183 80 182 80 181 80 180 80 179 80 178 80 177 80 176 80 175 80 174 79 173 78 173 # end # begin o 28 0.143 0.429 1.000 85 266 85 265 85 264 84 263 84 262 84 261 83 260 83 259 83 258 83 257 83 256 83 255 82 254 82 253 81 252 81 251 81 250 80 249 80 248 80 247 80 246 80 245 80 244 79 243 79 242 78 241 78 240 78 239 # end # begin o 6 0.143 0.571 0.000 79 62 79 61 80 60 81 59 80 59 79 60 # end # begin o 23 0.143 0.571 0.333 91 95 91 94 90 95 90 96 90 97 90 98 89 99 88 100 87 101 87 102 87 103 86 104 85 105 85 106 84 107 84 108 83 109 83 110 82 111 82 112 81 113 80 114 79 115 # end # begin o 8 0.143 0.571 0.667 81 119 82 118 82 119 81 120 81 121 81 122 80 123 79 124 # end # begin o 6 0.143 0.571 1.000 83 132 82 132 81 131 80 130 80 131 79 130 # end # begin o 6 0.143 0.714 0.000 81 282 81 281 81 280 81 279 81 278 80 277 # end # begin o 7 0.143 0.714 0.333 87 50 86 49 85 49 84 49 83 49 82 49 81 49 # end # begin o 6 0.143 0.714 0.667 86 146 85 147 84 148 83 149 82 150 81 151 # end # begin o 6 0.143 0.714 1.000 83 202 82 203 81 204 81 203 82 202 81 201 # end # begin o 27 0.143 0.857 0.000 95 94 96 93 97 92 97 93 96 94 95 95 95 96 94 97 93 98 92 99 91 100 91 101 90 102 90 103 89 104 89 105 88 106 88 107 87 108 86 109 86 110 85 111 85 112 84 113 84 114 84 115 83 116 # end # begin o 11 0.143 0.857 0.333 87 66 88 65 89 64 90 63 90 64 89 65 88 66 87 67 86 67 85 67 84 66 # end # begin o 15 0.143 0.857 0.667 91 178 92 177 92 178 91 179 90 180 89 181 88 181 87 181 86 181 85 180 84 179 84 178 84 177 84 176 84 175 # end # begin o 10 0.143 0.857 1.000 90 62 91 61 90 60 90 59 89 59 88 60 88 61 87 62 86 63 85 64 # end # begin o 23 0.143 1.000 0.000 93 71 92 70 91 70 92 71 93 72 94 73 95 74 95 75 95 76 95 77 94 78 93 79 92 80 91 80 90 81 89 81 88 80 87 79 86 78 86 77 86 76 86 75 85 74 # end # begin o 6 0.143 1.000 0.333 88 140 89 139 88 138 87 137 86 136 85 135 # end # begin o 6 0.143 1.000 0.667 85 174 85 173 85 172 85 171 85 170 85 169 # end # begin o 9 0.143 1.000 1.000 88 196 89 195 90 195 89 196 88 197 88 198 87 199 86 200 85 201 # end # begin o 12 0.286 0.000 0.000 88 277 89 278 89 277 88 276 88 275 88 274 88 273 87 272 86 271 86 270 86 269 85 268 # end # begin o 13 0.286 0.000 0.333 90 311 90 310 89 309 89 308 88 307 88 306 87 305 87 304 87 303 86 302 86 301 85 300 85 299 # end # begin o 7 0.286 0.000 0.667 89 89 90 88 89 88 88 87 88 86 87 86 86 87 # end # begin o 8 0.286 0.000 1.000 87 74 88 73 89 72 90 71 90 70 89 71 88 72 87 73 # end # begin o 6 0.286 0.143 0.000 88 156 89 155 90 154 90 153 89 154 88 155 # end # begin o 11 0.286 0.143 0.333 96 355 96 354 95 355 94 356 93 356 92 355 91 355 91 354 90 353 89 352 88 353 # end # begin o 11 0.286 0.143 0.667 97 367 97 366 96 365 95 365 94 365 93 365 92 365 91 365 90 366 89 366 88 365 # end # begin o 9 0.286 0.143 1.000 91 285 92 286 92 285 91 284 91 283 90 282 90 281 90 280 89 279 # end # begin o 7 0.286 0.286 0.000 95 367 94 367 93 367 92 367 91 367 90 368 89 367 # end # begin o 24 0.286 0.286 0.333 102 113 103 112 104 111 104 112 103 113 102 114 102 115 101 116 100 117 100 118 99 119 98 120 98 121 97 122 97 123 96 124 95 125 95 126 94 127 94 128 93 129 92 130 91 131 90 130 # end # begin o 53 0.286 0.286 0.667 121 319 121 318 120 319 119 319 118 320 117 321 116 321 115 322 114 323 113 323 112 323 111 323 110 323 109 324 108 323 107 323 106 322 105 321 105 320 104 319 104 318 103 317 103 316 103 315 102 314 102 313 101 312 101 311 100 310 99 309 100 309 99 308 98 307 99 307 98 306 97 305 97 304 96 303 97 303 96 302 95 301 95 300 94 299 94 298 93 297 93 296 92 295 92 294 91 293 91 292 90 291 90 290 90 289 # end # begin o 7 0.286 0.286 1.000 93 145 93 144 92 145 92 146 92 147 92 148 91 149 # end # begin o 14 0.286 0.429 0.000 92 176 92 175 92 174 93 173 93 172 93 171 94 170 94 169 94 168 94 167 94 166 93 165 92 164 91 163 # end # begin o 6 0.286 0.429 0.333 96 353 95 353 94 353 93 353 92 353 91 353 # end # begin o 10 0.286 0.429 0.667 96 136 96 135 95 136 95 137 95 138 94 139 94 140 93 141 93 142 92 143 # end # begin o 23 0.286 0.429 1.000 102 309 102 308 102 307 101 306 101 305 101 304 100 303 99 302 99 301 98 300 98 299 97 298 97 297 96 296 96 295 96 294 95 293 95 292 94 291 94 290 93 289 93 288 92 287 # end # begin o 7 0.286 0.571 0.000 95 342 96 343 96 342 95 341 94 341 93 341 92 342 # end # begin o 7 0.286 0.571 0.333 96 346 96 345 95 346 94 347 93 346 92 345 92 344 # end # begin o 8 0.286 0.571 0.667 97 159 98 158 98 159 97 160 97 161 96 162 95 163 94 163 # end # begin o 29 0.286 0.571 1.000 107 411 106 411 105 411 104 412 103 413 103 414 103 415 103 416 103 417 103 418 103 419 103 420 102 421 101 422 100 423 99 424 98 425 98 426 98 427 98 428 99 429 99 430 98 431 98 432 98 433 97 434 97 435 96 436 95 437 # end # begin o 8 0.286 0.714 0.000 96 83 96 84 97 85 98 84 98 83 98 82 97 82 96 82 # end # begin o 7 0.286 0.714 0.333 98 127 99 126 99 127 98 128 98 129 97 130 96 131 # end # begin o 23 0.286 0.714 0.667 101 163 102 162 102 163 101 164 100 165 100 166 100 167 99 168 99 169 99 170 98 171 98 172 98 173 98 174 97 175 97 176 97 177 97 178 97 179 97 180 97 181 97 182 96 183 # end # begin o 7 0.286 0.714 1.000 99 152 100 153 100 154 99 155 99 156 98 157 97 156 # end # begin o 21 0.286 0.857 0.000 103 62 102 61 101 61 102 62 103 63 103 64 103 65 102 66 102 67 101 68 100 68 99 67 98 67 98 66 98 65 98 64 98 63 99 62 100 61 99 61 98 62 # end # begin o 7 0.286 0.857 0.333 98 335 98 336 99 337 100 336 100 335 99 334 98 334 # end # begin o 18 0.286 0.857 0.667 107 112 108 111 108 110 107 111 106 112 106 113 106 114 105 115 105 116 104 117 105 117 104 118 103 119 102 120 101 121 101 122 100 123 99 124 # end # begin o 15 0.286 0.857 1.000 105 329 104 328 103 328 104 329 105 330 105 331 105 332 104 333 103 333 102 333 101 332 100 331 100 332 99 331 99 330 # end # begin o 23 0.286 1.000 0.000 119 440 118 440 117 439 116 438 115 437 114 436 113 437 112 438 111 438 110 437 109 436 108 435 107 435 106 435 105 435 104 436 103 437 103 438 102 439 102 440 101 440 100 440 99 439 # end # begin o 26 0.286 1.000 0.333 115 126 114 127 113 127 114 128 115 129 114 130 114 131 113 132 113 133 112 134 112 135 111 136 110 137 110 138 109 139 108 140 107 141 106 142 106 143 106 144 105 144 104 145 103 146 102 147 101 148 100 149 # end # begin o 12 0.286 1.000 0.667 100 363 100 364 100 365 101 365 102 365 103 364 104 363 103 362 102 361 101 361 100 362 100 361 # end # begin o 8 0.286 1.000 1.000 107 278 107 279 106 278 105 278 104 279 103 279 102 278 101 279 # end # begin o 20 0.429 0.000 0.000 101 301 101 300 101 299 101 298 101 297 101 296 101 295 101 294 101 293 101 292 101 291 101 290 101 289 101 288 101 287 101 286 101 285 101 284 101 283 101 282 # end # begin o 7 0.429 0.000 0.333 105 57 106 58 106 59 105 60 104 59 103 58 102 57 # end # begin o 12 0.429 0.000 0.667 110 81 111 82 111 81 110 80 109 79 108 78 107 77 106 78 105 79 104 80 103 81 102 82 # end # begin o 13 0.429 0.000 1.000 110 88 111 87 111 86 110 87 109 88 108 88 107 88 106 87 105 87 104 86 103 85 102 84 102 83 # end # begin o 7 0.429 0.143 0.000 105 156 105 155 104 156 104 157 104 158 103 159 102 160 # end # begin o 6 0.429 0.143 0.333 104 205 104 204 103 203 103 202 102 201 102 200 # end # begin o 11 0.429 0.143 0.667 107 346 106 347 107 347 108 346 108 345 107 344 106 344 105 344 104 344 103 345 102 346 # end # begin o 6 0.429 0.143 1.000 102 447 103 446 103 445 102 444 102 443 102 442 # end # begin o 15 0.429 0.286 0.000 105 69 104 70 104 69 105 68 106 68 107 69 107 70 107 71 106 72 105 73 106 73 105 74 104 73 103 72 103 71 # end # begin o 31 0.429 0.286 0.333 107 271 106 272 105 273 106 273 107 272 108 271 108 270 108 269 108 268 108 267 108 266 108 265 108 264 108 263 108 262 108 261 108 260 107 259 106 258 107 258 106 257 106 256 105 255 104 256 103 255 103 254 103 253 103 252 104 251 104 250 103 251 # end # begin o 13 0.429 0.286 0.667 103 271 104 272 104 271 103 270 103 269 103 268 103 267 103 266 103 265 103 264 104 263 104 262 103 263 # end # begin o 13 0.429 0.286 1.000 107 98 108 99 108 100 108 101 108 102 107 103 107 104 107 105 106 106 106 107 105 108 105 109 104 110 # end # begin o 6 0.429 0.429 0.000 104 249 104 248 104 247 104 246 104 245 104 244 # end # begin o 17 0.429 0.429 0.333 108 358 107 358 108 357 109 357 110 357 111 357 112 356 112 355 112 354 111 354 110 354 109 354 108 354 107 354 106 354 105 355 104 355 # end # begin o 7 0.429 0.429 0.667 108 409 107 408 107 409 106 408 105 407 104 406 104 405 # end # begin o 7 0.429 0.429 1.000 107 449 108 450 108 451 107 450 106 449 105 449 104 448 # end # begin o 9 0.429 0.571 0.000 110 457 109 456 108 455 108 454 107 453 106 452 105 451 105 452 104 453 # end # begin o 24 0.429 0.571 0.333 111 144 112 143 113 142 114 141 115 140 116 139 117 138 118 138 117 139 116 140 115 141 114 142 113 143 112 144 111 145 110 146 111 146 110 147 109 148 108 149 108 150 107 151 106 152 105 153 # end # begin o 8 0.429 0.571 0.667 105 243 105 242 105 241 105 240 105 239 105 238 105 237 105 236 # end # begin o 9 0.429 0.571 1.000 106 235 106 234 106 233 106 232 106 231 106 230 106 229 106 228 106 227 # end # begin o 16 0.429 0.714 0.000 109 292 110 293 110 292 109 291 109 290 108 289 108 288 108 287 108 286 107 285 107 284 108 283 108 282 107 281 106 281 106 280 # end # begin o 7 0.429 0.714 0.333 106 460 107 459 107 460 108 459 108 458 107 457 106 457 # end # begin o 8 0.429 0.714 0.667 115 106 114 107 113 107 112 106 111 106 110 107 109 108 108 109 # end # begin o 40 0.429 0.714 1.000 111 228 110 227 110 226 110 225 110 224 111 223 111 222 111 221 111 220 112 219 113 219 114 218 115 218 116 218 117 218 118 218 119 217 120 218 119 218 120 219 121 220 121 221 121 222 121 223 121 224 121 225 121 226 121 227 120 228 119 229 118 230 117 230 116 230 115 229 114 229 113 229 112 229 111 229 110 228 109 229 # end # begin o 24 0.429 0.857 0.000 115 301 114 300 113 299 112 298 112 299 113 300 114 301 115 302 116 303 117 304 118 305 119 306 119 307 119 308 118 309 117 310 116 311 115 311 114 311 113 311 112 312 111 312 110 313 109 313 # end # begin o 15 0.429 0.857 0.333 121 317 121 316 120 315 120 314 119 313 118 313 117 313 116 313 115 314 114 314 113 314 112 315 111 315 110 315 109 315 # end # begin o 11 0.429 0.857 0.667 116 341 117 340 117 339 116 340 115 341 114 342 113 341 112 340 111 339 110 338 109 339 # end # begin o 118 0.429 0.857 1.000 126 252 125 251 125 252 126 253 126 254 126 255 126 256 126 257 126 258 126 259 127 260 127 261 128 262 128 263 127 264 128 265 128 266 128 267 128 268 128 269 128 270 128 271 128 272 128 273 128 274 128 275 128 276 128 277 128 278 127 279 127 280 127 281 127 282 127 283 127 284 127 285 127 286 127 287 126 288 126 289 126 290 127 291 127 292 126 293 126 294 126 295 126 296 126 297 126 298 126 299 125 300 125 301 124 301 123 301 122 301 121 300 120 299 119 298 118 297 117 296 117 295 116 294 116 293 115 292 115 291 114 290 114 289 113 288 113 287 112 286 112 285 112 284 112 283 112 282 112 281 112 280 112 279 111 278 111 277 111 276 111 275 111 274 111 273 111 272 111 271 111 270 111 269 111 268 111 267 111 266 111 265 111 264 111 263 111 262 111 261 110 260 110 259 110 258 110 257 110 256 110 255 110 254 110 253 110 252 110 251 110 250 110 249 110 248 110 247 110 246 110 245 110 244 110 243 110 242 110 241 110 240 110 239 110 238 # end # begin o 10 0.429 1.000 0.000 116 337 117 338 117 337 116 336 115 336 114 336 113 336 112 336 111 336 110 337 # end # begin o 7 0.429 1.000 0.333 114 409 115 409 114 410 113 410 112 411 111 410 110 410 # end # begin o 6 0.429 1.000 0.667 112 96 113 96 113 95 113 94 112 94 111 95 # end # begin o 21 0.429 1.000 1.000 124 250 125 250 124 249 124 248 124 247 123 246 122 245 122 244 121 243 120 242 119 242 118 241 117 240 116 239 115 239 114 239 113 238 112 238 111 238 112 237 111 237 # end # begin o 32 0.571 0.000 0.000 117 196 116 197 116 196 117 195 118 194 119 193 120 192 121 191 122 192 122 193 122 194 122 195 122 196 122 197 121 198 121 199 121 200 121 201 121 202 121 203 120 204 119 205 118 206 118 207 117 208 116 208 115 208 114 209 113 210 112 209 112 208 112 207 # end # begin o 11 0.571 0.000 0.333 117 80 118 79 118 78 117 79 116 80 115 80 114 79 113 78 113 77 113 76 113 75 # end # begin o 7 0.571 0.000 0.667 117 125 118 124 117 124 116 124 115 124 114 124 113 123 # end # begin o 15 0.571 0.000 1.000 122 329 121 330 122 330 123 329 123 328 122 327 121 326 120 325 119 325 118 324 117 324 116 325 115 325 114 326 113 326 # end # begin o 9 0.571 0.143 0.000 119 330 120 331 119 331 118 330 117 330 116 329 115 329 114 328 113 328 # end # begin o 8 0.571 0.143 0.333 118 77 118 76 117 75 116 74 117 74 116 73 115 73 114 73 # end # begin o 18 0.571 0.143 0.667 121 102 120 103 121 103 122 102 122 101 122 100 122 99 121 98 121 97 121 96 121 95 121 94 120 93 119 93 118 94 117 95 116 96 115 97 # end # begin o 6 0.571 0.143 1.000 119 103 118 103 117 102 116 101 115 100 115 99 # end # begin o 11 0.571 0.286 0.000 116 109 117 108 118 108 118 109 118 110 118 111 117 112 117 113 116 114 116 115 115 116 # end # begin o 21 0.571 0.286 0.333 132 414 133 415 132 415 131 414 130 414 129 413 128 413 127 413 126 413 125 414 124 414 123 414 122 415 121 415 120 416 119 416 118 416 117 415 117 414 116 413 115 413 # end # begin o 26 0.571 0.286 0.667 124 440 123 440 122 439 123 439 124 438 124 437 123 437 122 437 121 437 120 438 119 437 118 436 118 437 117 436 116 435 116 434 116 433 116 432 116 431 116 430 116 429 116 428 116 427 116 426 116 425 116 424 # end # begin o 13 0.571 0.286 1.000 117 88 117 87 118 88 119 87 120 86 121 85 121 84 121 83 121 82 120 82 119 82 118 83 117 84 # end # begin o 7 0.571 0.429 0.000 117 423 117 422 117 421 118 420 118 419 118 418 117 417 # end # begin o 9 0.571 0.429 0.333 122 243 121 242 121 241 121 240 120 239 121 239 120 238 119 238 118 239 # end # begin o 14 0.571 0.429 0.667 123 116 123 115 124 116 125 117 124 118 124 119 123 120 122 120 121 119 120 118 120 117 120 116 120 115 120 114 # end # begin o 10 0.571 0.429 1.000 125 342 125 341 124 342 123 343 122 343 121 343 120 342 120 341 120 340 120 339 # end # begin o 8 0.571 0.571 0.000 127 452 126 452 125 452 124 452 123 452 122 452 121 452 120 451 # end # begin o 7 0.571 0.571 0.333 121 457 122 457 123 456 123 455 122 454 121 454 120 455 # end # begin o 7 0.571 0.571 0.667 124 338 125 339 125 340 124 339 123 338 122 337 121 337 # end # begin o 11 0.571 0.571 1.000 125 347 124 347 125 346 126 347 126 348 126 349 125 350 124 349 123 349 122 350 121 351 # end # begin o 15 0.571 0.714 0.000 123 152 123 151 124 150 125 149 126 148 126 147 126 146 126 145 127 144 126 143 125 142 124 142 123 142 122 141 122 140 # end # begin o 7 0.571 0.714 0.333 128 422 127 423 126 423 125 423 124 424 123 425 122 426 # end # begin o 6 0.571 0.714 0.667 124 78 125 79 125 80 124 81 123 80 123 79 # end # begin o 34 0.571 0.714 1.000 127 188 128 187 128 188 127 189 126 190 126 191 126 192 126 193 125 194 125 195 125 196 125 197 124 198 125 199 125 200 125 201 125 202 125 203 124 204 124 205 124 206 124 207 124 208 125 209 124 210 124 211 124 212 124 213 124 214 124 215 125 216 124 217 124 218 123 219 # end # begin o 19 0.571 0.857 0.000 135 414 136 414 137 415 138 414 137 413 136 412 135 412 134 412 133 412 132 412 131 412 130 411 129 410 128 409 127 409 126 409 125 408 124 407 123 406 # end # begin o 13 0.571 0.857 0.333 129 97 128 98 127 98 128 97 129 96 130 95 129 94 129 93 128 92 127 91 126 91 125 92 124 91 # end # begin o 6 0.571 0.857 0.667 125 97 126 98 126 97 125 96 124 95 124 94 # end # begin o 7 0.571 0.857 1.000 128 166 127 167 127 168 126 169 126 170 125 171 124 172 # end # begin o 18 0.571 1.000 0.000 131 312 132 313 133 314 134 315 133 316 133 317 132 318 132 319 131 320 130 321 129 321 128 320 127 320 126 319 125 318 125 317 125 316 124 315 # end # begin o 7 0.571 1.000 0.333 128 366 127 367 126 368 125 367 124 366 125 365 124 364 # end # begin o 19 0.571 1.000 0.667 131 133 132 132 133 131 133 130 132 131 131 132 130 133 129 133 128 133 127 132 126 131 125 130 125 129 125 128 125 127 125 126 125 125 125 124 125 123 # end # begin o 38 0.571 1.000 1.000 134 248 135 247 135 248 134 249 134 250 133 251 132 250 131 249 130 248 129 247 129 246 129 245 129 244 128 243 128 242 128 241 127 240 127 239 127 238 127 237 127 236 126 235 126 234 126 233 126 232 126 231 126 230 126 229 125 228 125 227 125 226 125 225 125 224 125 223 125 222 125 221 125 220 125 219 # end # begin o 10 0.714 0.000 0.000 128 312 129 313 130 314 131 315 130 315 129 314 128 313 127 312 126 312 125 313 # end # begin o 6 0.714 0.000 0.333 130 365 129 364 128 364 127 364 126 363 125 364 # end # begin o 17 0.714 0.000 0.667 133 107 132 108 131 109 130 109 131 108 132 107 133 106 133 105 133 104 133 103 132 102 131 101 130 101 129 102 128 102 127 103 126 102 # end # begin o 17 0.714 0.000 1.000 133 129 134 128 134 127 133 126 133 125 133 124 133 123 132 122 132 121 132 120 131 119 131 118 130 117 129 118 128 118 127 119 126 120 # end # begin o 55 0.714 0.143 0.000 142 214 141 215 141 214 142 213 142 212 142 211 143 210 143 209 143 208 143 207 143 206 144 205 144 204 144 203 144 202 145 201 145 200 145 199 145 198 146 197 146 196 146 195 147 194 147 193 147 192 148 191 148 190 148 189 149 188 149 187 149 186 149 185 148 184 147 183 146 182 145 182 144 181 143 181 142 182 141 183 140 184 139 185 138 185 137 185 136 186 135 187 134 187 133 187 132 188 131 187 130 186 129 185 128 185 128 186 127 185 # end # begin o 18 0.714 0.143 0.333 130 334 129 333 130 333 131 334 132 334 133 335 134 334 135 333 135 332 135 331 134 330 133 329 132 329 131 329 130 328 129 329 128 329 127 330 # end # begin o 13 0.714 0.143 0.667 129 451 130 450 130 451 131 450 132 450 133 449 133 448 132 449 131 448 130 448 129 448 128 447 127 446 # end # begin o 12 0.714 0.143 1.000 130 153 129 153 130 154 131 155 132 156 132 157 131 158 131 159 130 160 130 161 129 162 128 163 # end # begin o 22 0.714 0.286 0.000 138 176 137 177 138 177 139 176 140 176 140 175 140 174 140 173 140 172 139 171 138 171 137 171 136 171 135 171 134 171 133 171 132 171 131 172 130 173 129 174 129 175 128 176 # end # begin o 10 0.714 0.286 0.333 136 178 135 178 134 178 133 178 132 179 131 179 130 179 129 179 128 178 128 177 # end # begin o 16 0.714 0.286 0.667 129 344 128 343 128 342 129 343 130 344 131 345 132 345 133 344 134 343 134 342 133 341 132 340 131 339 130 339 129 340 128 339 # end # begin o 19 0.714 0.286 1.000 134 308 135 308 134 309 133 309 132 308 132 307 131 306 131 305 131 304 131 303 131 302 131 301 131 300 131 299 131 298 131 297 131 296 131 295 130 294 # end # begin o 9 0.714 0.429 0.000 137 421 137 422 136 422 135 422 134 422 133 422 132 422 131 422 130 422 # end # begin o 7 0.714 0.429 0.333 131 357 131 358 132 358 133 357 133 356 132 355 131 356 # end # begin o 16 0.714 0.429 0.667 137 417 136 416 137 416 138 417 139 417 140 418 139 419 138 419 137 419 136 419 135 419 134 419 133 418 132 418 131 418 131 417 # end # begin o 7 0.714 0.429 1.000 132 295 132 294 132 293 132 292 132 291 132 290 132 289 # end # begin o 7 0.714 0.571 0.000 136 424 137 425 136 425 135 425 134 425 133 424 132 423 # end # begin o 8 0.714 0.571 0.333 135 278 135 277 134 278 134 279 134 280 134 281 134 282 133 283 # end # begin o 6 0.714 0.571 0.667 133 289 133 288 133 287 133 286 133 285 133 284 # end # begin o 12 0.714 0.571 1.000 136 98 135 98 136 99 137 100 138 101 138 102 137 103 136 102 135 101 134 100 134 99 134 98 # end # begin o 17 0.714 0.714 0.000 142 144 141 145 140 146 141 146 142 145 143 144 143 143 143 142 142 141 141 140 140 139 139 138 138 137 137 138 136 138 135 139 134 140 # end # begin o 9 0.714 0.714 0.333 139 147 138 147 137 148 136 147 135 146 134 145 134 144 134 143 134 142 # end # begin o 10 0.714 0.714 0.667 136 350 135 350 136 349 137 349 138 348 137 347 136 346 135 347 134 348 134 347 # end # begin o 31 0.714 0.714 1.000 141 216 141 217 140 218 140 219 140 220 140 221 140 222 139 223 139 224 139 225 139 226 139 227 138 228 138 229 138 230 138 231 138 232 138 233 138 234 137 235 137 236 137 237 137 238 137 239 137 240 137 241 137 242 137 243 136 244 136 245 135 246 # end # begin o 38 0.714 0.857 0.000 159 236 160 235 161 234 161 235 160 236 159 237 159 238 158 239 157 240 156 241 155 242 154 243 153 244 152 245 151 246 150 247 149 248 149 247 148 248 147 248 146 249 145 249 144 249 143 249 142 250 141 251 140 252 139 253 139 254 138 255 138 256 137 257 137 258 136 259 136 260 136 261 136 262 135 263 # end # begin o 13 0.714 0.857 0.333 135 276 135 275 135 274 135 273 135 272 135 271 135 270 136 269 135 268 135 267 136 266 135 265 135 264 # end # begin o 20 0.714 0.857 0.667 140 121 139 120 139 121 140 122 141 122 142 121 143 120 143 119 143 118 143 117 142 116 142 115 141 114 140 113 139 113 138 112 139 111 138 110 137 111 136 111 # end # begin o 75 0.714 0.857 1.000 180 242 181 241 181 242 180 243 180 244 180 245 179 246 179 247 178 248 178 249 177 250 177 251 177 252 177 253 176 254 175 255 176 255 175 256 174 257 174 258 173 259 172 260 171 261 170 262 170 263 169 264 168 265 168 266 167 267 166 268 166 269 165 270 164 271 163 272 162 273 161 274 160 275 159 276 160 276 159 277 158 278 157 279 157 280 156 281 155 282 154 283 153 284 154 284 153 285 152 286 152 287 151 288 150 289 149 290 150 290 149 291 148 292 147 293 147 294 146 295 146 296 145 297 144 298 143 299 143 300 142 301 142 302 141 303 140 304 140 305 139 306 138 307 138 308 137 309 136 309 # end # begin o 7 0.714 1.000 0.000 139 409 140 410 140 411 139 411 138 411 137 410 136 409 # end # begin o 10 0.714 1.000 0.333 138 453 137 453 138 452 138 451 138 450 138 449 137 448 137 447 137 446 136 446 # end # begin o 9 0.714 1.000 0.667 141 314 142 315 143 316 142 316 141 315 140 314 139 314 138 315 137 316 # end # begin o 7 0.714 1.000 1.000 139 119 138 119 138 118 138 117 138 116 138 115 138 114 # end # begin o 26 0.857 0.000 0.000 143 157 144 156 145 156 146 157 147 158 147 159 147 160 146 161 145 162 144 163 143 163 142 164 141 164 140 164 139 164 138 163 138 162 138 161 139 160 140 159 141 158 142 157 141 157 140 158 139 159 138 160 # end # begin o 8 0.857 0.000 0.333 141 321 142 321 141 320 140 320 139 320 138 319 138 318 138 317 # end # begin o 7 0.857 0.000 0.667 139 328 140 329 139 329 138 328 138 327 139 326 138 325 # end # begin o 14 0.857 0.000 1.000 146 409 146 408 145 409 144 409 143 408 142 407 141 406 140 405 140 404 140 403 140 402 140 401 139 401 138 402 # end # begin o 6 0.857 0.143 0.000 143 459 142 458 141 457 140 457 139 458 138 459 # end # begin o 6 0.857 0.143 0.333 141 329 142 329 143 328 142 327 141 326 140 326 # end # begin o 25 0.857 0.143 0.667 149 240 150 239 151 238 152 237 153 236 154 235 154 234 153 235 152 236 151 237 150 238 149 239 148 240 147 241 146 241 145 241 144 241 143 240 142 239 142 238 142 237 142 236 142 235 142 234 142 233 # end # begin o 14 0.857 0.143 1.000 150 134 149 134 150 133 150 132 151 131 150 130 150 129 149 128 148 127 147 126 146 126 145 126 144 127 143 128 # end # begin o 8 0.857 0.286 0.000 148 134 147 134 146 133 145 133 144 132 144 131 143 130 143 129 # end # begin o 6 0.857 0.286 0.333 143 232 143 231 143 230 143 229 143 228 143 227 # end # begin o 81 0.857 0.286 0.667 208 249 209 248 210 247 211 246 210 246 209 247 208 248 207 249 206 249 205 250 204 251 203 252 202 252 201 253 201 252 200 253 199 254 198 254 197 255 196 256 195 256 194 256 193 257 192 257 191 258 190 258 189 259 188 260 187 260 186 261 185 261 184 262 183 263 182 264 181 265 180 266 179 267 178 268 177 269 176 270 175 271 174 272 173 273 172 274 171 275 170 276 169 277 170 277 169 278 168 279 167 280 166 281 165 282 164 283 163 284 162 285 161 286 160 287 159 288 159 289 159 290 158 291 157 292 157 293 156 294 155 295 154 296 153 297 154 297 153 298 152 299 151 300 150 301 150 302 149 303 148 304 147 305 146 306 145 307 144 308 143 307 # end # begin o 73 0.857 0.286 1.000 211 273 210 272 209 271 208 272 207 272 206 273 205 274 204 275 203 275 202 276 201 277 200 278 200 277 199 278 198 279 197 280 196 280 195 280 194 280 193 281 192 282 191 283 190 284 189 284 188 285 187 286 186 286 185 287 184 288 183 289 182 290 181 291 181 290 180 291 179 292 178 292 177 293 176 294 175 294 174 295 173 296 172 297 171 297 170 298 169 299 168 300 167 301 166 301 165 302 164 303 163 304 163 303 162 304 161 305 160 306 159 306 158 307 157 308 156 309 155 309 154 310 153 310 152 311 151 312 150 312 149 313 148 313 147 314 146 315 145 314 144 313 143 313 143 312 # end # begin o 15 0.857 0.429 0.000 146 335 145 334 144 333 145 333 146 334 147 335 147 336 147 337 146 337 145 337 144 336 143 336 143 335 143 334 143 333 # end # begin o 6 0.857 0.429 0.333 146 407 145 406 145 405 144 404 143 403 143 402 # end # begin o 15 0.857 0.429 0.667 153 144 152 143 152 144 153 145 154 146 153 147 152 148 151 148 150 149 149 150 148 151 147 152 146 153 145 154 144 154 # end # begin o 6 0.857 0.429 1.000 144 226 144 225 144 224 145 223 145 222 144 221 # end # begin o 12 0.857 0.571 0.000 153 405 154 405 153 406 152 406 151 406 150 405 149 404 148 403 147 403 146 402 145 401 144 400 # end # begin o 9 0.857 0.571 0.333 151 141 151 142 150 141 149 141 148 142 147 143 146 144 146 145 145 146 # end # begin o 9 0.857 0.571 0.667 151 149 150 150 149 151 148 152 147 151 146 150 145 149 145 148 145 147 # end # begin o 14 0.857 0.571 1.000 148 208 148 207 147 208 147 209 147 210 147 211 147 212 147 213 146 214 146 215 146 216 146 217 146 218 145 219 # end # begin o 22 0.857 0.714 0.000 166 321 165 321 164 322 163 322 162 321 161 321 160 321 159 321 158 321 157 321 156 321 155 322 154 322 153 322 152 322 151 322 150 322 149 323 148 323 147 323 146 323 145 324 # end # begin o 16 0.857 0.714 0.333 146 327 147 328 148 329 149 330 150 331 151 332 152 333 153 333 152 332 151 331 150 330 149 329 148 328 147 327 146 326 145 327 # end # begin o 27 0.857 0.714 0.667 171 419 170 419 169 420 168 421 167 422 166 423 165 424 164 425 163 425 162 426 161 426 160 426 159 426 158 426 157 426 156 426 155 426 154 426 153 425 152 424 152 425 151 424 150 423 149 424 148 424 147 423 146 423 # end # begin o 6 0.857 0.714 1.000 147 429 148 429 148 428 148 427 148 426 147 425 # end # begin o 7 0.857 0.857 0.000 153 128 152 127 151 126 150 125 150 124 149 123 148 124 # end # begin o 15 0.857 0.857 0.333 154 168 153 167 152 167 153 168 154 169 154 170 154 171 153 172 153 173 152 174 151 174 150 174 149 173 148 172 148 171 # end # begin o 11 0.857 0.857 0.667 150 198 151 197 151 198 150 199 150 200 149 201 149 202 149 203 149 204 149 205 148 206 # end # begin o 12 0.857 0.857 1.000 157 313 158 312 157 312 156 313 155 314 154 314 153 315 152 315 151 316 150 316 149 317 148 317 # end # begin o 14 0.857 1.000 0.000 157 344 156 345 156 346 157 347 156 347 155 346 154 347 153 347 152 348 151 348 150 347 149 346 148 345 148 344 # end # begin o 10 0.857 1.000 0.333 155 430 156 431 155 431 154 430 153 430 152 430 151 431 150 431 149 431 148 431 # end # begin o 35 0.857 1.000 0.667 181 313 182 312 181 312 180 313 179 313 178 314 177 314 176 315 175 315 174 315 173 315 172 316 171 316 170 316 169 316 168 317 167 317 166 317 165 317 164 317 163 317 162 317 161 317 160 318 159 318 158 318 157 318 156 318 155 318 154 318 153 318 152 319 151 318 150 318 149 319 # end # begin o 6 0.857 1.000 1.000 154 345 153 345 152 344 151 343 150 343 149 343 # end # begin o 28 1.000 0.000 0.000 171 457 172 458 172 457 171 456 170 456 169 456 168 455 167 455 166 454 165 454 164 454 163 453 162 453 161 453 160 452 159 452 158 452 157 452 156 452 155 451 154 451 153 450 152 449 151 448 150 447 150 446 151 445 150 444 # end # begin o 8 1.000 0.000 0.333 150 460 150 459 150 458 150 457 151 456 150 455 150 454 150 453 # end # begin o 9 1.000 0.000 0.667 154 400 153 400 152 401 151 400 151 399 151 398 152 397 152 396 151 397 # end # begin o 6 1.000 0.000 1.000 153 458 154 457 153 457 152 458 152 459 151 460 # end # begin o 7 1.000 0.143 0.000 155 129 156 128 155 127 154 126 153 125 153 124 152 123 # end # begin o 7 1.000 0.143 0.333 152 191 152 190 152 189 152 188 153 187 153 186 152 187 # end # begin o 6 1.000 0.143 0.667 157 241 156 242 155 243 154 244 153 245 152 246 # end # begin o 10 1.000 0.143 1.000 158 340 157 339 157 340 156 341 155 341 154 340 153 340 152 340 152 339 152 338 # end # begin o 41 1.000 0.286 0.000 170 403 169 402 169 401 168 400 168 399 167 400 166 401 166 400 166 399 166 398 166 397 167 396 167 395 168 394 168 393 167 392 167 391 167 390 166 390 165 390 164 391 163 392 162 391 161 390 161 391 160 390 160 389 161 388 161 387 160 386 159 387 158 388 158 389 157 389 156 389 155 390 155 391 155 392 154 393 153 393 152 394 # end # begin o 18 1.000 0.286 0.333 160 151 159 151 160 150 161 150 162 150 163 151 162 152 162 153 162 154 161 155 160 156 159 157 158 158 157 159 156 159 155 158 154 158 153 159 # end # begin o 18 1.000 0.286 0.667 165 440 166 439 166 438 165 439 164 439 163 439 162 439 161 439 160 439 159 439 158 438 157 438 156 437 155 436 156 436 155 435 154 434 153 433 # end # begin o 23 1.000 0.286 1.000 171 170 172 170 171 169 170 169 169 169 168 169 167 169 166 169 165 169 164 169 163 169 162 169 162 168 161 169 160 170 159 170 158 171 157 172 157 173 156 174 156 175 155 176 154 177 # end # begin o 13 1.000 0.429 0.000 159 222 160 221 160 222 159 223 158 224 158 225 158 226 158 227 157 228 157 229 156 230 155 231 154 232 # end # begin o 21 1.000 0.429 0.333 173 328 172 329 171 330 171 329 170 330 169 331 168 331 167 332 166 332 165 333 164 334 163 334 162 334 161 334 160 334 159 334 158 334 157 333 156 333 155 332 154 332 # end # begin o 21 1.000 0.429 0.667 157 138 157 137 158 137 159 137 160 138 161 139 162 140 163 141 164 142 163 143 163 144 163 145 162 145 161 145 160 144 159 143 158 142 157 141 157 140 156 139 155 140 # end # begin o 8 1.000 0.429 1.000 163 451 162 451 161 450 160 450 159 450 158 450 157 449 156 449 # end # begin o 12 1.000 0.571 0.000 167 427 167 426 166 427 165 427 164 428 163 428 162 429 161 429 160 430 159 430 158 431 157 431 # end # begin o 8 1.000 0.571 0.333 160 401 159 400 158 399 159 399 160 398 159 397 159 396 158 397 # end # begin o 9 1.000 0.571 0.667 163 310 164 309 163 309 162 310 161 311 160 312 159 312 160 311 159 310 # end # begin o 9 1.000 0.571 1.000 168 280 167 281 166 282 165 283 164 284 163 285 162 286 161 287 160 288 # end # begin o 24 1.000 0.714 0.000 182 219 183 218 182 218 181 219 180 219 179 220 178 221 177 222 176 222 175 223 174 223 173 223 172 224 171 224 170 225 169 225 168 226 167 227 166 228 165 229 164 230 163 231 162 232 161 233 # end # begin o 12 1.000 0.714 0.333 171 161 171 160 170 161 169 161 168 162 167 161 166 161 165 161 164 160 163 159 162 158 162 157 # end # begin o 11 1.000 0.714 0.667 166 204 166 203 165 204 165 205 165 206 164 207 164 208 164 209 164 210 163 211 162 212 # end # begin o 12 1.000 0.714 1.000 164 136 165 137 166 138 167 138 168 138 169 139 168 140 167 141 166 141 165 140 164 139 163 138 # end # begin o 10 1.000 0.857 0.000 171 159 171 158 170 157 169 156 168 155 167 154 166 154 165 155 164 155 163 156 # end # begin o 63 1.000 0.857 0.333 197 188 198 187 199 186 200 185 201 184 202 183 203 182 204 181 205 180 206 179 207 178 207 177 207 176 208 177 208 178 207 179 206 180 205 181 204 182 203 183 202 184 201 185 200 186 199 187 198 188 197 189 196 190 196 191 195 192 194 193 193 194 192 195 191 196 191 197 190 198 189 199 189 200 188 201 188 202 187 203 186 204 186 205 185 206 184 207 183 208 182 209 181 209 180 210 179 210 178 211 177 212 176 213 175 214 174 215 173 216 172 217 171 218 170 219 169 220 168 221 167 222 166 223 165 222 # end # begin o 102 1.000 0.857 0.667 254 266 253 267 252 268 253 268 254 267 255 266 255 265 254 264 253 263 252 262 252 261 252 260 252 259 251 259 250 259 249 259 248 259 247 260 246 261 245 261 244 262 243 262 242 263 241 264 240 264 239 265 238 266 237 266 236 267 235 267 234 268 233 269 232 270 231 271 231 270 230 271 229 271 228 272 227 272 226 273 225 273 224 274 223 274 222 275 221 276 220 277 219 277 218 278 217 279 217 278 216 279 215 279 214 280 213 281 212 281 211 282 210 282 209 283 208 283 207 284 206 284 205 285 204 285 203 286 202 287 201 287 200 288 199 288 198 289 197 290 196 290 195 291 194 291 193 292 192 293 191 293 190 294 189 295 188 296 187 296 186 297 185 297 184 298 183 299 182 299 181 300 180 300 179 301 178 301 177 302 176 303 175 303 174 304 173 304 172 305 171 305 170 306 169 307 168 307 167 308 166 308 165 309 # end # begin o 6 1.000 0.857 1.000 170 449 169 449 168 449 167 449 166 450 165 450 # end # begin o 8 1.000 1.000 0.000 169 196 169 195 168 196 168 197 168 198 168 199 167 200 166 201 # end # begin o 7 1.000 1.000 0.333 167 216 168 215 168 216 167 217 167 218 167 219 166 220 # end # begin o 6 1.000 1.000 0.667 170 392 169 391 169 390 169 389 168 388 167 387 # end # begin o 6 1.000 1.000 1.000 169 428 169 429 168 430 168 431 168 432 167 433 # end # begin o 10 0.000 0.000 0.333 175 453 176 453 175 454 174 454 173 454 172 454 171 454 170 454 169 453 168 453 # end # begin o 10 0.000 0.000 0.667 173 187 173 186 172 187 172 188 172 189 171 190 171 191 170 192 170 193 169 194 # end # begin o 7 0.000 0.000 1.000 171 207 171 206 170 207 170 208 170 209 170 210 169 211 # end # begin o 16 0.000 0.143 0.000 184 377 183 376 182 375 181 374 180 373 179 373 178 373 177 373 176 373 175 374 174 375 173 376 172 377 171 378 170 379 169 380 # end # begin o 7 0.000 0.143 0.333 169 386 169 385 170 384 171 384 170 383 169 382 169 381 # end # begin o 8 0.000 0.143 0.667 175 438 174 437 174 436 173 435 172 435 171 436 170 437 169 436 # end # begin o 8 0.000 0.143 1.000 172 201 173 200 173 201 172 202 172 203 172 204 171 205 170 204 # end # begin o 10 0.000 0.286 0.000 179 211 178 212 177 213 176 214 175 215 174 216 173 217 172 218 171 219 170 220 # end # begin o 21 0.000 0.286 0.333 173 151 172 150 171 149 171 148 172 149 173 150 174 151 175 151 176 152 177 151 178 150 179 149 179 148 178 147 177 146 176 145 175 145 174 145 173 145 172 145 171 146 # end # begin o 13 0.000 0.286 0.667 183 262 182 263 181 264 180 265 179 266 178 267 177 268 176 269 175 270 174 271 173 272 172 273 171 274 # end # begin o 8 0.000 0.286 1.000 172 401 173 402 174 403 175 404 174 405 173 404 172 403 171 402 # end # begin o 12 0.000 0.429 0.000 184 140 183 140 182 139 181 139 180 139 179 139 178 138 177 138 176 138 175 138 174 138 173 137 # end # begin o 11 0.000 0.429 0.333 177 190 177 189 176 190 176 191 176 192 176 193 175 194 175 195 175 196 174 197 173 198 # end # begin o 6 0.000 0.429 0.667 178 427 177 428 176 428 175 428 174 427 173 426 # end # begin o 18 0.000 0.429 1.000 185 447 184 447 183 447 182 446 181 446 180 445 179 446 178 446 177 446 177 445 178 444 178 443 177 442 176 442 175 441 174 440 173 439 173 438 # end # begin o 9 0.000 0.571 0.000 182 141 181 141 180 141 179 141 178 140 177 140 176 140 175 140 174 140 # end # begin o 12 0.000 0.571 0.333 178 175 179 174 179 175 178 176 178 177 177 178 176 179 176 180 175 181 175 182 175 183 174 184 # end # begin o 6 0.000 0.571 0.667 177 168 178 168 177 169 177 170 176 171 175 170 # end # begin o 6 0.000 0.571 1.000 176 400 177 400 178 401 177 402 176 402 175 401 # end # begin o 13 0.000 0.714 0.000 186 417 185 418 185 419 184 420 183 420 182 420 181 420 180 420 179 420 178 421 177 422 176 423 175 424 # end # begin o 9 0.000 0.714 0.333 182 142 183 143 182 144 181 144 180 144 179 143 178 143 177 143 176 143 # end # begin o 6 0.000 0.714 0.667 180 415 179 415 178 416 177 417 177 418 176 419 # end # begin o 7 0.000 0.714 1.000 179 184 179 183 178 184 178 185 178 186 178 187 177 188 # end # begin o 7 0.000 0.857 0.000 183 381 182 381 181 381 180 382 179 381 178 380 177 381 # end # begin o 7 0.000 0.857 0.333 178 385 178 386 179 386 180 386 180 385 179 384 178 384 # end # begin o 7 0.000 0.857 0.667 178 457 179 457 180 456 179 455 178 455 178 454 178 453 # end # begin o 17 0.000 0.857 1.000 181 161 180 162 180 161 181 160 182 160 183 160 184 161 185 162 185 163 184 164 185 164 184 165 183 165 182 165 181 164 180 164 179 163 # end # begin o 6 0.000 1.000 0.000 180 448 180 449 180 450 180 451 180 452 179 453 # end # begin o 7 0.000 1.000 0.333 180 181 181 180 180 180 181 179 181 178 181 177 180 176 # end # begin o 6 0.000 1.000 0.667 182 237 183 236 183 237 182 238 182 239 181 240 # end # begin o 15 0.000 1.000 1.000 189 165 190 164 189 164 188 165 187 166 187 167 186 168 185 169 185 170 184 171 184 172 183 173 183 174 183 175 182 176 # end # begin o 16 0.143 0.000 0.000 185 222 185 221 186 222 186 223 186 224 185 225 185 226 185 227 185 228 185 229 185 230 184 231 184 232 184 233 184 234 183 235 # end # begin o 61 0.143 0.000 0.333 240 283 241 282 240 282 239 283 238 284 238 283 237 284 236 284 235 285 234 285 233 286 232 286 231 287 230 287 229 288 228 288 227 289 226 290 225 290 224 290 223 290 222 291 221 292 220 292 219 292 218 293 217 294 216 293 215 294 214 295 213 296 212 296 211 297 210 297 209 298 208 299 207 299 206 300 205 300 204 301 203 302 202 302 201 303 200 303 199 304 198 304 197 305 196 305 195 306 194 306 193 307 192 307 191 308 190 308 189 309 188 309 187 310 186 310 185 311 184 311 183 312 # end # begin o 43 0.143 0.000 0.667 197 438 196 438 197 439 198 440 199 440 200 440 201 441 200 442 199 442 198 442 197 442 196 441 195 441 194 441 193 441 192 441 191 442 191 443 191 444 192 445 193 445 194 444 195 444 196 445 197 445 198 446 199 447 198 448 197 448 196 448 195 448 194 448 193 449 192 449 191 449 190 449 189 450 188 449 187 449 186 449 185 450 184 450 183 449 # end # begin o 21 0.143 0.000 1.000 185 381 186 380 187 379 187 378 186 377 186 376 185 375 185 374 185 373 186 372 186 371 185 370 185 369 185 368 184 367 184 366 185 365 186 364 186 363 185 364 184 365 # end # begin o 19 0.143 0.143 0.000 194 152 193 153 192 154 193 154 194 153 195 152 195 151 195 150 194 149 193 149 192 149 191 148 190 148 189 148 188 148 187 149 186 150 186 151 185 152 # end # begin o 9 0.143 0.143 0.333 187 252 188 251 189 250 188 250 187 251 186 252 185 251 185 250 185 249 # end # begin o 7 0.143 0.143 0.667 185 423 186 424 187 423 187 422 187 421 186 421 185 422 # end # begin o 6 0.143 0.143 1.000 191 154 190 155 189 155 188 155 187 154 186 153 # end # begin o 8 0.143 0.286 0.000 188 241 189 240 189 241 188 242 188 243 187 244 187 245 186 246 # end # begin o 13 0.143 0.286 0.333 191 391 190 391 191 390 191 389 191 388 190 387 191 387 190 386 189 385 189 384 188 383 187 382 186 383 # end # begin o 10 0.143 0.286 0.667 196 430 195 429 194 429 193 428 192 428 191 427 190 427 189 428 188 429 187 428 # end # begin o 20 0.143 0.286 1.000 197 354 196 355 197 356 198 357 199 357 199 356 198 355 199 355 198 354 197 353 196 353 195 353 194 352 193 351 192 350 191 350 190 350 189 349 188 348 188 347 # end # begin o 10 0.143 0.429 0.000 195 365 194 366 194 365 193 366 192 366 191 366 190 365 189 364 188 363 188 362 # end # begin o 11 0.143 0.429 0.333 195 427 196 428 196 427 195 426 194 426 193 426 192 426 191 425 190 424 189 424 188 424 # end # begin o 6 0.143 0.429 0.667 188 444 189 444 189 443 188 442 188 441 188 440 # end # begin o 13 0.143 0.429 1.000 201 141 200 141 199 141 198 141 197 141 196 141 195 141 194 141 193 141 192 141 191 141 190 141 189 141 # end # begin o 6 0.143 0.571 0.000 190 236 191 235 191 236 190 237 190 238 189 239 # end # begin o 7 0.143 0.571 0.333 193 342 192 341 192 340 192 339 191 339 190 339 189 340 # end # begin o 7 0.143 0.571 0.667 194 422 194 421 193 421 192 421 191 421 190 421 189 421 # end # begin o 9 0.143 0.571 1.000 198 143 197 143 196 143 195 143 194 143 193 143 192 143 191 143 190 143 # end # begin o 29 0.143 0.714 0.000 214 236 215 235 214 235 213 236 212 236 211 237 210 237 209 238 208 238 207 238 206 239 205 239 204 240 203 240 202 241 201 241 200 242 199 243 198 244 197 245 197 244 196 245 195 246 194 247 193 248 193 247 192 248 191 249 190 250 # end # begin o 12 0.143 0.714 0.333 193 344 194 345 195 346 196 347 195 348 195 347 194 346 193 345 192 344 191 343 190 342 190 341 # end # begin o 23 0.143 0.714 0.667 205 173 206 174 207 175 206 175 205 174 204 173 204 172 203 171 202 170 202 169 202 168 201 167 200 167 199 167 198 167 197 166 196 166 195 165 194 164 194 165 193 164 192 164 191 164 # end # begin o 9 0.143 0.714 1.000 193 206 194 205 194 206 193 207 193 208 193 209 193 210 192 211 191 210 # end # begin o 28 0.143 0.857 0.000 209 211 210 210 209 210 208 211 207 212 206 213 205 213 204 214 203 214 202 215 201 215 200 216 199 217 198 218 197 218 196 219 195 220 194 221 193 221 192 220 192 219 192 218 192 217 191 216 191 215 191 214 191 213 191 212 # end # begin o 30 0.143 0.857 0.333 212 216 213 215 214 214 215 213 214 213 213 214 212 215 211 216 210 216 209 217 208 217 207 218 206 219 205 220 204 220 203 221 202 222 201 222 200 223 199 224 198 225 197 226 196 227 195 228 194 229 193 230 192 231 192 232 192 233 191 234 # end # begin o 7 0.143 0.857 0.667 198 414 197 415 196 416 195 416 194 415 193 414 192 413 # end # begin o 13 0.143 0.857 1.000 203 157 204 158 204 159 203 158 202 157 201 156 200 155 199 154 198 154 197 154 196 155 195 156 194 155 # end # begin o 7 0.143 1.000 0.000 198 160 199 161 198 161 197 160 196 159 195 158 194 157 # end # begin o 45 0.143 1.000 0.333 225 190 224 190 225 189 225 188 224 187 223 186 222 185 221 184 220 183 220 182 219 181 220 181 219 180 218 179 217 178 216 178 215 178 214 178 213 178 212 179 211 180 210 181 209 182 208 183 207 184 206 185 205 186 204 187 204 188 204 189 203 190 202 191 201 192 200 193 200 194 199 195 199 196 198 197 198 198 197 199 197 200 196 201 195 202 195 203 194 204 # end # begin o 9 0.143 1.000 0.667 196 344 197 344 198 344 198 343 197 342 196 342 195 341 194 340 194 339 # end # begin o 16 0.143 1.000 1.000 202 396 203 397 203 398 203 399 204 400 203 401 202 401 201 400 200 400 199 399 198 398 197 398 196 397 195 396 194 395 194 394 # end # begin o 8 0.286 0.000 0.000 200 332 199 331 198 331 198 332 198 333 197 334 196 334 195 333 # end # begin o 7 0.286 0.000 0.333 199 337 200 338 199 338 198 337 197 336 196 337 195 338 # end # begin o 9 0.286 0.000 0.667 200 388 201 389 201 390 200 389 199 388 198 387 197 387 196 386 196 385 # end # begin o 15 0.286 0.000 1.000 206 454 205 454 206 455 207 456 206 457 205 457 204 457 203 457 202 457 201 457 200 457 199 457 198 457 197 457 196 457 # end # begin o 6 0.286 0.143 0.000 202 331 201 330 200 329 199 329 198 329 197 329 # end # begin o 10 0.286 0.143 0.333 200 376 199 376 200 377 201 378 200 379 199 380 200 380 199 381 198 382 197 383 # end # begin o 8 0.286 0.143 0.667 197 390 198 391 199 392 200 392 199 391 198 390 197 389 197 388 # end # begin o 7 0.286 0.143 1.000 200 374 201 373 202 372 202 371 201 372 200 373 199 374 # end # begin o 15 0.286 0.286 0.000 212 350 212 351 211 351 210 351 209 351 208 352 207 353 206 353 205 354 205 353 204 354 203 355 202 356 201 357 200 358 # end # begin o 24 0.286 0.286 0.333 223 458 222 459 221 458 220 458 219 457 218 456 217 455 216 454 215 453 214 452 213 451 212 451 211 451 210 451 209 451 208 452 207 452 206 452 205 452 204 452 203 451 202 451 201 451 200 450 # end # begin o 18 0.286 0.286 0.667 213 339 214 340 213 340 212 339 211 338 210 338 209 337 208 336 207 335 208 335 207 336 206 337 205 336 204 336 203 336 202 335 201 335 201 334 # end # begin o 11 0.286 0.286 1.000 211 341 210 341 209 341 208 340 207 340 206 339 205 339 204 339 203 338 202 338 201 338 # end # begin o 13 0.286 0.429 0.000 212 334 211 333 210 332 209 331 208 331 207 331 206 332 207 333 206 333 205 333 204 332 203 333 202 333 # end # begin o 9 0.286 0.429 0.333 204 362 204 361 203 362 203 363 203 364 203 365 203 366 203 367 202 368 # end # begin o 25 0.286 0.429 0.667 213 147 212 146 213 146 214 147 215 148 215 147 216 148 216 149 216 150 215 150 216 151 217 152 216 152 215 151 214 150 213 149 212 149 211 148 210 148 209 147 208 146 207 145 206 144 205 143 204 143 # end # begin o 11 0.286 0.429 1.000 213 155 213 154 212 155 211 156 210 156 209 155 208 155 207 154 206 153 205 152 204 151 # end # begin o 8 0.286 0.571 0.000 211 423 210 423 209 422 208 422 207 421 206 421 205 421 204 421 # end # begin o 10 0.286 0.571 0.333 213 153 212 152 212 153 211 152 210 151 209 150 208 150 207 149 206 149 205 149 # end # begin o 27 0.286 0.571 0.667 214 417 213 416 212 415 213 415 214 416 215 417 216 418 217 417 217 416 218 417 218 416 217 415 217 414 216 413 215 412 215 411 214 410 213 409 212 408 211 408 210 407 209 406 208 406 207 405 206 404 205 404 205 403 # end # begin o 7 0.286 0.571 1.000 210 381 210 380 209 381 209 382 210 383 209 383 208 382 # end # begin o 6 0.286 0.714 0.000 212 418 212 419 211 418 210 418 209 417 208 417 # end # begin o 10 0.286 0.714 0.333 216 429 215 428 214 427 214 428 213 427 212 426 211 426 210 426 209 425 208 424 # end # begin o 13 0.286 0.714 0.667 214 168 213 168 214 169 215 170 215 171 214 172 213 173 212 173 211 173 210 172 209 171 209 170 209 169 # end # begin o 6 0.286 0.714 1.000 214 289 213 290 212 291 211 292 210 293 209 293 # end # begin o 6 0.286 0.857 0.000 214 379 213 380 213 379 212 379 211 378 210 378 # end # begin o 23 0.286 0.857 0.333 228 201 229 200 230 199 230 198 229 199 228 200 227 201 226 201 225 202 224 202 223 203 222 203 221 204 220 204 219 205 218 205 217 206 216 207 215 207 214 208 213 208 212 209 211 210 # end # begin o 28 0.286 0.857 0.667 236 260 237 259 236 259 235 260 234 260 233 261 232 261 231 262 230 262 229 262 228 262 227 263 226 264 225 264 224 265 223 265 222 266 221 267 220 267 219 268 218 269 217 269 216 269 215 269 214 270 213 271 212 271 211 272 # end # begin o 12 0.286 0.857 1.000 221 384 221 383 220 384 219 385 218 385 217 385 216 384 215 384 214 384 213 384 212 384 211 383 # end # begin o 21 0.286 1.000 0.000 227 238 228 237 229 236 228 236 227 237 226 238 225 238 224 239 223 239 222 240 221 240 220 241 219 241 218 242 217 243 217 242 216 243 215 244 214 245 213 245 212 246 # end # begin o 42 0.286 1.000 0.333 228 318 227 319 226 320 226 319 227 318 228 317 229 316 230 315 231 314 232 313 233 313 234 312 234 311 233 311 232 311 231 311 230 312 229 313 228 314 227 315 226 316 225 317 224 318 223 319 222 320 222 321 221 322 220 323 219 324 218 325 218 326 217 327 216 328 216 329 215 330 215 331 214 332 214 333 214 334 214 335 213 336 212 337 # end # begin o 22 0.286 1.000 0.667 231 353 232 354 231 354 230 353 229 352 228 351 227 350 226 349 225 348 224 348 223 348 222 347 221 347 220 346 219 345 218 344 217 343 217 342 216 341 215 342 214 342 213 342 # end # begin o 8 0.286 1.000 1.000 216 443 216 444 217 444 216 445 215 446 214 447 214 448 213 449 # end # begin o 22 0.429 0.000 0.000 221 382 222 381 222 380 222 379 223 378 223 377 223 376 223 375 223 374 222 373 221 374 221 375 220 376 219 377 220 377 219 378 218 379 217 380 217 381 216 382 215 382 214 382 # end # begin o 21 0.429 0.000 0.333 225 321 226 321 225 322 225 323 224 324 224 325 223 326 222 327 222 328 221 329 220 330 220 331 219 332 218 333 218 334 217 335 217 336 217 337 217 338 216 339 215 340 # end # begin o 33 0.429 0.000 0.667 239 211 240 212 240 211 239 210 238 209 238 208 237 207 236 206 235 206 234 205 234 204 235 203 236 203 235 202 234 202 233 202 232 203 231 203 230 203 229 204 228 204 227 205 226 206 225 206 224 207 223 208 222 208 221 209 220 209 219 210 218 211 217 212 216 213 # end # begin o 6 0.429 0.000 1.000 219 234 220 233 219 233 218 234 217 235 216 235 # end # begin o 21 0.429 0.143 0.000 226 161 225 160 226 160 227 161 227 162 227 163 226 164 225 165 224 165 223 165 222 165 221 164 220 163 220 164 219 163 218 162 218 161 219 160 220 159 219 159 218 160 # end # begin o 8 0.429 0.143 0.333 223 357 222 356 221 356 220 355 219 354 219 353 219 352 219 351 # end # begin o 12 0.429 0.143 0.667 221 362 222 363 223 364 222 364 221 363 220 362 219 362 219 361 219 360 220 359 220 358 219 359 # end # begin o 48 0.429 0.143 1.000 256 450 257 451 258 452 259 453 258 453 257 452 256 451 255 450 254 449 253 449 252 448 251 448 250 447 249 446 248 445 247 445 246 444 245 443 244 443 243 442 242 442 241 441 240 440 239 439 238 438 237 437 237 436 236 435 235 434 234 433 233 433 232 433 231 433 230 432 229 431 228 430 227 429 226 428 226 427 225 426 224 425 223 424 222 423 221 422 220 421 221 421 220 420 219 419 # end # begin o 21 0.429 0.286 0.000 238 452 237 453 236 453 235 453 234 453 233 453 232 453 231 453 230 453 229 453 228 453 227 453 226 452 226 453 225 452 224 451 223 450 222 450 221 450 220 449 219 449 # end # begin o 12 0.429 0.286 0.333 229 197 230 197 229 196 228 195 227 194 226 193 225 192 224 192 223 193 222 193 221 194 220 195 # end # begin o 17 0.429 0.286 0.667 229 179 228 179 229 178 230 177 230 176 229 175 229 174 229 173 228 172 228 171 227 170 226 169 225 169 224 169 223 170 222 171 221 172 # end # begin o 9 0.429 0.286 1.000 227 219 228 218 227 218 226 219 225 219 224 220 223 220 222 221 221 221 # end # begin o 7 0.429 0.429 0.000 225 232 226 231 225 231 224 232 223 232 222 233 221 233 # end # begin o 9 0.429 0.429 0.333 229 312 228 313 227 314 226 315 225 316 224 317 223 318 222 319 221 318 # end # begin o 9 0.429 0.429 0.667 227 361 228 362 227 362 226 361 225 360 224 359 223 359 222 360 221 359 # end # begin o 12 0.429 0.429 1.000 232 160 231 160 230 159 229 159 228 158 227 157 226 157 225 156 224 156 223 155 222 154 222 153 # end # begin o 8 0.429 0.571 0.000 227 179 226 179 225 178 224 177 224 176 223 175 222 174 222 173 # end # begin o 11 0.429 0.571 0.333 232 159 232 158 231 157 230 156 230 157 229 156 228 155 227 155 226 154 225 153 224 152 # end # begin o 6 0.429 0.571 0.667 229 367 228 366 227 366 226 365 225 365 224 364 # end # begin o 7 0.429 0.571 1.000 230 443 229 443 228 443 227 443 226 443 225 442 225 441 # end # begin o 13 0.429 0.714 0.000 237 228 238 227 237 227 236 228 235 228 234 228 233 228 232 229 231 230 230 230 229 230 228 230 227 231 # end # begin o 15 0.429 0.714 0.333 237 332 238 331 238 330 237 331 236 332 235 333 234 334 234 335 233 336 232 337 231 338 230 338 229 338 228 338 227 337 # end # begin o 11 0.429 0.714 0.667 235 338 234 339 233 340 232 340 231 341 230 341 229 342 228 341 227 340 227 339 227 338 # end # begin o 8 0.429 0.714 1.000 234 216 235 215 234 215 233 216 232 216 231 217 230 217 229 218 # end # begin o 9 0.429 0.857 0.000 230 325 230 324 231 324 232 324 232 325 232 326 231 327 230 327 229 326 # end # begin o 7 0.429 0.857 0.333 234 351 233 350 233 351 232 350 231 349 230 348 229 348 # end # begin o 14 0.429 0.857 0.667 242 233 241 232 240 232 239 232 238 232 237 232 236 232 235 233 234 234 234 233 233 234 232 235 231 236 230 236 # end # begin o 10 0.429 0.857 1.000 240 286 239 287 238 287 237 288 236 288 235 289 234 290 233 290 232 291 231 292 # end # begin o 24 0.429 1.000 0.000 234 189 233 190 233 189 234 188 235 188 236 188 237 189 238 190 239 191 240 192 241 193 240 194 239 195 240 195 239 196 238 196 237 196 236 196 235 195 234 194 234 193 233 192 232 191 232 190 # end # begin o 7 0.429 1.000 0.333 235 362 234 362 233 362 232 361 232 360 233 359 232 358 # end # begin o 18 0.429 1.000 0.667 239 170 238 169 238 170 239 171 240 172 240 173 240 174 239 175 239 176 238 176 237 175 236 174 236 173 235 172 234 171 234 170 234 169 234 168 # end # begin o 19 0.429 1.000 1.000 251 269 251 268 250 269 249 269 248 270 247 270 246 271 245 271 244 272 243 272 242 273 241 273 240 274 239 275 238 275 237 276 236 276 235 277 234 277 # end # begin o 6 0.571 0.000 0.000 237 344 238 344 237 343 236 343 235 343 234 343 # end # begin o 10 0.571 0.000 0.333 240 355 241 356 242 356 241 355 240 354 239 355 238 356 237 355 236 356 235 357 # end # begin o 17 0.571 0.000 0.667 239 227 240 226 241 225 242 224 242 223 241 223 240 222 241 221 242 220 241 219 240 218 241 218 240 217 239 216 238 216 237 217 236 217 # end # begin o 12 0.571 0.000 1.000 247 325 246 326 245 325 244 325 243 324 242 324 241 325 240 324 239 325 238 325 237 326 236 326 # end # begin o 7 0.571 0.143 0.000 240 344 241 343 240 343 239 342 239 341 238 341 237 342 # end # begin o 11 0.571 0.143 0.333 243 365 242 364 241 363 240 362 240 361 239 360 238 359 238 358 238 357 237 358 237 357 # end # begin o 15 0.571 0.143 0.667 243 169 244 170 244 171 245 172 245 173 244 174 243 173 242 172 242 171 241 170 241 169 240 168 239 167 238 166 238 165 # end # begin o 19 0.571 0.143 1.000 249 254 250 253 251 252 252 251 252 250 251 251 250 252 249 253 248 254 247 254 246 255 245 255 244 256 243 256 242 257 241 257 240 258 239 258 238 259 # end # begin o 13 0.571 0.286 0.000 238 316 239 317 240 318 241 319 242 320 243 319 244 318 243 317 242 316 241 315 240 314 239 315 238 314 # end # begin o 8 0.571 0.286 0.333 243 397 244 398 243 398 242 397 241 397 240 396 239 395 238 394 # end # begin o 15 0.571 0.286 0.667 243 327 242 327 243 328 244 329 245 330 245 331 245 332 244 332 243 331 242 330 241 329 240 329 240 328 241 327 240 327 # end # begin o 7 0.571 0.286 1.000 240 338 240 339 241 339 242 339 242 338 241 337 240 337 # end # begin o 16 0.571 0.429 0.000 247 239 248 238 249 239 248 240 247 241 248 241 249 240 248 239 247 238 246 237 246 238 245 237 244 236 243 235 242 235 241 235 # end # begin o 20 0.571 0.429 0.333 243 183 242 184 242 185 243 186 244 187 245 188 246 189 247 189 248 189 249 188 250 187 249 186 249 185 248 184 247 183 246 183 245 182 244 181 243 182 242 183 # end # begin o 17 0.571 0.429 0.667 247 205 248 204 248 203 247 204 246 205 245 206 244 205 244 204 243 203 242 202 242 201 242 200 242 199 242 198 242 197 243 196 242 195 # end # begin o 12 0.571 0.429 1.000 251 276 250 277 249 278 250 278 249 279 248 280 247 280 246 280 245 281 244 281 243 281 242 282 # end # begin o 9 0.571 0.571 0.000 246 197 247 198 248 199 248 198 247 197 246 196 245 196 244 196 243 197 # end # begin o 10 0.571 0.571 0.333 250 344 251 345 250 345 249 346 248 345 247 345 246 344 245 343 244 342 244 341 # end # begin o 16 0.571 0.571 0.667 255 372 254 371 253 370 253 371 252 370 251 369 250 368 249 367 248 366 248 365 248 364 248 363 247 362 246 361 245 360 244 359 # end # begin o 16 0.571 0.571 1.000 258 395 259 396 258 396 257 395 256 395 255 394 254 394 253 393 252 393 251 392 250 392 249 391 248 391 247 390 246 390 245 390 # end # begin o 10 0.571 0.714 0.000 252 249 251 248 250 247 249 247 248 246 248 245 248 244 248 243 247 243 246 244 # end # begin o 26 0.571 0.714 0.333 259 328 258 329 257 330 257 331 258 330 259 329 260 328 260 327 260 326 259 325 259 324 258 323 257 322 256 323 255 324 254 323 253 322 253 321 253 320 252 319 251 319 250 319 249 320 248 320 247 320 246 320 # end # begin o 12 0.571 0.714 0.667 253 214 254 215 255 216 255 217 254 216 253 215 252 214 251 213 250 213 249 214 248 214 247 214 # end # begin o 14 0.571 0.714 1.000 256 221 256 220 255 221 254 221 253 221 252 222 251 222 250 221 249 220 248 219 248 218 248 217 247 216 247 215 # end # begin o 18 0.571 0.857 0.000 248 179 248 180 249 181 250 182 251 183 252 184 253 185 254 186 255 185 256 185 255 184 254 183 253 182 252 181 251 180 250 179 249 178 248 178 # end # begin o 22 0.571 0.857 0.333 255 230 254 229 254 230 255 231 256 232 255 233 254 234 253 234 252 234 251 235 250 234 249 233 248 232 248 231 248 230 248 229 249 228 250 227 251 226 250 226 249 227 248 228 # end # begin o 7 0.571 0.857 0.667 252 326 252 325 251 326 250 326 250 325 249 324 248 323 # end # begin o 11 0.571 0.857 1.000 253 354 254 355 253 355 252 354 251 353 250 352 249 351 248 350 248 349 248 348 248 347 # end # begin o 10 0.571 1.000 0.000 257 195 258 196 259 197 259 196 258 195 257 194 256 194 255 194 254 194 253 195 # end # begin o 13 0.571 1.000 0.333 259 198 260 199 259 200 259 201 258 202 257 202 256 202 255 201 254 200 254 199 254 198 253 197 253 196 # end # begin o 16 0.571 1.000 0.667 262 244 261 243 261 244 262 245 263 246 262 247 261 248 260 248 259 248 258 247 257 246 256 245 255 244 254 243 254 242 254 241 # end # begin o 6 0.571 1.000 1.000 259 266 258 267 257 267 256 268 255 269 254 270 # end # begin o 15 0.714 0.000 0.000 260 268 259 269 260 270 260 271 260 272 260 273 259 274 258 275 257 276 256 276 255 276 254 275 254 274 254 273 254 272 # end # begin o 10 0.714 0.000 0.333 258 240 259 241 260 242 261 242 260 241 259 240 258 239 257 239 256 239 255 240 # end # begin o 15 0.714 0.000 0.667 266 345 265 344 264 343 264 342 263 341 262 340 261 339 260 338 259 337 258 336 257 335 256 334 257 333 256 332 255 332 # end # begin o 14 0.714 0.000 1.000 267 351 266 352 266 351 265 352 264 353 263 354 262 354 261 355 260 355 259 355 258 355 257 356 256 356 255 355 # end # begin o 9 0.714 0.143 0.000 263 402 262 402 261 401 260 401 259 401 258 400 257 399 256 399 255 398 # end # begin o 8 0.714 0.143 0.333 261 261 261 260 260 261 259 261 258 261 257 261 257 260 256 261 # end # begin o 7 0.714 0.143 0.667 262 252 262 253 261 252 260 252 259 253 258 254 257 255 # end # begin o 12 0.714 0.143 1.000 265 211 266 212 266 211 265 210 265 209 264 208 263 207 262 207 261 207 260 207 259 207 258 208 # end # begin o 10 0.714 0.286 0.000 266 214 266 213 265 214 264 215 263 214 262 214 261 213 260 212 259 211 258 212 # end # begin o 9 0.714 0.286 0.333 262 198 262 197 261 196 261 195 260 194 260 193 259 192 259 191 259 190 # end # begin o 19 0.714 0.286 0.667 267 229 268 228 268 227 267 228 266 229 265 230 264 230 263 229 262 228 261 227 261 226 260 225 260 224 261 223 262 222 263 221 262 221 261 222 260 223 # end # begin o 8 0.714 0.286 1.000 265 398 266 399 265 399 264 398 263 398 262 397 261 397 260 396 # end # begin o 16 0.714 0.429 0.000 273 460 273 459 273 458 272 457 271 456 270 455 269 455 268 454 267 454 266 454 265 453 264 453 263 453 262 453 261 453 260 453 # end # begin o 10 0.714 0.429 0.333 265 199 264 198 264 197 264 196 263 195 263 194 262 193 262 192 261 191 261 190 # end # begin o 7 0.714 0.429 0.667 261 258 261 259 262 258 261 257 261 256 261 255 261 254 # end # begin o 20 0.714 0.429 1.000 274 350 275 351 275 350 274 349 274 348 273 347 272 346 271 345 271 344 270 343 270 342 269 341 268 340 267 339 266 338 265 337 265 336 264 335 263 334 262 333 # end # begin o 8 0.714 0.571 0.000 268 226 268 225 268 224 267 223 267 222 266 221 265 220 264 221 # end # begin o 11 0.714 0.571 0.333 272 238 271 237 271 236 271 235 270 234 269 234 268 234 267 235 266 235 265 236 264 235 # end # begin o 11 0.714 0.571 0.667 272 240 271 241 271 240 270 241 269 242 268 242 267 241 266 240 265 239 265 238 264 237 # end # begin o 14 0.714 0.571 1.000 266 267 265 266 265 267 266 268 267 267 268 266 268 265 268 264 269 263 268 262 267 262 266 263 265 264 264 263 # end # begin o 7 0.714 0.714 0.000 269 458 268 457 267 457 266 456 265 456 265 457 264 458 # end # begin o 18 0.714 0.714 0.333 268 208 267 207 267 208 268 209 268 210 269 211 270 211 271 210 270 209 270 208 270 207 270 206 269 205 269 204 268 203 268 202 267 201 266 201 # end # begin o 6 0.714 0.714 0.667 267 250 267 249 268 248 269 247 268 247 267 248 # end # begin o 13 0.714 0.714 1.000 267 254 267 255 268 256 269 255 270 254 271 253 271 252 271 251 270 251 269 252 268 253 268 252 267 253 # end # begin o 9 0.714 0.857 0.000 275 403 274 402 273 402 272 401 271 401 270 401 269 400 268 400 267 399 # end # begin o 12 0.714 0.857 0.333 278 409 277 408 276 407 276 408 275 407 274 406 273 406 272 406 271 405 270 405 269 404 268 404 # end # begin o 9 0.714 0.857 0.667 274 260 273 261 273 262 273 263 272 264 272 265 271 266 270 266 270 265 # end # begin o 14 0.714 0.857 1.000 272 224 272 225 273 226 274 226 275 225 274 224 274 223 274 222 273 221 273 220 273 219 273 218 272 217 271 218 # end # begin o 10 0.714 1.000 0.000 275 239 276 238 276 239 275 240 274 239 274 238 274 237 274 236 274 235 274 234 # end # begin o 18 0.714 1.000 0.333 275 247 275 246 275 245 275 244 276 244 277 245 277 246 277 247 277 248 277 249 276 250 276 251 276 252 275 252 274 251 274 250 274 249 274 248 # end # begin o 14 0.714 1.000 0.667 283 380 284 379 284 380 285 379 285 378 285 377 285 376 285 375 285 374 284 373 283 372 282 371 281 370 280 369 # end # begin o 7 0.714 1.000 1.000 307 454 307 453 307 452 306 451 306 450 305 449 305 448 # end # begin o 8 0.857 0.000 0.000 327 400 328 399 329 398 330 398 329 399 328 400 327 401 326 402 # end # begin o 24 0.857 0.000 0.333 345 362 344 363 345 363 344 364 343 365 342 366 341 367 340 368 339 369 338 369 337 370 336 370 335 371 334 371 333 370 332 369 331 368 330 367 329 366 329 365 329 364 329 363 329 362 329 361 # end # begin o 13 0.857 0.000 0.667 340 349 340 348 339 349 338 350 337 350 336 351 335 352 334 353 333 354 333 355 332 356 331 357 330 358 # end # begin o 12 0.857 0.000 1.000 334 335 334 334 334 333 334 332 334 331 334 330 334 329 334 328 334 327 335 326 335 325 334 326 # end # begin o 7 0.857 0.143 0.000 338 322 339 321 338 321 337 322 336 323 335 324 335 323 # end # begin o 14 0.857 0.143 0.333 342 424 343 423 343 424 342 425 342 426 341 427 341 428 340 429 340 430 339 431 339 432 338 433 337 434 336 435 # end # begin o 10 0.857 0.143 0.667 340 438 341 437 341 438 340 439 339 440 338 440 337 440 336 439 336 438 336 437 # end # begin o 6 0.857 0.143 1.000 340 347 340 346 341 345 342 344 341 344 340 345 # end # begin o 9 0.857 0.286 0.000 345 429 344 430 345 430 344 431 344 432 343 433 343 434 342 435 341 436 # end core++-1.7/ext/graphics/data/cissoid0100755000175000001440000000247710047037635016704 0ustar joachimusers######################################## # Cissoid of Diocles [Brieskorn-Knorrer, p.9] # Curve equation: # x^3 - 2y^2 = 0 # # Plot parameters: step size (eps) = 0.50000 # x1 = -2.00000, y1 = -5.80000 # x2 = 10.8000, y2 = 5.80000 # Core Library 1.7 ######################################## # New x-interval with 1 roots #======================================= # Curve No. 0 o 1 0.9 0.5 0.8 0. 0 ######################################## # New x-interval with 2 roots #======================================= # Curve No. 0 o 21 0.9 0.5 0.8 0.50000 -0.545928 1. -0.825 1.50000 -1.3795 2. -2.00001 2.50000 -2.79526 3. -3.67616 3.50000 -4.64165 4. -5.65685 4.50000 -6.75 5. -7.90569 5.50000 -9.12072 6. -10.3923 6.50000 -11.718 7. -13.0958 7.50000 -14.5237 8. -16 8.50000 -17.5232 9. -19.0919 9.50000 -20.705 10. -22.3612 10.5000 -24.0597 #======================================= # Curve No. 1 o 21 0.8 0.9 0.3 # buggy output: 0.50000 -24.0597 0.50000 0.545928 1. 0.825 1.50000 1.3795 2. 2.00001 2.50000 2.79526 3. 3.67616 3.50000 4.64165 4. 5.65685 4.50000 6.75 5. 7.90569 5.50000 9.12072 6. 10.3923 6.50000 11.718 7. 13.0958 7.50000 14.5237 8. 16 8.50000 17.5232 9. 19.0919 9.50000 20.705 10. 22.3612 10.5000 24.0597 core++-1.7/ext/graphics/data/test00100755000175000001440000000417410032655511016273 0ustar joachimusers# OUTPUT FROM OUR IMAGE TRANSFORM SOFTWARE # This shows a rotated square subdivided into subsquares p 4 0.183594 0.273438 0.28125 -1 4 -1.07246 4 -1.295 4.83 -1 4.90909 p 3 0.183594 0.273438 0.28125 -1 3.72973 -1.07246 4 -1 4 p 3 0.183594 0.273438 0.28125 0 5 -0.660945 5 0 5.17721 p 5 0.183594 0.273438 0.28125 0 4 -1 4 -1 4.90909 -0.660945 5 0 5 p 5 0.183594 0.273438 0.28125 0 3 -0.804348 3 -1 3.72973 -1 4 0 4 p 4 0.183594 0.273438 0.28125 0 2 -0.536232 2 -0.804348 3 0 3 p 4 0.183594 0.273438 0.28125 0 1 -0.268116 1 -0.536232 2 0 2 p 3 0.183594 0.273438 0.28125 0 0 -0.268116 1 0 1 p 4 0.183594 0.273438 0.28125 1 5 0 5 0 5.17721 1 5.44533 p 4 0.183594 0.273438 0.28125 1 4 0 4 0 5 1 5 p 4 0.183594 0.273438 0.28125 1 3 0 3 0 4 1 4 p 4 0.183594 0.273438 0.28125 1 2 0 2 0 3 1 3 p 4 0.183594 0.273438 0.28125 1 1 0 1 0 2 1 2 p 4 0.183594 0.273438 0.28125 1 0.268116 0 0 0 1 1 1 p 4 0.183594 0.273438 0.28125 2 5 1 5 1 5.44533 2 5.71344 p 4 0.183594 0.273438 0.28125 2 4 1 4 1 5 2 5 p 4 0.183594 0.273438 0.28125 2 3 1 3 1 4 2 4 p 4 0.183594 0.273438 0.28125 2 2 1 2 1 3 2 3 p 4 0.183594 0.273438 0.28125 2 1 1 1 1 2 2 2 p 4 0.183594 0.273438 0.28125 2 0.536232 1 0.268116 1 1 2 1 p 4 0.183594 0.273438 0.28125 3 5 2 5 2 5.71344 3 5.98156 p 4 0.183594 0.273438 0.28125 3 4 2 4 2 5 3 5 p 4 0.183594 0.273438 0.28125 3 3 2 3 2 4 3 4 p 4 0.183594 0.273438 0.28125 3 2 2 2 2 3 3 3 p 4 0.183594 0.273438 0.28125 3 1 2 1 2 2 3 2 p 4 0.183594 0.273438 0.28125 3 0.804348 2 0.536232 2 1 3 1 p 4 0.183594 0.273438 0.28125 3.56851 6 3.06878 6 3.535 6.125 3.535 6.125 p 5 0.183594 0.273438 0.28125 3.83663 5 3 5 3 5.98156 3.06878 6 3.56851 6 p 5 0.183594 0.273438 0.28125 4 4 3 4 3 5 3.83663 5 4 4.39068 p 4 0.183594 0.273438 0.28125 4 3 3 3 3 4 4 4 p 4 0.183594 0.273438 0.28125 4 2 3 2 3 3 4 3 p 5 0.183594 0.273438 0.28125 4 1.07246 3.72973 1 3 1 3 2 4 2 p 6 0.183594 0.273438 0.28125 4 1.07246 3.72973 1 3.72973 1 3 0.804348 3 1 3.72973 1 p 3 0.183594 0.273438 0.28125 4 4 4.10475 4 4 4.39068 p 4 0.183594 0.273438 0.28125 4 3 4.37286 3 4.10475 4 4 4 p 4 0.183594 0.273438 0.28125 4 2 4.64098 2 4.37286 3 4 3 p 4 0.183594 0.273438 0.28125 4 1.07246 4.83 1.295 4.64098 2 4 2 core++-1.7/ext/graphics/data/test10100755000175000001440000000240410032655511016266 0ustar joachimusers# file: input1 # Variation of input0 where # we have some open curves as well as polygons # RANGE OF THE POINTS: # xmin = -0.518, xmax = 1.932 # ymin = 0, ymax = 2.45 # ====================================triangle p 3 0.9 0.1 0.1 0 2 -0.264378 2 0 2.07088 # ====================================pentagon p 5 0.01 .7 .15 0 1 -0.268116 1 -0.518 1.932 -0.264378 2 0 2 # ==================================== p 3 0.583594 0.273438 0.28125 0 0 -0.268116 1 0 1 # ==================================== p 4 0.546094 0.5 0 1 2 0 2 0 2.07088 1 2.339 # ==================================== p 4 0.546094 0.5 0 1 1 0 1 0 2 1 2 # ==================================== p 4 0.546094 0.5 0 1 0.268116 0 0 0 1 1 1 # ==================================== p 4 0.583594 0.273438 0.28125 1 2 1.53465 2 1.414 2.45 1 2.339 # ==================================== p 4 0.583594 0.273438 0.28125 1 1 1.80277 1 1.53465 2 1 2 # ==================================== p 4 0.583594 0.273438 0.28125 1 0.268116 1.932 0.518 1.80277 1 1 1 # ====================================open curve: o 19 0.9 0.95 0.95 .2 2 -0.1 1.9 -0.2 1.7 -0.3 1.5 -0.2 1.3 0.06 1 0.28 1.03 0.5 1.1 0.6 1.2 0.7 1.3 0.8 1.5 0.98 1.9 1.1 1.97 1.2 2 1.3 1.95 1.37 1.85 1.4 1.8 1.45 1.6 1.4 1.5 # ====================================END core++-1.7/ANNOUNCEMENT0100644000175000001440000000705510145237430013614 0ustar joachimusers===================== SOFTWARE RELEASE ANNOUNCEMENT ========================== Nov 12, 2004: Core Library Version 1.7 is now available for free download at http://cs.nyu.edu/exact/core/ The Core Library (CORE) is a collection of C/C++ classes to support computation with real algebraic numbers (+,-,x,/,sqrt and rootOf), under a variety of precision requirements. Numerical nonrobustness is a widely acknowledged problem. It has proven particularly intractable in the context of geometric algorithms where numerical data and combinatorial data are intermixed in a strongly constrained manner. Recent research in computational geometry has demonstrated a variety of techniques based on the principles of Exact Geometric Computation (EGC) that can address such problems. A basic goal of our library is to make such techniques easily accessible to the wider community of programmers and researchers. Basic CORE Features: -- ease of use: Any C/C++ programmer can write numerical or geometric code that are fully robust just by calling our Library. -- ease of migration: Many existing C/C++ programs can be converted into robust CORE programs with minimal effort. -- natural and novel numerical accuracy model: Users can choose and get the numerical accuracy that best fit their applications. -- state of art technology: The precision-driven approach to EGC, best known root bounds, filter technology, etc, will be incorporated into the library as the field progresses. In this way, the user's application program will automatically be upgraded (at the cost of re-compilation). -- small system: It can serve as the "robust core" of your own applications. The tarred gzipped file is 0.8MB (including source, extensions, demos) when gmp and documentation is not included. -- well-tested on Sun Sparc, Linux, cygwin and Windows platforms. What is new with CORE 1.7 ? -- Introduction of plane algebraic curves and bi-variate polynomials -- An interactive version of Core Library based on Python (this has to be downloaded separately) -- Reorganized number classes with up to 20% speed improvement -- Enhancement of the univariate polynomial and real algebraic number facilities (GCD, resultant, square free part, etc) -- Compatibility with gmp 4.1.4, and gcc 3.4. -- Simple graphics facilities for curves -- Various bug fixes and improvements especially in Newton routines. We welcome your comments and input. -- Chee Yap (yap@cs.nyu.edu) Zilin Du (zilin@cs.nyu.edu) Vikram Sharma (sharma@cs.nyu.edu) Sylvain Pion (Sylvain.Pion@sophia.inria.fr) |============================================= | Exact Computation Project | Department of Computer Science | Courant Institute of Mathematical Sciences | New York University | 251 Mercer Street | New York, NY 10012, USA | | For further information: | http://cs.nyu.edu/exact/ | mailto://exact@cs.nyu.edu. | | Supported by NSF/ITR Grant CCR-0082056 and | NSF Grant CCF-0430836. |============================================= ===================== SOFTWARE RELEASE ANNOUNCEMENT ========================== core++-1.7/FAQs0100644000175000001440000002313610106261351012506 0ustar joachimusers====================================================================== file: FAQs Frequently Asked Questions for Core Library Last Update: Core Version 1.6, June 2003 $Id: FAQs,v 1.12 2004/08/11 00:06:01 exact Exp $ ====================================================================== 1. What license? A: Core Library is now under the terms of the Q Public License version 1.0. See the file LICENSE.QPL distributed with CORE. 2. What is the difference between the global variables defInputDigits and defBigFloatInputDigits? A: The former can be infinite, but not the latter. The former controls the precision with which the Real constructor converts a string input, e.g., Real("0.123", 100) means you want "0.123" converted with 100 digits of precision (remember that internally, "0.123" is not exact in BigFloat representation. If you omit "100", we use defInputDigits digits. If you call Real("0.123", CORE_INFTY) then this will be converted into the rational number 123/1000 which has no error. The latter (i.e., defBigFloatInputDigits) controls the precision of BigFloat constructor from string inputs: BigFloatRep::fromString(string,prec=defBigFloatInputDigits) NOTE: the function Expr:: operator >> (istream & is, Expr & e) calls Real(str, prec). 3. What is the speed of CORE programs? A: You can run and time all the test program by typing "make time" (only in unix-like platforms). The results will be stored under $(CORE_PATH)/tmp/DIAG_TIMING. For instance, for Core v.1.4.1, the overall result is: real 38.0 user 25.9 sys 2.0 using a g++ on Solaris 2.8 on SunBlade 1000 (2 x 750 MHz). Generally, if you compare individual arithmetic operations, you may expect 200-300 times slower than machine operations. However, in the context of an algorithm, this overhead can be greatly reduced (simply because arithmetic is only one aspect in the operations of an algorithm). Thus overhead is further reduced by the use of floating point filters. There is evidence from the literature that you can reduce the 100-300 times slowdown to a factor of 10 at Level II accuracy. When combined with filters, we may be able to arrive at a slowdown factor of 3 for problems such as 2-D Delaunay Triangulations. Even slowdown factor of 2 has been reported in the literature. These aspects have not been an emphasis of our current development. 4. How can I compile Core Library and CORE programs under Borland C++? A: Here is a suggestion from Andreas Fabri > The gmp.dll can be used as is. > The gmp.lib must be converted with Coff2omf which comes > with the free Borland compiler. > ______________________ > In file gmp.h, after the following line > > PORTME: What does Borland use? */ > > add one more defined statement: > > #if defined (__GNUC__) || defined (_MSC_VER) || defined(__BORLANDC__) > ______________________ > In Filter.h, find an implementation of ilogb. Change it to: > > #define ilogb(x) (int)_logb(x) > > ______________________ > In src/Makefile, the following line > > ar -rcs $(CORE_LIB) $? > > does not work. Please change it to: > > tlib /C /P512 ''$(CORE_LIB) \ > `ls *$.obj | awk '{for (i=1; i<=NF;++i){printf "+";print $$i}}'` > mv $(CORE_LIB) $(CORE_LIB_PATH) > > The mv is needed, because the slash in a path would be interpreted > as option by tlib. > > Note that Borland object files have extension ".obj", not ".o". > In CGAL, this extension is stored in the variable $OBJ_EXT. > > ______________________ 5. How can we use Core Library with the CGAL library? A: The latest Core Library (version 1.5 onwards) has provided an interface (i.e., a header file) which allows you to seamlessly incorporate Core Level 3 numbers into CGAL programs. Generally speaking, you should use Core Level 4 accuracy with CGAL. Examples can be found under the progs/cgal directory. Core Library can be downloaded as part of CGAL since 2003. 6. How can I build CORE projects under Visual C++? A: Please see the README file in the Core Distribution. 7. How can I fix Stack Overflow Problems? A: Please see the file "$(CORE_PATH)/doc/stackOverflow.txt" for details. 8. Which Core Accuracy Levels should I use? A: We recommend Levels 1 and 3 for most users. In this case, you either get the standard IEEE machine accuracy, or the guaranteed accuracy. Programs here can be just "standard C++" programs. Some primitive support for Levels 2 and 4 have been provided since Version 1.5. Because we redefine the primitive types "double" and "long", Level 3 may not be suitable for your applications. In this case, we suggest Level 4, where you must explicitly use "Expr" to get guaranteed accuracy. 9. How can I use CORE without overloading machine double or machine long? A: There are 3 possible solutions. One way is to use Core Level 4 accuracy: #define CORE_LEVEL 4 // Level 4 Accuracy #include "CORE/CORE.h" The second way is to directly include Expr.h: #include "CORE/Expr.h" The third way is to use the default Level 3 as usual #include "CORE/CORE.h" // Using default Level 3 Accuracy but whenever you want a machine double, you declare it as follows: machine_double x; machine_long y; x = 1.2; ... 10. Where do I look when when have installation problems? A: There are several things to think about (these are based on actual reports by users). -- When you download our distribution .tgz files, some web browsers, e.g. IE, will rename it to .tar file automatically so that some decompress programs, say WinZip, cannot properly handle it. In this case, just rename it back to .tgz, then install it as we described in README. -- 64-bit versus 32-bit libraries: Core Library has not been tested under 64-bit libraries. Since gmp-4.0.1, the default gmp installation under Sparc is to build a 64-bit library. Core's installation will force gmp to build a 32-bit library. HERE is some information from the official gmp site, www.swox.com/gmp: "On sparc v9 solaris 2.7, GMP uses ABI=64 by default, but this will fail if the kernel is in 32-bit mode. Use ./configure ABI=32 instead (in the future GMP will fall back to that automatically). But note that ABI=64 will give better performance, so consider rebooting into 64-bit mode (with ok boot kernel/sparcv9/unix)." -- missing functions from standard libraries: E.g., two functions, ilogb and finite, from Filter.h are sometimes missing from math.h. E.g., in the sun Platform, these declarations are found in ieeefp.h instead. (Fixed for Core Version 1.5) -- On redhat 9 (gcc 3.2.2), you may need to change the following two lines in filter.h to get it to compile: # extern "C" int finite(double); extern "C" int finite(double) throw(); # extern "C" int ilogb(double); extern "C" int ilogb(double) throw(); Thanks to Daniel Russell for this information. 11. Why are there inconsistent printout of numerical values? For instance, cout << "1.0 prints as " << 1.0 << endl; cout << "Expr(1.0) prints as " << Expr(1.0) << endl; /////////////////////////////////////////////////////////////////// // Here is the output from this program // // Bug Report from Janos Blazi // 100, .1000000e+1 (bug!) // 1, 1. (why not scientific format like above?) // 1, 1.00000 (why different from previous?) // +++++++++++++Below are OK+++++++++++++++ // 100.01, 10.0005 // 99.99, 9.99950 // // ANSWERS FROM Zilin: // // Expr("1.0") represents the number as a BigRat // (and outputs 1.) // Expr(1.0) represents the number as a double // (and outputs 1.00000) // This inconsistency is from Core 1.3 // Suggested solution of Chee: I think that we should print // some indicator of "error/no error" // (e.g., "1." means exact, while "1.0..." means inexact). // FOLLOWUP: I do not think there is an easy way out of our printing "1." for Expr("1.0"), and "1.0000" for Expr(1.0). This should be posed as an open problem. I think this should be notified in the tutorial. PROPOSAL: We refine our current "scientific versus positional" outputs to let user choose the version they like. Ultimately, we would like to be able to tell users whether they are seeing an approximation or not. E.g., 1. or 1.x means that there is no error ("x" means exact) but 1.0... means there is possible error. --Chee 11. Trouble Shooting -- large datasets can be a problem at Level 3 for two reasons: (1) Space Problem: this is because Expr objects can be arbitrarily larger than its Level 1 counterpart (i.e., machine doubles). (2) Speed Problem: Expr evaluation can be arbitrarily slower than Level 1 arithmetic. -- For example, Martin Held's tested Core Library on his ``industrial strength'' triangulation program on 2D points. about 32,000 points, the Core Version is feasible. 12. Known Issues -- When compiling Core Library v1.5 under Sun Workshop 6, the following error occurs: ~/core_v1.5.CC/progs/poly> make tSturm CC -c -O2 -I../../inc -I../../gmp/include tSturm.cpp -o tSturm.o "/opt/SUNWspro/WS6U2/include/CC/Cstd/./algorithm.cc", line 718: Error: "," expected instead of "__long_random". 1 Error(s) detected. make: *** [tSturm.o] Error 1 ====================================================================== END of FAQs ====================================================================== core++-1.7/LICENSE.QPL0100644000175000001440000001112207737336644013451 0ustar joachimusers THE Q PUBLIC LICENSE version 1.0 Copyright (C) 1999-2000 Troll Tech AS, Norway. Everyone is permitted to copy and distribute this license document. The intent of this license is to establish freedom to share and change the software regulated by this license under the open source model. This license applies to any software containing a notice placed by the copyright holder saying that it may be distributed under the terms of the Q Public License version 1.0. Such software is herein referred to as the Software. This license covers modification and distribution of the Software, use of third-party application programs based on the Software, and development of free software which uses the Software. Granted Rights 1. You are granted the non-exclusive rights set forth in this license provided you agree to and comply with any and all conditions in this license. Whole or partial distribution of the Software, or software items that link with the Software, in any form signifies acceptance of this license. 2. You may copy and distribute the Software in unmodified form provided that the entire package, including - but not restricted to - copyright, trademark notices and disclaimers, as released by the initial developer of the Software, is distributed. 3. You may make modifications to the Software and distribute your modifications, in a form that is separate from the Software, such as patches. The following restrictions apply to modifications: a. Modifications must not alter or remove any copyright notices in the Software. b. When modifications to the Software are released under this license, a non-exclusive royalty-free right is granted to the initial developer of the Software to distribute your modification in future versions of the Software provided such versions remain available under these terms in addition to any other license(s) of the initial developer. 4. You may distribute machine-executable forms of the Software or machine-executable forms of modified versions of the Software, provided that you meet these restrictions: a. You must include this license document in the distribution. b. You must ensure that all recipients of the machine-executable forms are also able to receive the complete machine-readable source code to the distributed Software, including all modifications, without any charge beyond the costs of data transfer, and place prominent notices in the distribution explaining this. c. You must ensure that all modifications included in the machine-executable forms are available under the terms of this license. 5. You may use the original or modified versions of the Software to compile, link and run application programs legally developed by you or by others. 6. You may develop application programs, reusable components and other software items that link with the original or modified versions of the Software. These items, when distributed, are subject to the following requirements: a. You must ensure that all recipients of machine-executable forms of these items are also able to receive and use the complete machine-readable source code to the items without any charge beyond the costs of data transfer. b. You must explicitly license all recipients of your items to use and re-distribute original and modified versions of the items in both machine-executable and source code forms. The recipients must be able to do so without any charges whatsoever, and they must be able to re-distribute to anyone they choose. c. If the items are not available to the general public, and the initial developer of the Software requests a copy of the items, then you must supply one. Limitations of Liability In no event shall the initial developers or copyright holders be liable for any damages whatsoever, including - but not restricted to - lost revenue or profits or other direct, indirect, special, incidental or consequential damages, even if they have been advised of the possibility of such damages, except to the extent invariable law, if any, provides otherwise. No Warranty The Software and this license document are provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Choice of Law This license is governed by the Laws of Norway. Disputes shall be settled by Oslo City Court. core++-1.7/Make.config0100644000175000001440000001563610144725451014053 0ustar joachimusers# file: Make.config # $Id: Make.config,v 1.45 2004/11/11 18:10:49 exact Exp $ # OVERVIEW: # ======== # This file defines the platform-dependent # information for other makefiles. # It is used to install the Core Library and subsequently # to facilitate compilation of user programs # This is the ONLY place during installation # where you need to set a value # There are only 4 variables to set (PLATFORM, LINKAGE, VAR, GMP_PREFIX). # For most users, it is sufficient to select PLATFORM, # and simply accept the defaults for the other variables. # Variables: # (1) PLATFORM determines the Operating System AND compiler. # Default is PLATFORM=gnu # (2) LINKAGE picks either a static or a shared library # Default is LINKAGE=static # (3) VAR determines the VARiant of compiled Core Library # Default is VAR="" (empty string) # (4) GMP_PREFIX -- you only need to set this if you are installing gmp # using our Makefile. This determines where gmp is installed. # Default is GMP_PREFIX= ${CORE_PATH}/gmp. # If you want to look at what options you have currently selected, just # > make options # in this directory! # For further examples of their usage, look at Makefiles found # under individual directories in ${CORE_PATH}/progs/. #=================================================================== # STEP (1) Choose PLATFORM option: # The following values for PLATFORM are available: # # 1. gnu, uses the GNU gcc/g++ compiler (the default) # PLEASE NOTE: that you can choose this option even if # your Operating System is a Sun or Linux. # 2. sun, uses the Sun WorkShop Compiler CC (verison 5.0) on # a solaris machine # 3. cyg, for cygwin under Microsoft Windows. This is almost the # same as gnu (except you cannot use shared library) # -------- # 4. sgi, uses the SGI MIPSpro Compiler CC (no longer supported) # #=================================================================== # Please make your choice the last assignment! ifndef PLATFORM PLATFORM=sgi PLATFORM=mingw PLATFORM=sun PLATFORM=cyg PLATFORM=gnu endif #=================================================================== # You can stop here if you are willing to accept the default values # for the other variables. The default should compile successfully # in most situations. #=================================================================== # #=================================================================== # STEP (2) Choose VARIANT option for compiled library: # (which will be placed in ${CORE_PATH}/lib) # Variants can be defined for debugging, level2, level3, etc. # # Among the common choices are # 1. VAR= -- this creates ${CORE_PATH}/lib/libcore++.a # This is the standard variant. # 2. VAR=Debug -- this creates ${CORE_PATH}/lib/libcore++Debug.a # This is the debugging version (executables will be # large because of all the debugging information) # 3. VAR=NoOpt -- this creates ${CORE_PATH}/lib/libcore++NoOpt.a # This turns off the optimizations which may # sometimes cause unpredictable behavior #=================================================================== # Please make your choice of VAR THE last assignment! # The assignment be overriden by the including makefile (e.g., under progs) ifndef VAR VAR=NoOpt VAR=Debug VAR=Opt VAR= endif #=================================================================== # STEP (3) Choose Dynamic or Static link library # You choose either dynamic or shared library # NOTE: if you choose shared library, be sure to update your # environment variable LD_LIBRARY_PATH as follows: # # for "csh", # # setenv LD_LIBRARY_PATH \ # ${CORE_PATH}/lib:${CORE_PATH}/gmp/lib:${LD_LIBRARY_PATH}. # # for "bash", # # export LD_LIBRARY_PATH= \ # ${CORE_PATH}/lib:${CORE_PATH}/gmp/lib:${LD_LIBRARY_PATH}. # # If your gmp is not under the ${CORE_PATH}, then modify appropriately. #=================================================================== ifndef LINKAGE LINKAGE=static LINKAGE=shared endif # detect extension name for executable files # and disable to build shared library under cygwin and mingw OS=$(shell uname) EXETYPE= CYGWIN=${findstring CYGWIN, ${OS}} ifeq (${CYGWIN}, CYGWIN) EXETYPE=.exe LINKAGE=static endif MINGW=${findstring MINGW, ${OS}} ifeq (${MINGW}, MINGW) EXETYPE=.exe LINKAGE=static endif #=================================================================== # STEP (4) Choose Directory for Installing GMP # Skip this if you already have gmp # Please make your choice the last assignment! #=================================================================== ifndef GMP_PREFIX GMP_PREFIX=${CORE_PATH}/gmp endif #=================================================================== # STOP HERE: Do not modify the script below. # # It will automatically set the compilation/linking flags #=================================================================== # Compilation Variable Definition # # CXX -- C++ Compiler # CC -- C Compiler (used only when compiling GMP) # AR -- Library Archiver # CXXFLAGS -- C++ Compiler flags for building test programs # CORE_CXXFLAGS -- C++ Compiler flags for building Core and Extension Library # LDFLAGS -- Linker flags for building test programs # CORE_LDFLAGS -- Linker flags for building Core and Extension Library # TEMP FIX (CHEE: PICFLAG=-fPIC causes warning on cygwin?) PICFLAG = ifeq ($(PLATFORM), sgi) # NOTE: The SGI option has been deprecated since Version 1.4 # (1) SGI compiler # -- This has been tested on IRIX (not tested) ifndef CXX CXX=CC endif ifndef CC CC=cc endif AR=ar rcs CXXFLAGS=-n32 -mips4 -ptused -prelink -w -cckr -O \ -LANG:ansi-for-init-scope=on -lm else ifeq ($(PLATFORM), sun) # (2) SUN's compiler # -- This has been tested on sun sparcs ifndef CXX CXX=CC endif ifndef CC CC=cc endif AR=${CXX} -xar -o ifeq (${VAR}, Debug) CXXFLAGS=-g else CXXFLAGS=-O -DNDEBUG endif ifeq (${LINKAGE}, shared) PICFLAG=-KPIC LDFLAGS= CORE_CXXFLAGS=${CXXFLAGS} ${PICFLAG} CORE_LDFLAGS=-G else LDFLAGS=-Bstatic CORE_CXXFLAGS=${CXXFLAGS} CORE_LDFLAGS= endif else # (3) GNU's g++ compiler (the default) # -- this covers both PLATFORM=gnu and PLATFORM=cyg # -- This has been tested on Linux and Sun Sparc # ifndef CXX CXX=g++ endif ifndef CC CC=gcc endif AR=ar rcs ifeq (${VAR}, Debug) CXXFLAGS=-g -Wall else CXXFLAGS=-O -Wall -DNDEBUG endif ifeq (${VAR}, Opt) CXXFLAGS=-O2 -Wall -DNDEBUG endif ifeq (${VAR}, NoOpt) CXXFLAGS=-Wall endif ifeq (${LINKAGE}, shared) PICFLAG=-fPIC LDFLAGS= CORE_CXXFLAGS=${CXXFLAGS} ${PICFLAG} CORE_LDFLAGS=-shared else LDFLAGS=-static LDFLAGS= CORE_CXXFLAGS=${CXXFLAGS} CORE_LDFLAGS= endif endif endif # GMP's configure program will try to build 64-bits library on Sun platform, # so we have to force it to build 32-bits library. ifeq ($(OS), SunOS) GMP_ABI="ABI=32" endif core++-1.7/Makefile0100644000175000001440000002060210143731464013434 0ustar joachimusers# Makefile for Core Library # $Id: Makefile,v 1.23 2004/11/08 17:56:04 exact Exp $ ################################################################# # # Warning: this make file will best work with GNU's gmake # ################################################################# ################################################################# # Core Library Parameters ################################################################# PACKAGE=core VERSION=1.7 # official release will have x.y, and intermediate # releases will be x.y.z (for z=1,2,etc) CORE_PATH:=$(shell pwd) CVSROOT=/home/exact/cvsroot SUB_DIRS=src ext doc lib progs # The following is needed to make sure that CC are properly # for installing gmp include Make.config ################################################################# # gmp paths (Make your choice the last one) ################################################################# gmp := gmp-3.1.1 gmp := gmp-4.0.1 gmp := gmp-4.1 gmp := gmp-4.1.2 gmp := gmp-4.1.4 ################################################################# # Default make target ################################################################# # This default is used when you want to change the Core library # without changing platform or gmp. default: core ################################################################# # Make everything in one step ################################################################# # This makes both the gmp and core library all: first second third testgmp fourth fifth ################################################################# # Core Library Installation Steps ################################################################# # First Step: configure for gmp first configure: @echo "Configure for GMP..." -gzip -cd ${gmp}.tar.gz | tar xvf - -cd ${gmp}; ./configure CC=${CC} ${GMP_ABI} --prefix=${GMP_PREFIX} 2>&1 \ | tee ${CORE_PATH}/tmp/DIAG_CONFIG @echo "See file tmp/DIAG_CONFIG for screen output" @echo "" # Second Step: build gmp libraries second gmp: @echo "Build GMP Library..." -${MAKE} -C ${gmp} 2>&1 | tee ${CORE_PATH}/tmp/DIAG_GMP @echo "See file tmp/DIAG_GMP for screen output" @echo "" # Third Step: install gmp libraries and include files third: @echo "Install GMP Library..." -${MAKE} -C ${gmp} install 2>&1 \ | tee ${CORE_PATH}/tmp/DIAG_GMPINSTALL @echo "See file tmp/DIAG_GMPINSTALL for screen output" @echo "" # Fourth Step: build Core Library, Extensions and Sample Programs fourth: core ################################################################# # Test gmp ################################################################# testgmp: -${MAKE} -C ${CORE_PATH}/progs/generic testgmp \ 2>&1 | tee ${CORE_PATH}/tmp/DIAG_TESTGMP ################################################################# # Basic Core Functions ################################################################# # This target is also useful when you need to re-compile the Core # Library. Typically, you may need a "debugging version" # of CORE (for the debugger to work). In this case, you set # VAR=Debug in Make.config, and type "make core". This would # create the library file "libcoreDebug.a" or "libcoreDebug.so". core: corelib corex demo # Make Core Library corelib: @echo "Build Core Library..." -${MAKE} -C src 2>&1 | tee ${CORE_PATH}/tmp/DIAG_CORELIB @echo "See file tmp/DIAG_CORELIB for screen output" @echo "" # Make Core Extension Library corex: @echo "Build Core Extension Library..." -${MAKE} -C ext 2>&1 | tee ${CORE_PATH}/tmp/DIAG_COREX @echo "See file tmp/DIAG_COREX for screen output" @echo "" # Make Sample Core Programs demo: corelib corex @echo "Build Sample Programs..." -${MAKE} -C progs 2>&1 | tee ${CORE_PATH}/tmp/DIAG_BUILD_DEMO @echo "See file tmp/DIAG_BUILD_DEMO for screen output" @echo "" # Run Test on Sample Core Programs fifth test: @echo "Testing Sample Programs..." -${MAKE} -C progs test 2>&1 | tee ${CORE_PATH}/tmp/DIAG_TEST_DEMO @echo "See file tmp/DIAG_TEST_DEMO for screen output" @echo "" # Basic Timing: just time all the tests sixth time: @echo "Timing Sample Programs..." -time ${MAKE} test 2>&1 | tee ${CORE_PATH}/tmp/DIAG_TIME @echo "See file tmp/DIAG_TIME for screen output" @echo "" # Run More Test on Sample Core Programs seventh moretest: @echo "More Testing of Sample Programs..." -${MAKE} -C progs moretest 2>&1 | tee ${CORE_PATH}/tmp/DIAG_MORETEST_DEMO @echo "See file tmp/DIAG_MORETEST_DEMO for screen output" @echo "" ################################################################# # Check Options ################################################################# opt options check: @echo "YOUR CURRENT CORE ENVIRONMENT VARIABLES ARE: " @echo " PLATFORM: " ${PLATFORM} @echo " LINKAGE: " ${LINKAGE} @echo " VAR(iant): " ${VAR} @echo " GMP_PREFIX: " ${GMP_PREFIX} @echo " PACKAGE: " ${PACKAGE} @echo " VERSION: " ${VERSION} @echo " CORE_PATH: " ${CORE_PATH} @echo " AR(chiver): " ${AR} @echo " CC(compiler): " ${CC} @echo " CXX(compiler): " ${CXX} @echo " CXXFLAGS: " ${CXXFLAGS} @echo " CORE_CXXFLAGS " ${CORE_CXXFLAGS} @echo " LDFLAGS: " ${LDFLAGS} @echo " CORE_LDFLAGS: " ${CORE_LDFLAGS} @echo " EXETYPE: " ${EXETYPE} @echo " OS: " ${OS} allopt alloptions: @echo "YOUR CURRENT CORE ENVIRONMENT VARIABLES ARE: " @echo " (possible alternatives are listed in parenthesis)" @echo "" @echo " PLATFORM: " ${PLATFORM} " (cyg,gnu,sun,mingw,sgi)" @echo " LINKAGE: " ${LINKAGE} " (static,shared)" @echo " VAR(iant): " ${VAR} " (\"\",Debug,NoOpt)" @echo " GMP_PREFIX: " ${GMP_PREFIX} " (..your choice..)" @echo " PACKAGE: " ${PACKAGE} @echo " VERSION: " ${VERSION} @echo " CORE_PATH: " ${CORE_PATH} @echo " AR(chiver): " ${AR} @echo " CC(compiler): " ${CC} @echo " CXX(compiler): " ${CXX} @echo " CXXFLAGS: " ${CXXFLAGS} " (..compiler flags..)" @echo " CORE_CXXFLAGS " ${CORE_CXXFLAGS} @echo " LDFLAGS: " ${LDFLAGS} " (..load flags..)" @echo " CORE_LDFLAGS: " ${CORE_LDFLAGS} @echo " EXETYPE: " ${EXETYPE} " (\"\",.exe)" @echo " OS: " ${OS} " (automatic)" ################################################################# # Cleaning Up files ################################################################# # clean_garbage: Remove all temp files # clean_garbage: find . -name "*.exe.stackdump" -print | xargs -i \rm -rf {} find . -name ii_files -print | xargs -i \rm -rf {} find . -name SunWS_cache -print | xargs -i \rm -rf {} find . -name "*\~" -print | xargs -i \rm -f {} find . -name "typescript" -print | xargs -i \rm -f {} # clean: Remove object files # This is used if you want to compile a different version of the # Core Library (but on the same platform) # clean: @list='$(SUB_DIRS)'; for dir in $$list; do \ if test -d "$$dir"; then ${MAKE} -C "$$dir" clean; fi; \ done # cleangmp: Clean the gmp directory only # NOTE: to recover from this step, you need to do "make second" to # recompile gmp. This is not cheap. # cleangmp: -@${MAKE} -C ${gmp} clean # veryclean: Remove executables as well as object files. # This is done when you need to rebuild everything (e.g., you need # to recompile the library for a new platform) # "veryclean" subsumes "clean" (although this is somewhat implicit) # but does not subsume "cleangmp" (which is expensive!) # NOTE: after this step, you need to rebuild the Core Library from # step "make third" and subsequent. # veryclean: @list='$(SUB_DIRS)'; for dir in $$list; do \ if test -d "$$dir"; then ${MAKE} -C "$$dir" veryclean; fi; \ done -@test -z "${CORE_PATH}/tmp/DIAG_*" || rm -f ${CORE_PATH}/tmp/DIAG_* # superclean: clean everything # superclean: veryclean cleangmp -@rm -rf ${CORE_PATH}/gmp ################################################################# # Making Core Distributions ################################################################# # commit all current changes to CVS cvs commit: cvs commit # Make CVS-based distributions (base distribution and full distribution) base: (cd ..; cvs -d ${CVSROOT} co corelib; \ tar cFFvf - corelib | \ gzip -9 > ${PACKAGE}_v${VERSION}.tgz ) # Make CVS-based incremental distributions (gmp distribution and doc distribution) full: (cd ..; cvs -d ${CVSROOT} co corelib; \ cp ${gmp}.tar.gz corelib; \ tar cFFvf - corelib | \ gzip -9 > ${PACKAGE}_v${VERSION}.full.tgz ) ################################################################# # END OF CORE Makefile ################################################################# core++-1.7/README0100644000175000001440000011262610145237641012664 0ustar joachimusers************************************************************ * Core Library * * A C/C++ Library for Robust Computation * * Department of Computer Science * Courant Institute of Mathematical Sciences * New York University * 251 Mercer Street * New York, NY 10012 * USA * * http://cs.nyu.edu/exact/ * * Copyright (c) 1998-2004 by Exact Computation Project, NYU * * $Id: README,v 1.46 2004/11/12 22:56:33 exact Exp $ ************************************************************* README FILE: TABLE OF CONTENTS 1) ORIENTATION 2) DIRECTORIES AND FILES 3) DOWNLOAD AND INSTALLATION 4) NEWS, PLANS AND BUGS 5) ACKNOWLEDGEMENT AND HISTORY 6) LICENSE INFORMATION ************************************************************* 1) ORIENTATION This is Core Library Version 1.7, released on Nov 12, 2004. The Core Library is a collection of C/C++ classes for exact computation with real algebraic numbers. It embodies our precision-driven approach and is useful for robust numerical (especially geometric) algorithms. The library supports the Exact Geometric Computation (EGC) philosophy through its novel and easy-to-use notion of accuracy levels. We define four "Core Accuracy Levels": Level I: Machine Accuracy This is the IEEE 754 Standard. Level II: Arbitrary Accuracy If a user specify "1000 bits" of accuracy, this means no overflow/underflow occurs as long as long as number sizes do not exceed 1000 bits. Level III: Guaranteed Accuracy The user can specify "10 bits" (relative or absolute) and any computed number will have at least 10 bits of accuracy. Level IV: Mixed Accuracy The above three levels are intermixed. Level III is the most interesting level. It is the default level, Ideally, a single C++ program can be compiled to run at any chosen level. Level IV is not fully defined at the present time. The current library focuses on Level III. Most programs should be able to run both Levels I and III. Such multi-level capability in a single program is useful for debugging and program development. A key design goal is to allow any standard C/C++ program to access critical CORE facilities with minimal changes to the program. Most basic standalone C++ programs can be ``CORE-ized'' with little fuss. In the ideal case, one only has to insert the following statement #include "CORE/CORE.h" following all the standard include statements. The default accuracy is Level III. At this level, a variable with the machine type "double" or "long" is redefined as an instance of the class "Expr" (a C++ class). All comparisons involving Expr are error-free, provided your expressions involve only the four arithmetic operations and square-roots. Example: double x, y, a, b; x = 2; y = 3; a = sqrt(x) + sqrt(y); b = sqrt(x + y + 2*sqrt(x)*sqrt(y)); if (a == b) cout << "Equal (CORRECT!)\n"; else cout << "Not Equal (ERROR!)\n"; When run in Level III, the expressions for a and b are always equal regardless of the values (x=2 and y=3) assigned to x and y. In the framework of EGC, error-free comparisons amount to computing the ''exact geometry'' in your programs. Nonrobustness issues from round-off errors are thereby abolished. A tutorial in this "doc" subdirectory, plus the many sample programs in the "progs" subdirectory, should allow you to start writing CORE programs rather quickly. In particular, you may use the examples in progs/generic as template to develop your own CORE programs. For extra functionality, we define domain specific "CORE eXtensions" (COREX for short). These include a linear algebra COREX and a geometry COREX. They are still rudimentary. The Core Library is relatively small. The "base distribution" of Version 1.7, which includes source code and examples, is less than 800 KB. The "full distribution" which includes the base distribution, documentation and gmp, is over 3.5MB. The library has been tested on solaris, linux, cygwin and Windows. It is also fully compatible with CGAL. NOTE ON TERMINOLOGY. "Core" is not an abbreviation; we chose this name to suggest its role as the "numerical core" for robust geometric computations. It is also to remind ourselves (the designers) that "cores" are usually small. However, we use the capitalized sequence "CORE" as a shorthand for "Core Library" (e.g., a CORE program). ************************************************************* 2) DIRECTORIES AND FILES The Core Directory is denoted ${CORE_PATH} in these notes. The base distribution has the following files and subdirectories: README This file ANNOUNCEMENT Release announcement LICENSE.QPL The Q Public License FAQs Frequently asked questions Makefile Makefile for the whole library Make.config Compilation flags for CORE programs ext/ CORE eXtensions (linear algebra, geometry, etc) inc/ The header files. lib/ The compiled library is found here. progs/ Sample programs that use Core Library. src/ Source code for the Core Library. tmp/ Temporary files (e.g., installation diagnostic messages) win32/ Windows related files (can be deleted for unix-base) gmp/ gmp installation directory (may be a link). This directory may be missing if you have your own gmp. The full distribution has these additional files and directories: doc/ Core Library Documentation gmp-xxx.tar.gz GNU's gmp distribution (version xxx) gmp-xxx/ GNU's gmp directory for unpacking and compiling (can be deleted after installing gmp) ************************************************************* 3) DOWNLOAD AND INSTALLATION 3.0) PREREQUISITE: You must have "make" (GNU's gmake is recommended), "tar" and "gzip". For compilers, "g++" is also recommended but not required. In turn, "g++" will need "m4" (the macro preprocessor). We DO NOT assume that you already have "gmp" (GNU's multiprecision number package). For Windows: you could replace g++ with Visual C++. However we highly recommend "Cygwin" from Red Hat. This is a free and easy-to-install Unix-like environment that sits on top of all versions of Windows. It comes with g++, make, tar, gzip that are needed to install the Core Library. The big bonus of Cygwin are (I) There is no need for dual booting; (II) There is no need to partition your disc; (III) You can share files between Windows and Cygwin; (IV) There is a convenient setup.exe utility that allows you to install / update / re-install / uninstall any component in a large suite of Unix tools and utilities, directly from the web. You can download Cygwin at http://www.cygwin.com. 3.1) DOWNLOAD. First download the file core_vX.Y.Z_full.tgz (for version X.Y.Z). The current distribution is X.Y=1.7.0. The website for download is http://cs.nyu.edu/exact/core. There are three distributions, a "base distribution", a "standard distribution" and a "full distribution". The standard distribution includes the base distribution and documentation. The full distribution includes the standard distribution, plus gmp. The main steps here describes on installation from a full distribution in a unix-like environment: it is the simplest to install. But see 3.9) below for *variant* installations: these include installing only the base distribution, using dynamic libraries, Windows platform, re-installing the Core Library, building Debugging Versions of Core Library, etc. The overall installation time is 20-40 minutes on a typical machine. If you already have gmp, the time is halved (on Pentium III 800 MHz, 256 MB RAM, it takes 10 minutes). 3.2) UNPACK. In your computer, go to the directory where you wish to install the Core Library. If this location is the value of the environment variable CORE_INSTALL (in unix), you would do: % cd $(CORE_INSTALL) (% denotes the unix prompt in these instructions) Move the file core_vX.Y_full.tgz there. Now unzip and untar the file by typing: % gzip -cd core_vX.Y_full.tgz | tar xvf - This creates a directory called core_vX.Y. All the files and directories mentioned in 2) above, including this README file, should now be in this directory. In the following, the variable CORE_PATH denotes the full path name of this newly created directory. Hence, $(CORE_PATH) is really $(CORE_INSTALL)/core_vX.Y 3.3) There are three stages of installation: STAGE 1 -- gmp-related installation STAGE 2 -- create the core library, extensions, samples STAGE 3 -- run tests and timings The screen output from the individual steps in these stages are stored in the files ${CORE_PATH}/tmp/DIAG_* for your diagnostics. But before any of these steps, you must choose your PLATFORM. PLATFORM is a combination of OS plus compiler. This variable is set in the Make.config file: % cd $(CORE_PATH) % vi Make.config -- use "vi" or your favorite editor to edit the file ``Make.config''. -- Follow the instructions in the file. -- For most users, you only need to set the PLATFORM variable. To see what your chosen options are, do: % make opt[ions] -- this will show the various global settings -- e.g. PLATFORM=gnu, LINKAGE=static, VAR=, etc. 3.4) STAGE 1: INSTALLING GMP PRELIMINARY STEP: For most Unix-like OS (e.g., Solaris, Linux), gmp will automatically build BOTH a static and a dynamic library. In this case, most compilers will link to the dynamic gmp library. Therefore, you need to add the path of your dynamic gmp library to the environmental variable LD_LIBRARY_PATH. E.g., in csh/tcsh, % setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${your_gmp_install_dir}/lib E.g., in bash, % export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${your_gmp_install_dir}/lib In option b) below, there is an example where ${your_gmp_install_dir}=/usr/local. NOW we are ready to proceed with installing gmp. Choose one of the following three situations that apply to you: a) You already have GMP header files and library files on your system directory, AND they can be found by your C++ compiler. In this case, there is nothing to do. In any case, if you want to quickly check if you are in this best case situation, do the following: % cd ${CORE_PATH} % make testgmp This test simply computes 12345 * 67890. If the answer 838102050 is shown, you have passed this test and you may go to STAGE 2. b) If you have compiled and installed GMP in some directory which cannot be found by your compiler, then make a symbolic link from ${CORE_PATH}/gmp using the following command: % cd ${CORE_PATH} % ln -s ${your_gmp_install_dir} gmp % make testgmp If you pass this test, you can go to STAGE 2. E.g., The default gmp installation will install the header file and library files in /usr/local/include and /usr/local/lib (respectively). Hence, in this case, ${your_gmp_install_dir}=/usr/local. c) If you need to install gmp, and assuming you have downloaded our full distribution, follow the following steps: % cd ${CORE_PATH} % make first -- this is equivalent to "make configure" -- it uses the configuration program in gmp -- it searches for system information (compiler, CPU, files, etc). -- screen output from this process is placed in the file ${CORE_PATH}/tmp/DIAG_CONFIG. (E.g., if you do not have m4, the error will be detected here.) % make second -- this is equivalent to "make gmp" -- this compiles gmp -- screen output from this process is placed in the file ${CORE_PATH}/tmp/DIAG_GMP % make third -- this installs gmp -- screen output from this process is placed in the file ${CORE_PATH}/tmp/DIAG_GMPINSTALL % make testgmp -- you must pass this test to continue in the file ${CORE_PATH}/tmp/DIAG_TESTGMP IMPORTANT: Our top level make file is written for GNU's gmake. The remaining make files in subdirectories should work with other make programs. The first and second steps takes 10-20 minutes. 3.5) STAGE 2: BUILD CORE LIBRARY. % cd ${CORE_PATH} % make fourth -- this is equivalent to a plain "make", or "make core", or "make corelib; make corex; make demo". -- screen output is placed in the files ${CORE_PATH}/tmp/DIAG_X where X = CORELIB, COREX or BUILD_DEMO. This creates the library files "libcore++.a", "libcorex++_level1.a" and "libcorex++_level3.a", and store them under ${CORE_PATH}/lib. The source files for the Core Library are found in ${CORE_PATH}/src. If you only want to make "libcore++.a", type "make" while in ${CORE_PATH}/src. IMPORTANT: the compilation settings for STAGE 2 are found in ${CORE_PATH}/Make.config. See the Make.config file and also step 3.9) below. 3.6) STAGE 3: TESTING AND TIMING. If you had chosen LINKAGE to be "shared" above, then make sure that your LD_LIBRARY_PATH contains the directory ${CORE_PATH}/lib (see 3.9(4) below). % cd ${CORE_PATH} % make fifth -- equivalent to "make test". Screen output is placed in the file ${CORE_PATH}/tmp/DIAG_TEST_DEMO This tests all the previously compiled programs in ${CORE_PATH}/progs. Many of the programs are self-validating: if an unexpected value is computed, it will output "ERROR!" instead of "CORRECT!". Sometimes, the output says "INCORRECT!" but this is not considered an error (e.g., with Level I accuracy, this is expected). You can browse the output in the DIAG_TEST_DEMO file (search for the word "ERROR" to catch obvious errors). You can also time it: % make sixth -- equivalent to "make time"; it uses the "time" utility to measure the time "make test" -- screen output is placed in the file ${CORE_PATH}/tmp/DIAG_TIME 3.7) USING CORE LIBRARY. Assume that you have a stand alone C++ program "foo.cpp". In the ideal case, you only have to insert the preamble: #ifndef CORE_LEVEL # define CORE_LEVEL N // N=1,2,3. Defaults to N=3 if omitted #endif #include "CORE/CORE.h" This should be placed after your standard include files (e.g., ). You can now compile it as usual: g++ -I${CORE_PATH}/inc -I${CORE_PATH}/gmp/include \ foo.cpp -o foo \ -L${CORE_PATH}/lib -L${CORE_PATH}/gmp/lib \ -lcore${VAR} -lgmp -lm For more information, please go to ${CORE_PATH}/progs/generic for samples, and also read the tutorial in ${CORE_PATH}/doc. 3.8) PLATFORMS. Version 1.7 has been tested on sun solaris 5.8 -- g++-2.95.3, g++-3.2, g++-3.3, g++-3.4 -- (gmp 3.1.1, gmp 4.0.1, gmp 4.1, gmp 4.1.2) -- (gmp 4.1.3, gmp 4.1.4) -- Sun's WorkShop 6 (C++ 5.3) Debian Linux 2.4.9 -- gcc version 2.95 cygwin -- g++-3.2, g++-3.3, g++-3.4 mingw -- g++-3.2, g++-3.3, g++-3.4 Windows -- Visual C++, version 6.0, 7.0, 7.1 NOTE : for users who prefer a unix/linux type environment that is embedded within the Windows' world, we highly recommend the Cygwin platform as an easy-to-use environment. Cygwin and Windows can freely access each other's files (a big bonus). 3.9) VARIANT INSTALLATIONS (1) INSTALLING BASE DISTRIBUTION: This assumes you already have an installed gmp. -- Download the file core_vX.Y.tgz (for version X.Y) from our website, http://cs.nyu.edu/exact/core. This version has no gmp and no documentation. -- Do the UNPACK STEP (Step 3.2) above. This creates the files under ${CORE_PATH} as described above. At this point there are two possibilities. You may not have to do anything. To test this, try the following: % cd ${CORE_PATH} % make testgmp If this compiles a test program and prints an encouraging message, you may continue from STAGE 2 (Step 3.5) above. Otherwise assume that your gmp is installed at $(MY_GMP_DIR). For instance, if you have installed a full version of Core Library at $(MY_CORELIB) then $(MY_GMP_DIR)=$(MY_CORELIB)/gmp. -- Link Core Library to pre-installed gmp by performing these steps: % cd ${CORE_PATH} % ln -s $(MY_GMP_PATH) gmp % make testgmp This should compiles and prints an encouraging message. Continue from STAGE 2 (Step 3.5) above. (2) INSTALLATION FOR WINDOWS PLATFORM If you use cygwin on your windows platform, then the installation is same as on Unix platform as described above. But if you use Visual C++ instead, then follow these steps. -- Download the file core_vX.Y_full.tgz (for version X.Y) from our website. (We recommend the Full Distribution since it contains gmp already and you cannot easily link to preinstalled gmp) -- Unpack it into some directory ${CORE_PATH}. -- Unpack ${CORE_PATH}\gmp-xxx.tar.gz into ${CORE_PATH}\win32: this creates a subdirectory ${CORE_PATH}\win32\gmp-xxx. Rename this to plain ${CORE_PATH}\win32\gmp. -- Install gmp patches c:\>cd ${CORE_PATH}\win32\patches c:\>patch xxx // where "xxx" is the gmp version; // (xxx = "3.1.1", "4.0.1", "4.1-static", // and "4.1-dynamic" available) // for GMP 4.1.2, you still can choose // "4.1-static" or "4.1-dynamic". -- Open a "Command Prompt" window and run "vcvars32.bat" to setup Visual C++ command line environment. File vcvars32.bat is automatically created by your Visual C++. E.g., sometimes it is found in C:\"Microsoft Visual Studio"\vc98\Bin. -- Compile gmp and the Core Library: c:\>cd ${CORE_PATH}\win32 c:\>nmake This nmake also creates the Core Extension libraries and and all the demo programs. -- Optional: Testing (for the demo programs) c:\>cd ${CORE_PATH}\win32 c:\>set PATH=%PATH%;${CORE_PATH}\win32\lib c:\>nmake test -- Alternatively, use Visual Studio IDE to compile the Core Library and Core Extensions. E.g., to compile Core Library, open the project file "core.dsw" under ${CORE_PATH}\win32\corelib, and compile. To compile Core Extensions, open the project file " corex.dsw" under ${CORE_PATH}\win32\ext, and compile. (3) CORE USAGE FOR WINDOWS PLATFORM If you want to create your own Visual C++ project file, do the following steps: -- add "${CORE_PATH}\inc", "${CORE_PATH}\win32\gmp" into "Include Path". -- add "${CORE_PATH}\win32\lib" into "Lib Path". -- Enable "Run-Time Type Information" in your project settings. (4) SHARED OR STATIC LIBRARY LINKAGE: In Make.config, you can set the LINKAGE variable to "shared" or "static". The default is "static" for simplicity; but the executables will be fairly large (over 1MB each). To run programs using the static library there is nothing special to do; to run the dynamic version of the Core Library, you could move your compiled CORE, gmp, etc, libraries into the standard library paths (e.g., /lib or /usr/lib). Alternatively, you can set the environment variable LD_LIBRARY_PATH as follows: for "csh/tcsh", % setenv LD_LIBRARY_PATH \ ${CORE_PATH}/lib:${CORE_PATH}/gmp/lib:${LD_LIBRARY_PATH}. for "bash", $ export LD_LIBRARY_PATH= \ ${CORE_PATH}/lib:${CORE_PATH}/gmp/lib:${LD_LIBRARY_PATH}. If gmp is not installed in ${CORE_PATH}, adjust accordingly. (5) RECOMPILATION OF THE CORE LIBRARY: Sometimes you may want to recompile the Core Library (perhaps after changing a file in ${CORE_PATH}/src or $(CORE_PATH)/inc). The simplest is to go into ${CORE_PATH}/src and type "make clean; make". This will automatically update the files libcore++.a and/or libcore++.so in ${CORE_PATH}/lib. But for experimental purposes, we may want to keep two or more versions of libcore++.a around. In this case, we suggest using the VAR variable described next. (6) DEBUGGING AND OTHER VERSIONS OF CORE LIBRARY: It may be useful to have different compiled versions of the Core Library around. For this, you must edit file ${CORE_PATH}/Make.config. This file defines the compilation flags, depending on the platform. There are two main variables to set: VAR and PLATFORM. VAR indicates the "variant" of the library you want to compile. The Makefile creates the library file "libcore++$(VAR).a", which will be placed in ${CORE_PATH}/lib/. Since the default value of VAR is the empty string, the default library is the plain "libcore++.a". Here are two useful variants, Debug variant and NoOpt variant: (a) VAR=Debug: you need this variant to run the GNU debugger, gdb. If you set VAR=Debug in Make.config, and then re-do STAGE 2 above (STAGE 1 does not have to be re-done), you will create the debugging variant of the library, namely "libcore++Debug.a". The other stages will similarly create the Debug variants, e.g., Debug versions Core Extension libraries, sample programs, etc. (b) VAR=NoOpt: this version turns off all compiler optimizations. Try this if you find mysterious bugs, and want to rule out the possibility that they are caused by aggressive compiler optimizations. PLATFORM is used to define various variables that are platform- and compiler-specific. It defaults to "gnu". Other possible values are "sun", "cyg", "mingw", "sgi". The "sgi" option has not been tested in the latest library. 3.10) CORE EXTENSIONS. Under ${CORE_PATH}/ext, you will find extensions of Core Library to encode knowledge of algebraic and geometric domains. These "CORE Extensions" (COREX) are quite rudimentary at present, but feel free to contribute. For instance, there is a geometry2d and geometry3d. We compile a Level 1 and Level 3 versions of these libraries, so that you can compile your application in either of these two accuracy levels. 3.11) HOUSEKEEPING AND UNINSTALL To uninstall the library, simple delete all the files under ${CORE_PATH} (i.e., we do not put files anywhere). In every directory, we have a Makefile with two targets called "clean" and "veryclean". If you want to save space, you can type "make clean" in any directory to remove temporary files. E.g., *.o files. If you type "make veryclean", this will, in addition, remove more files (in particular, all executable files). NOTE: both targets are recursively propagated into subdirectories. ************************************************************* 4) NEWS, PLANS AND BUGS NEW in Version 1.7: -- Introduction of plane algebraic curves and bi-variate polynomials The main capability is to plot curves and do basic intersection tests. See CORE_PATH/progs/curves/. -- Introduced "InCore", an interactive version of Core Library based on Python (this has to be downloaded separately) -- Enhancement of the univariate polynomial and real algebraic number facilities. New methods such as polynomial GCD, resultant, square free part, primitive part, etc. * Polynomial can now work with all choices of NT NT = BigInt, int, BigRat, Expr, BigFloat But not all functionality are fully available for NT=BigFloat and NT=Expr (e.g., rootbounds). * Sturm can now work with NT=BigFloat * To support the above, various new methods are added to the BigInt, BigRat, BigFloat and Real classes (isDivisible, gcd, etc). * Polynomials now accept string inputs. E.g., Polynomial p = "x^3 - 2x^2 + 17x - 4"; -- Compatibility with gmp 4.1, and gcc 3.3 -- Introduced a common Reference Counting facility for all Core number types, encoded in the two templated classes: RCRepImpl to create Reps of the class N. The basic functions provided by this class is reference counting, and gives us the "Reps" of each number type (e.g., BigIntRep is derived from RCRepImpl). The other class is RCImpl which is the actual number type (e.g., BigInt is derived from RCImpl). As a result former Rep Files such as RealRep.h can be removed, and the code size is reduced. Also, BigInt and BigRat now have reference counting in their Rep classes (none before). -- Speedup from reorganization of Core Library number classes. We wrote wrappers around gmp's C function library. We also tested the possibility of using gmp's C++ classes (since gmp 4.1) which are template based. CORE's interface are not fully compatible with gmp since since we have exact algebraic representation and precision bounds. We compared three versions of Core Library: (A) -- old code: version 1.6 (B) -- new code: some optimization (C) -- new code: optimzation + using gmp C++ class Here are the running times on two machines: Test Pentium III (1G Memory) Jinai (Solaris) ======================================================= > A 64.12s 1m:07s > B 56.52s 52.6s > C 50.71s 50.4s > Speedup 20% 25% Although the use of gmp C++ classes (which use expression template to eliminate temporary variables) is faster, it is incompatiable with visual C++ (not sure about Sun CC). So we added as an option for compiling the Core Library: to turn on gmp C++ classes, uncomment macro CORE_USE_GMPXX in CoreImpl.h and recompile Core Library; there is no need to compile GMP C++ library since all necessory code are in Core Library already. -- Updated Core Library Tutorial -- Simple openGL display for curves: see CORE_PATH/ext/graphics/ -- Bug fixes * rootOf(P,i) now works properly when P have multiple roots (reason: we assumed the endpoints of isolating intervals have distinct signs) * Fixed bugs in Newton and Sturm methods * Expr::doubleValue() is now correctly implemented. E.g., suppose you compute double s = sqrt(n); double ss = sqrt(Expr(n)).doubleValue(); Then we guarantee that |s-ss| has relative error at most 4*CORE_EPS = 4.44089e-16 (CORE_EPS is machine epsilon). This factor of 4 is essentially the best possible (see CORE_PATH/progs/testIO/testSqrt.cpp). * fixed Expr::degreeBound(). Previously it always returned 1 at leaves. But with algebraic numbers, it must return d_e()). This has dramatic improvement in speed. Ron Wein's program for intersecting two ellipses used to take overnight, but now take 0.4 sec. * Fixed an output bug that has been around since Core 1.4. BigFloat can print an output whose exponent is off by 1. E.g., sqrt(100) = 9.999e0 but BigFloatRep::round(...), an internal function, returns the string "1.0000e0" instead of "1.0000e1". Thanks to Blazi for noticing this. -- Miscellaneous: * Previously, the library version numbers have two numbers (e.g., "1" and "6" in Version 1.6). Between official releases, we call it Version 1.6x. Thus "Version 1.6x" refers to any number of unofficial releases between 1.6 and 1.7. We now have a third number. E.g., this official release is Wersion 1.7.0. * CORE::core_error() is enhanced to write its results into a file "Core_Diagnostics" but also writes errors to std::cerr (as before). * We introduce new versions of the BigFloat::makeExact(), namely, makeCeilExact() and makeFloorExact(). * Upgraded Core Library to be compatible with the latest gmp 4.1.3 (released 4/28/2004). * Use the program "astyle" to beautify all our code, so the files are more consistent and readable. Tab are converted to spaces, use k&r style, etc): ./astyle --style=kr -s2 filename * More use of BigFloats to replace Expr, when possible. E.g. CauchyLowerBound() and CauchyUpperBound() rewritten using BigFloat instead of Expr (30% improvement here). * In CORE_PATH, you can type "make options" to see all your currently selected CORE ENVIRONMENT VARIABLES. If you type "make alloptions", this will also show all possible alternatives that you could have chosen. * Simple timing facility (see src/Timer.h) -- Acknowledgements: Thanks for feedback and bug reports from Janos Blazi, Arno Eigenwillig, Ovidiu Daescu, Andreas Fabri, Michael Hemmer, Athanasios Kakargias, Daniel Russell, Ron Wein. PLANS: -- improved precision-sensitive algorithm -- improved bounds (measure of Sekigawa, etc) -- better floating point filters -- optimized determinant primitive and filters -- compilation and optimization of expressions -- Expressions should have the ability to output exact values in case of integers or rational numbers. Currently, only bigFloat values are output. -- complex numbers -- better implementation of relative precision bounds -- Newton-based algorithms for elementary functions -- development of Core Extensions (geometry, algebra, meshes, etc) -- graphical support and interface -- File I/O of Core Objects (e.g., expressions) -- CORE versions of "printf" and "scanf" (this will reduce the fuss to CORE-ize a standard C program). -- the exponent of a bigFloat number is represented by a machine long. This should not be a problem in practice. An improvement is to use machine double for the exponent, yielding 53 bits of precision. BUGS: -- To report a bug, please send email to exact@cs.nyu.edu, with as much details as possible (including your platform/compiler). -- Let r = 54. Suppose you convert a rational p/q to a BigFloat bf using r bits of relative precision. Next convert bf to a machine double md, double md = (double)bf; This md should be equal to rounding "p/q" to the nearest machine double. Turns out (Core 1.4) this may not be true! But if r=59, our tests indicated that md does equal the machine rounding of p/q. This bug is not too serious since, for any particular inputs, it can be removed by increasing r. Tests suggest that r=59 is sufficient for all p/q. See ${CORE_PATH}/src/test/ for details. -- we should allow defOutputDigits to be CORE_INFTY, and when a rational number is printed in this case, we ought to print it with no errors. Currently, we let defBigFloatOutputDigits control this output; since this value is never infinite, the printed value may have error. -- level II is not fully supported -- level IV is not fully defined ************************************************************* 5) ACKNOWLEDGEMENT and BRIEF HISTORY This work has been supported by a National Science Foundation Grant \#CCR 9402464 and \#CCR 0082056 (an ITR grant). The Real/Expr Package (1994-96) was developed by Chee Yap and Tom Dube. Koji Ouchi and Chee Yap further improved the Real/Expr Package with its concept of composite precision bounds. The new algorithms for BigFloat with automatic error bounds is documented in Koji's masters thesis. A Numerical Accuracy API (the 4 levels of accuracy) was proposed by Chee Yap in Oct 1998. Core Library Version 1.1 (Jan 1999) was adapted from Real/Expr by Chee Yap, Vijay Karamcheti, Igor Pechtchanski and Chen Li to implement the Numerical Accuracy API. Compiler-based optimizations techniques were investigated. Version 1.2 (Sep 1999) is a debugged and improved version. The BFMS root bound was incorporated. Version 1.3 (Sep 2000) is significantly faster than its predecessor because of new improved root bounds and adoption of LiDIA/CLN's bignumber as default kernel. Version 1.4 (Aug 2001) moved from LiDIA/CLN to gmp as the main kernel. Incremental square roots, improved precision-sensitivity algorithms, simple floating point filters, hypergeometry package. Version 1.5 (Aug 2002) improvements in speed and root bounds (k-ary bounds), CGAL compatibility changes, file I/O for large mathematical constants (BigInt, BigFloat, BigRat), improved hypergeometric package, Version 1.6 (June 2003) introduced arbitrary real algebraic numbers in Expr's, incorporated Polynomial and Sturm classes into Core Library. CORE is now distributed with CGAL, and issued under the QPL agreement. Version 1.7 (Nov 2004) introduced algebraic curves and bivariate polynomials. An interactive version of Core Library called "InCore" is available. Beginning graphic capability for display of curves. ************************************************************* 6) LICENSE INFORMATION Core Library is now under the terms of the Q Public License version 1.0. See the file LICENSE.QPL distributed with CORE. ************************************************************* ************************************************************* * CONTACT AND FURTHER INFORMATION: * For comments and bug report, send email to: * exact@cs.nyu.edu. * Core Library Homepage: * http://cs.nyu.edu/exact/ * CGAL Homepage: * http://www.cgal.org/ * GEOMETRY FACTORY Homepage: * http://www.geometryfactory.com/ * GNU/gmp Homepage: * http://www.gnu.org/software/gmp/gmp.html * http://www.gnu.org/home.html ************************************************************* core++-1.7/inc/0040755000175000001440000000000010147210064012540 5ustar joachimuserscore++-1.7/inc/CORE.h0100644000175000001440000000255410077505261013454 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: CORE.h * Synopsis: * The main inclusion file for the Core Library system. * All "Core programs" must include this file. * Note: * Since version 1.6, we have moved all header files to inc/CORE, * for backward compatibility, we keep this file. * * Written by * Chee Yap * Chen Li * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE.h,v $ * $Revision: 1.18 $ $Date: 2004/07/21 15:24:33 $ ***************************************************************************/ #include core++-1.7/inc/CORE/0040755000175000001440000000000010147210064013270 5ustar joachimuserscore++-1.7/inc/CORE/BigFloat.h0100644000175000001440000003721110146716252015142 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: BigFloat.h * Synopsis: * An implementation of BigFloat numbers with error bounds. * * Written by * Chee Yap * Chen Li * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/BigFloat.h,v $ * $Revision: 1.23 $ $Date: 2004/11/17 18:47:06 $ ***************************************************************************/ #ifndef _CORE_BIGFLOAT_H_ #define _CORE_BIGFLOAT_H_ #include CORE_BEGIN_NAMESPACE class Expr; /// \class BigFloat BigFloat.h /// \brief BigFloat is a class of Float-Point number with error bounds. typedef RCImpl RCBigFloat; class BigFloat : public RCBigFloat { public: /// \name Constructors and Destructor //@{ /// default constructor BigFloat() : RCBigFloat(new BigFloatRep()) {} /// constructor for int BigFloat(int i) : RCBigFloat(new BigFloatRep(i)) {} /// constructor for long BigFloat(long l) : RCBigFloat(new BigFloatRep(l)) {} /// constructor for double BigFloat(double d) : RCBigFloat(new BigFloatRep(d)) {} /// constructor for const char* (default base = 10) BigFloat(const char* s) : RCBigFloat(new BigFloatRep(s)) {} /// constructor for std::string(default base = 10) BigFloat(const std::string& s) : RCBigFloat(new BigFloatRep(s)) {} /// constructor for int and long // This is a hack because in Sturm, we need to approximate any // coefficient type NT to a BigFloat, and it would complain if we // do not have this method explicitly: BigFloat(int& i, const extLong& r, const extLong& a) : RCBigFloat(new BigFloatRep(i)) {} BigFloat(long& x, const extLong& r, const extLong& a) : RCBigFloat(new BigFloatRep(x)) {} /// constructor from BigInt, error and exponent values BigFloat(const BigInt& I, unsigned long er = 0, long ex = 0) : RCBigFloat(new BigFloatRep(I, er, ex)) {} /// constructor for BigRat BigFloat(const BigRat& R, const extLong& r = defRelPrec, const extLong& a = defAbsPrec) : RCBigFloat(new BigFloatRep()) { rep->approx(R, r, a); } // REMARK: it is somewhat against our principles to have BigFloat // know about Expr, but BigFloat has a special role in our system! // =============================== /// constructor for Expr BigFloat(const Expr& E, const extLong& r = defRelPrec, const extLong& a = defAbsPrec); /// constructor for BigFloatRep explicit BigFloat(BigFloatRep* r) : RCBigFloat(new BigFloatRep()) { rep = r; } //@} /// \name Copy-Assignment-Destructor //@{ /// copy constructor BigFloat(const BigFloat& rhs) : RCBigFloat(rhs) { rep->incRef(); } /// assignment operator BigFloat& operator=(const BigFloat& rhs) { if (this != &rhs) { rep->decRef(); rep = rhs.rep; rep->incRef(); } return *this; } /// destructor ~BigFloat() { rep->decRef(); } //@} /// \name Compound Assignment Operators //@{ /// operator+= BigFloat& operator+= (const BigFloat& x) { BigFloat z; z.rep->add(*rep, *x.rep); *this = z; return *this; } /// operator-= BigFloat& operator-= (const BigFloat& x) { BigFloat z; z.rep->sub(*rep, *x.rep); *this = z; return *this; } /// operator*= BigFloat& operator*= (const BigFloat& x) { BigFloat z; z.rep->mul(*rep, *x.rep); *this = z; return *this; } /// operator/= BigFloat& operator/= (const BigFloat& x) { BigFloat z; z.rep->div(*rep, *x.rep, defBFdivRelPrec); *this = z; return *this; } //@} /// \name Unary Minus Operator //@{ /// unary plus BigFloat operator+() const { return BigFloat(*this); } /// unary minus BigFloat operator-() const { return BigFloat(-rep->m, rep->err, rep->exp); } //@} /// \name String Conversion Functions //@{ /// set value from const char* (base = 10) void fromString(const char* s, const extLong& p=defBigFloatInputDigits) { rep->fromString(s, p); } /// convert to std::string (base = 10) std::string toString(long prec=defBigFloatOutputDigits, bool sci=false) const { return rep->toString(prec, sci); } std::string str() const { return toString(); } //@} /// \name Conversion Functions //@{ /// return int value int intValue() const { return static_cast(rep->toLong()); } /// return long value long longValue() const { long l = rep->toLong(); if ((l == LONG_MAX) || (l == LONG_MIN)) return l; // return the overflown value. if ((sign() < 0) && (cmp(BigFloat(l)) != 0)) { // a negative value not exactly rounded. l--; // rounded to floor. } return l; } /// return float value float floatValue() const { return static_cast(rep->toDouble()); } /// return double value double doubleValue() const { return rep->toDouble(); } /// return BigInt value BigInt BigIntValue() const { return rep->toBigInt(); } /// return BigRat value BigRat BigRatValue() const { return rep->BigRatize(); } //@} /// \name Helper Functions //@{ /// Has Exact Division static bool hasExactDivision() { return false; } //CONSTANTS /// return BigFloat(0) static const BigFloat& getZero(); /// return BigFloat(1) static const BigFloat& getOne(); /// sign function /** \note This is only the sign of the mantissa, it can be taken to be the sign of the BigFloat only if !(isZeroIn()). */ int sign() const { assert((err() == 0 && m() == 0) || !(isZeroIn())); return rep->signM(); } /// check whether contains zero /** \return true if contains zero, otherwise false */ bool isZeroIn() const { return rep->isZeroIn(); } /// absolute value function BigFloat abs() const { return (sign()>0) ? +(*this) : -(*this); } /// comparison function int cmp(const BigFloat& x) const { return rep->compareMExp(*x.rep); } /// get mantissa const BigInt& m() const { return rep->m; } /// get error bits unsigned long err() const { return rep->err; } /// get exponent long exp() const { return rep->exp; } /// check whether err == 0 /** \return true if err == 0, otherwise false */ bool isExact() const { return rep->err == 0; } /// set err to 0 /** \return an exact BigFloat, see Tutorial for why this is useful! */ BigFloat& makeExact() { makeCopy(); rep->err =0; return *this; } /// set err to 0, but first add err to the mantissa (m) /** \return the ceiling exact BigFloat, variant of makeExact */ BigFloat& makeCeilExact() { makeCopy(); rep->m += rep->err; rep->err =0; return *this; } /// set err to 0, but subtract err from the mantissa (m) /** \return the floor exact BigFloat, variant of makeExact */ BigFloat& makeFloorExact() { makeCopy(); rep->m -= rep->err; rep->err =0; return *this; } /// set err to 1 /** \return an inexact BigFloat, see Tutorial for why this is useful! */ BigFloat& makeInexact() { makeCopy(); rep->err =1; return *this; } /// return lower bound of Most Significant Bit extLong lMSB() const { return rep->lMSB(); } /// return upper bound of Most Significant Bit extLong uMSB() const { return rep->uMSB(); } /// return Most Significant Bit extLong MSB() const { return rep->MSB(); } /// floor of Lg(err) extLong flrLgErr() const { return rep->flrLgErr(); } /// ceil of Lg(err) extLong clLgErr() const { return rep->clLgErr(); } /// division with relative precsion r BigFloat div(const BigFloat& x, const extLong& r) const { BigFloat y; y.rep->div(*rep, *x.rep, r); return y; } /// exact division by 2 BigFloat div2() const { BigFloat y; y.rep->div2(*rep); return y; } /// squareroot BigFloat sqrt(const extLong& a) const { BigFloat x; x.rep->sqrt(*rep, a); return x; } /// squareroot with initial approximation init BigFloat sqrt(const extLong& a, const BigFloat& init) const { BigFloat x; x.rep->sqrt(*rep, a, init); return x; } //@} /// \name Utility Functions //@{ /// approximate BigInt number void approx(const BigInt& I, const extLong& r, const extLong& a) { makeCopy(); rep->trunc(I, r, a); } /// approximate BigFloat number void approx(const BigFloat& B, const extLong& r, const extLong& a) { makeCopy(); rep->approx(*B.rep, r, a); } /// approximate BigRat number void approx(const BigRat& R, const extLong& r, const extLong& a) { makeCopy(); rep->approx(R, r, a); } /// dump internal data void dump() const { rep->dump(); } //@} /// returns a BigFloat of value \f$ 2^e \f$ static BigFloat exp2(int e) { return BigFloat(BigFloatRep::exp2(e)); } }; // class BigFloat //@} // For compatibility with BigInt /// \name File I/O Functions //@{ /// read from file void readFromFile(BigFloat& bf, std::istream& in, long maxLength = 0); /// write to file void writeToFile(const BigFloat& bf, std::ostream& in, int base=10, int charsPerLine=80); /// IO stream operator<< inline std::ostream& operator<< (std::ostream& o, const BigFloat& x) { x.getRep().operator<<(o); return o; } /// IO stream operator>> inline std::istream& operator>> (std::istream& i, BigFloat& x) { x.makeCopy(); x.getRep().operator>>(i); return i; } //@} /// operator+ inline BigFloat operator+ (const BigFloat& x, const BigFloat& y) { BigFloat z; z.getRep().add(x.getRep(), y.getRep()); return z; } /// operator- inline BigFloat operator- (const BigFloat& x, const BigFloat& y) { BigFloat z; z.getRep().sub(x.getRep(), y.getRep()); return z; } /// operator* inline BigFloat operator* (const BigFloat& x, const BigFloat& y) { BigFloat z; z.getRep().mul(x.getRep(), y.getRep()); return z; } /// operator/ inline BigFloat operator/ (const BigFloat& x, const BigFloat& y) { BigFloat z; z.getRep().div(x.getRep(),y.getRep(),defBFdivRelPrec); return z; } /// operator== inline bool operator== (const BigFloat& x, const BigFloat& y) { return x.cmp(y) == 0; } /// operator!= inline bool operator!= (const BigFloat& x, const BigFloat& y) { return x.cmp(y) != 0; } /// operator>= inline bool operator>= (const BigFloat& x, const BigFloat& y) { return x.cmp(y) >= 0; } /// operator> inline bool operator> (const BigFloat& x, const BigFloat& y) { return x.cmp(y) > 0; } /// operator<= inline bool operator<= (const BigFloat& x, const BigFloat& y) { return x.cmp(y) <= 0; } /// operator< inline bool operator< (const BigFloat& x, const BigFloat& y) { return x.cmp(y) < 0; } /// sign inline int sign(const BigFloat& x) { return x.sign(); } /// div2 inline BigFloat div2(const BigFloat& x){ return x.div2(); } /// abs inline BigFloat abs(const BigFloat& x) { return x.abs(); } /// cmp inline int cmp(const BigFloat& x, const BigFloat& y) { return x.cmp(y); } /// pow BigFloat pow(const BigFloat&, unsigned long); /// power inline BigFloat power(const BigFloat& x, unsigned long p) { return pow(x, p); } /// root(x,k,prec,xx) returns the k-th root of x to precision prec. /// The argument x is an initial approximation. BigFloat root(const BigFloat&, unsigned long k, const extLong&, const BigFloat&); inline BigFloat root(const BigFloat& x, unsigned long k) { return root(x, k, defBFsqrtAbsPrec, x); } /// sqrt to defAbsPrec: inline BigFloat sqrt(const BigFloat& x) { return x.sqrt(defBFsqrtAbsPrec); } /// convert an BigFloat Interval to a BigFloat with error bits inline BigFloat centerize(const BigFloat& a, const BigFloat& b) { BigFloat z; z.getRep().centerize(a.getRep(), b.getRep()); return z; } /// minStar(m,n) returns the min-star of m and n inline long minStar(long m, long n) { if (m*n <= 0) return 0; if (m>0) return core_min(m, n); else return core_max(m, n); } /// \name Functions for Compatibility with BigInt (needed by Poly, Curves) //@{ /// isDivisible(x,y) = "is x divisible by y" /** Assuming that x and y are in coanonized forms. Defined to be true if mantissa(y) | mantissa(x) && exp(y) = min*(exp(y), exp(x)). * This concepts assume x and y are exact BigFloats. */ inline bool isDivisible(const BigFloat& a, const BigFloat& b) { // assert: x and y are exact BigFloats. if (sign(b.m()) == 0) return true; if (sign(a.m()) == 0) return false; unsigned long bin_a = getBinExpo(a.m()); unsigned long bin_b = getBinExpo(b.m()); BigInt m_a = a.m() >> bin_a; BigInt m_b = b.m() >> bin_b; long e_a = bin_a + BigFloatRep::bits(a.exp()); long e_b = bin_b + BigFloatRep::bits(b.exp()); long dx = minStar(e_a, e_b); return isDivisible(m_a, m_b) && (dx == e_b); } inline bool isDivisible(double x, double y) { //Are these exact? return isDivisible(BigFloat(x), BigFloat(y)); } /// div_exact(x,y) returns the BigFloat quotient of x divided by y /** This is defined only if isDivisible(x,y). */ // Chee (8/1/2004) The definition of div_exact(x,y) // ensure that Polynomials works with NT=BigFloat and NT=double: inline BigFloat div_exact(const BigFloat& x, const BigFloat& y) { BigInt z; assert (isDivisible(x,y)); mpz_divexact(z.get_mp(), x.m().get_mp(), y.m().get_mp()); // assert: x.exp() - y.exp() does not under- or over-flow. return BigFloat(z, 0, x.exp()-y.exp()); } inline BigFloat div_exact(double x, double y) { return div_exact(BigFloat(x), BigFloat(y)); } // Remark: there is another notion of "exact division" for BigFloats, // and that is to make the division return an "exact" BigFloat // i.e., err()=0. /// gcd(a,b) = BigFloat(gcd(a.mantissa,b.matissa), min(a.exp(), b.exp()) ) inline BigFloat gcd(const BigFloat& a, const BigFloat& b) { if (sign(a.m()) == 0) return core_abs(b); if (sign(b.m()) == 0) return core_abs(a); BigInt r; long dx; unsigned long bin_a = getBinExpo(a.m()); unsigned long bin_b = getBinExpo(b.m()); /* THE FOLLOWING IS ALTERNATIVE CODE, for GCD using base B=2^{14}: *std::cout << "bin_a=" << bin_a << ",bin_b=" << bin_b << std::endl; std::cout << "a.exp()=" << a.exp() << ",b.exp()=" << b.exp() << std::endl; long chunk_a = BigFloatRep::chunkFloor(bin_a); long chunk_b = BigFloatRep::chunkFloor(bin_b); BigInt m_a = BigFloatRep::chunkShift(a.m(), chunk_a); BigInt m_b = BigFloatRep::chunkShift(b.m(), chunk_b); r = gcd(m_a, m_b); dx = minStar(chunk_a + a.exp(), chunk_b + b.exp()); */ BigInt m_a = a.m() >> bin_a; BigInt m_b = b.m() >> bin_b; r = gcd(m_a, m_b); dx = minStar(bin_a + BigFloatRep::bits(a.exp()), bin_b + BigFloatRep::bits(b.exp())); long chunks = BigFloatRep::chunkFloor(dx); r <<= (dx - BigFloatRep::bits(chunks)); dx = chunks; return BigFloat(r, 0, dx); } // Not needed for now: /// div_rem // inline void div_rem(BigFloat& q, BigFloat& r, // const BigFloat& a, const BigFloat& b) { //q.makeCopy(); //r.makeCopy(); //mpz_tdiv_qr(q.get_mp(), r.get_mp(), a.get_mp(), b.get_mp()); //}// CORE_END_NAMESPACE #endif // _CORE_BIGFLOAT_H_ core++-1.7/inc/CORE/BigFloatRep.h0100644000175000001440000002757110144470726015622 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: BigFloatRep.h * Synopsis: * Internal Representation BigFloat. * * Written by * Chee Yap * Chen Li * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/BigFloatRep.h,v $ * $Revision: 1.22 $ $Date: 2004/11/10 19:53:58 $ ***************************************************************************/ #ifndef _CORE_BIGFLOATREP_H_ #define _CORE_BIGFLOATREP_H_ #include #include #include #include CORE_BEGIN_NAMESPACE // forward reference class BigFloat; // class BigFloatRep (internal representation for BigFloat) class BigFloatRep : public RCRepImpl { public: static long chunkCeil(long bits); //inline static long chunkFloor(long bits); //inline static long bits(long chunks); //inline static BigInt chunkShift(const BigInt& x, long s); //inline static double lg10(BigInt x); //inline static long floorlg10(BigInt x); //inline /// exp2(e) returns 2^e : called by BigFloat::exp2(e) /** e can be negative */ static BigFloatRep* exp2(int e); struct DecimalOutput; friend class BigFloat; BigInt m; unsigned long err; long exp; public: // constructors BigFloatRep(int); //inline BigFloatRep(long); //inline BigFloatRep(double); //inline BigFloatRep(const BigInt& I = 0, unsigned long u = 0, long l = 0); //inline BigFloatRep(const char *); //inline BigRat BigRatize() const; //inline // the destructor ~BigFloatRep(); //inline CORE_MEMORY(BigFloatRep) // allocate the memory pool, unless // memory pool feature is disabled. // approximation void trunc(const BigInt&, const extLong&, const extLong&); void truncM(const BigFloatRep&, const extLong&, const extLong&); void approx(const BigFloatRep&, const extLong&, const extLong&); void div(const BigInt&, const BigInt&, const extLong&, const extLong&); void approx(const BigRat&, const extLong&, const extLong&); //inline // error-normalization void eliminateTrailingZeroes(); //inline void normal(); void bigNormal(BigInt&); // arithmetics public: void add(const BigFloatRep&, const BigFloatRep&); void sub(const BigFloatRep&, const BigFloatRep&); void mul(const BigFloatRep&, const BigFloatRep&); void div(const BigFloatRep&, const BigFloatRep&, const extLong&); void div2(const BigFloatRep&); ///< exact division by 2 /// Converts a pair of BigFloatReps into one with error bounds void centerize(const BigFloatRep&, const BigFloatRep&); private: // squareroot // arguments: r = value whose square root we want // a = absolute precision of the desired result // init = initial approx. to the square root (for Newton) void sqrt(const BigInt& r, const extLong& a); /// sqrt(r,a,rr) -- compute sqrt(r) to absolute precision a, /// starting from initial approximation of rr. void sqrt(const BigInt& r, const extLong& a, const BigFloat& init); void sqrt(const BigFloatRep& r, const extLong& a); /// sqrt(r,a,rr) -- compute sqrt(r) to absolute precision a, /// starting from initial approximation of rr. void sqrt(const BigFloatRep& r, const extLong& a, const BigFloat& init); // comparison int compareMExp(const BigFloatRep&) const; // builtin functions extLong lMSB() const; //inline extLong uMSB() const; //inline extLong MSB() const; //inline extLong flrLgErr() const; //inline extLong clLgErr() const; //inline bool isZeroIn() const; //inline int signM() const; //inline // cast functions double toDouble() const; long toLong() const; BigInt toBigInt() const; // conversion // toString() Joaquin Grech 31/5/2003 std::string toString(long prec=defBigFloatOutputDigits, bool sci=false) const; std::string round(std::string inRep, long& L10, unsigned int width) const; DecimalOutput toDecimal(unsigned int width=defBigFloatOutputDigits, bool Scientific=false) const; void fromString(const char *p, const extLong & prec = defBigFloatInputDigits); void dump() const; //inline long adjustE(long E, BigInt M, long e) const; public: // stream operators std::ostream& operator <<(std::ostream&) const; //inline std::istream& operator >>(std::istream&); };//class BigFloatRep //////////////////////////////////////////////////////////// // Implementations //////////////////////////////////////////////////////////// struct BigFloatRep::DecimalOutput { std::string rep; // decimal output string int sign; // 0, +1 or -1 bool isScientific; // false=positional notation int noSignificant; // number of significant digits // -1 means this information is not explicitly // given, and must be determined from rep, etc. bool isExact; // int errorCode; // 0 = no error // 1 = sign of number is unknown (e.g., mantissa // is smaller than error) DecimalOutput() : rep(""), sign(1), isScientific(false), noSignificant(0), isExact(false), errorCode(0) {} };//DecimalOutput // constants used by BigFloatRep // NOTES: CHUNK_BIT is the number of bits in each Chunk // Since LONG_BIT = 32 or 64, then CHUNK_BIT = 14 or 30. // We have: 0 <= err < 4 * 2^{CHUNK_BIT} const long CHUNK_BIT = (long)(LONG_BIT / 2 - 2); // chunks const long HALF_CHUNK_BIT = (CHUNK_BIT + 1) / 2; const long DBL_MAX_CHUNK = (DBL_MAX_EXP - 1) / CHUNK_BIT + 1; const double lgTenM = 3.321928094887362; inline long BigFloatRep::chunkCeil(long bits) { if (bits > 0) return (bits - 1) / CHUNK_BIT + 1; else return - (- bits) / CHUNK_BIT; }//chunkCeil inline long BigFloatRep::chunkFloor(long bits) { if (bits >= 0) return bits / CHUNK_BIT; else return - (- bits - 1) / CHUNK_BIT - 1; }//chunkFloor // bits(c) returns the number of bits in c chunks: inline long BigFloatRep::bits(long chunks) { return CHUNK_BIT * chunks; } inline BigInt BigFloatRep::chunkShift(const BigInt& x, long s) { if (!s || sign(x) == 0) return x; else if (s > 0) // shift left if (sign(x) > 0) return x << static_cast(bits(s)); else // x < 0 return - ((-x) << static_cast(bits(s))); else // shift right if (sign(x) > 0) return x >> static_cast(bits(-s)); else // x < 0 return - ((-x) >> static_cast(bits(-s))); }//chunkShift inline BigFloatRep* BigFloatRep::exp2(int e) { long ee; // this is going to be the exponent if (e >= 0) ee = e/CHUNK_BIT; else ee = - ((-e + CHUNK_BIT -1)/CHUNK_BIT); int rem = e - (ee * CHUNK_BIT); // Assert: 0 <= rem < CHUNK_BIT return new BigFloatRep((1<m; exp = bfr->exp; } */ inline BigFloatRep::BigFloatRep(const BigInt& I, unsigned long er, long ex) : m(I), err(er), exp(ex) {} inline BigFloatRep::BigFloatRep(const char *str) : m(0), err(0), exp(0) { fromString(str); } inline BigRat BigFloatRep::BigRatize() const { if (exp >= 0) return BigRat(chunkShift(m, exp), 1); else return BigRat(m, chunkShift(1, - exp)); } // the destructor inline BigFloatRep::~BigFloatRep() {} inline void BigFloatRep::approx(const BigRat& R, const extLong& r, const extLong& a) { div(numerator(R), denominator(R), r, a); } // eliminate trailing zeroes inline void BigFloatRep::eliminateTrailingZeroes() { // eliminate trailing 0's -- IP 10/9/98 /*if (err == 0 && m != 0) { while ((m & ((1 << CHUNK_BIT) - 1)) == 0) { m >>= CHUNK_BIT; exp++; } }*/ // new code, much faster, Zilin Du (Nov, 2003) if (err == 0 && sign(m) != 0) { int r = getBinExpo(m) / CHUNK_BIT; m >>= (r * CHUNK_BIT); exp += r; } } // bultin functions inline extLong BigFloatRep::lMSB() const { if (!isZeroIn()) return extLong(floorLg(abs(m) - err)) + bits(exp); else return extLong(CORE_negInfty); } inline extLong BigFloatRep::uMSB() const { return extLong(floorLg(abs(m) + err)) + bits(exp); } inline extLong BigFloatRep::MSB() const { // Note : MSB is undefined if it's not exact. if (sign(m)) // sign(m) is non-zero return extLong(floorLg(m)) + bits(exp); else return extLong(CORE_negInfty); } inline extLong BigFloatRep::flrLgErr() const { if (err) return extLong(flrLg(err)) + bits(exp); else return extLong(CORE_negInfty); } inline extLong BigFloatRep::clLgErr() const { if (err) return extLong(clLg(err)) + bits(exp); else return extLong(CORE_negInfty); } // isZero() = true iff zero is inside the interval of BigFloat: inline bool BigFloatRep::isZeroIn() const { if (err == 0){ return (m == 0); //Nov 6, 2002: bug fix! } long lm = bitLength(m); if (lm > CHUNK_BIT+2) { return false; // since err < 4 * 2^{CHUNK_BIT} } else { return (abs(m) <= BigInt(err)); } } inline int BigFloatRep::signM() const { return sign(m); } inline double BigFloatRep::lg10(BigInt x) { if (x == 0) return 0; BigInt t(abs(x)); long l = -1; double d = 0; while (t > 0) { l++; d /= 10; d += ulongValue(t%10); t /= 10; } return log10(d) + l; } // this is a simpler form of lg10() inline long BigFloatRep::floorlg10(BigInt x) { if (x == 0) return 0; BigInt t(abs(x)); long l = -1; while (t > 0) { l++; t /= 10; } return l; } inline std::ostream& BigFloatRep::operator<<(std::ostream& o) const { bool sci = (o.flags() & std::ios::scientific) > 0; BigFloatRep::DecimalOutput r = toDecimal(o.precision(), sci); if (r.sign == -1) o << "-"; o << r.rep; return o; } /* Returns a std::string with precision and format specified Works as cout << with the exception that if the output contains any error it returns a NULL Joaquin Grech 31/5/03 */ inline std::string BigFloatRep::toString(long prec, bool sci) const { BigFloatRep::DecimalOutput r = toDecimal(prec, sci); if (r.errorCode == 0) { if (r.sign < 0) return std::string("-")+r.rep; else return r.rep; } return NULL; } inline void BigFloatRep::dump() const { std::cout << "---- BFRep: " << this << " ----" << std::endl; std::cout << " BF value: "; this->operator<<(std::cout); std::cout << std::endl; std::cout << " m = " << m << std::endl; std::cout << " err = " << err << std::endl; std::cout << " exp = " << exp << std::endl; std::cout << " -- End of BFRep " << this << " -- " << std::endl; } CORE_END_NAMESPACE #endif // _CORE_BIGFLOATREP_H_ core++-1.7/inc/CORE/BigInt.h0100644000175000001440000003325610142771620014630 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: BigInt.h * Synopsis: * a wrapper class for mpz from GMP * * Written by * Chee Yap * Chen Li * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/BigInt.h,v $ * $Revision: 1.23 $ $Date: 2004/11/05 21:41:36 $ ***************************************************************************/ #ifndef _CORE_BIGINT_H_ #define _CORE_BIGINT_H_ #include #include #include #include CORE_BEGIN_NAMESPACE /**************** Auxiliary classes ****************/ /* this is the same as gmp_allocated_string in gmp-impl.h */ struct _alloc_cstr { char *str; _alloc_cstr(char *s) { str = s; } ~_alloc_cstr() { __gmp_free_func(str, strlen(str)+1); } }; class BigIntRep : public RCRepImpl { public: BigIntRep() { mpz_init(mp); } BigIntRep(const BigIntRep& z) { mpz_init_set(mp, z.mp); } BigIntRep(signed char c) { mpz_init_set_si(mp, c); } BigIntRep(unsigned char c) { mpz_init_set_ui(mp, c); } BigIntRep(signed int i) { mpz_init_set_si(mp, i); } BigIntRep(unsigned int i) { mpz_init_set_ui(mp, i); } BigIntRep(signed short int s) { mpz_init_set_si(mp, s); } BigIntRep(unsigned short int s) { mpz_init_set_ui(mp, s); } BigIntRep(signed long int l) { mpz_init_set_si(mp, l); } BigIntRep(unsigned long int l) { mpz_init_set_ui(mp, l); } BigIntRep(float f) { mpz_init_set_d(mp, f); } BigIntRep(double d) { mpz_init_set_d(mp, d); } BigIntRep(const char* s, int base=0) { mpz_init_set_str(mp, s, base); } BigIntRep(const std::string& s, int base=0) { mpz_init_set_str(mp, s.c_str(), base); } explicit BigIntRep(mpz_srcptr z) { mpz_init_set(mp, z); } ~BigIntRep() { mpz_clear(mp); } CORE_MEMORY(BigIntRep) mpz_srcptr get_mp() const { return mp; } mpz_ptr get_mp() { return mp; } private: mpz_t mp; }; typedef RCImpl RCBigInt; class BigInt : public RCBigInt { public: /// \name Constructors //@{ /// default constructor BigInt() : RCBigInt(new BigIntRep()) {} /// constructor for signed char BigInt(signed char x) : RCBigInt(new BigIntRep(x)) {} /// constructor for unsigned char BigInt(unsigned char x) : RCBigInt(new BigIntRep(x)) {} /// constructor for signed short int BigInt(signed short int x) : RCBigInt(new BigIntRep(x)) {} /// constructor for unsigned short int BigInt(unsigned short int x) : RCBigInt(new BigIntRep(x)) {} /// constructor for signed int BigInt(signed int x) : RCBigInt(new BigIntRep(x)) {} /// constructor for unsigned int BigInt(unsigned int x) : RCBigInt(new BigIntRep(x)) {} /// constructor for signed long int BigInt(signed long int x) : RCBigInt(new BigIntRep(x)) {} /// constructor for unsigned long int BigInt(unsigned long int x) : RCBigInt(new BigIntRep(x)) {} /// constructor for float BigInt(float x) : RCBigInt(new BigIntRep(x)) {} /// constructor for double BigInt(double x) : RCBigInt(new BigIntRep(x)) {} /// constructor for const char* with base BigInt(const char* s, int base=0) : RCBigInt(new BigIntRep(s, base)) {} /// constructor for std::string with base BigInt(const std::string& s, int base=0) : RCBigInt(new BigIntRep(s, base)) {} /// constructor for mpz_srcptr explicit BigInt(mpz_srcptr z) : RCBigInt(new BigIntRep(z)) {} //@} /// \name Copy-Assignment-Destructor //@{ /// copy constructor BigInt(const BigInt& rhs) : RCBigInt(rhs) { rep->incRef(); } /// assignment operator BigInt& operator=(const BigInt& rhs) { if (this != &rhs) { rep->decRef(); rep = rhs.rep; rep->incRef(); } return *this; } /// destructor ~BigInt() { rep->decRef(); } //@} /// \name Overloaded operators //@{ BigInt& operator +=(const BigInt& rhs) { makeCopy(); mpz_add(get_mp(), get_mp(), rhs.get_mp()); return *this; } BigInt& operator -=(const BigInt& rhs) { makeCopy(); mpz_sub(get_mp(), get_mp(), rhs.get_mp()); return *this; } BigInt& operator *=(const BigInt& rhs) { makeCopy(); mpz_mul(get_mp(), get_mp(), rhs.get_mp()); return *this; } BigInt& operator /=(const BigInt& rhs) { makeCopy(); mpz_tdiv_q(get_mp(), get_mp(), rhs.get_mp()); return *this; } BigInt& operator %=(const BigInt& rhs) { makeCopy(); mpz_tdiv_r(get_mp(), get_mp(), rhs.get_mp()); return *this; } BigInt& operator &=(const BigInt& rhs) { makeCopy(); mpz_and(get_mp(), get_mp(), rhs.get_mp()); return *this; } BigInt& operator |=(const BigInt& rhs) { makeCopy(); mpz_ior(get_mp(), get_mp(), rhs.get_mp()); return *this; } BigInt& operator ^=(const BigInt& rhs) { makeCopy(); mpz_xor(get_mp(), get_mp(), rhs.get_mp()); return *this; } BigInt& operator <<=(unsigned long ul) { makeCopy(); mpz_mul_2exp(get_mp(), get_mp(), ul); return *this; } BigInt& operator >>=(unsigned long ul) { makeCopy(); mpz_tdiv_q_2exp(get_mp(), get_mp(), ul); return *this; } //@} /// \name unary, increment, decrement operators //@{ BigInt operator+() const { return BigInt(*this); } BigInt operator-() const { BigInt r; mpz_neg(r.get_mp(), get_mp()); return r; } BigInt& operator++() { makeCopy(); mpz_add_ui(get_mp(), get_mp(), 1); return *this; } BigInt& operator--() { makeCopy(); mpz_sub_ui(get_mp(), get_mp(), 1); return *this; } BigInt operator++(int) { BigInt r; *r.rep = *rep; (*this)++; return r; } BigInt operator--(int) { BigInt r; *r.rep = *rep; (*this)--; return r; } //@} /// \name Helper Functions //@{ /// Has Exact Division static bool hasExactDivision() { return false; } /// get mpz pointer (const) mpz_srcptr get_mp() const { return rep->get_mp(); } /// get mpz pointer mpz_ptr get_mp() { return rep->get_mp(); } //@} /// \name String Conversion Functions //@{ /// set value from const char* int set_str(const char* s, int base = 0) { makeCopy(); return mpz_set_str(get_mp(), s, base); } /// convert to std::string std::string get_str(int base = 10) const { _alloc_cstr t(mpz_get_str(0, base, get_mp())); return std::string(t.str); } //@} /// \name Conversion Functions //@{ /// intValue int intValue() const { return static_cast(mpz_get_si(get_mp())); } /// longValue long longValue() const { return mpz_get_si(get_mp()); } /// ulongValue unsigned long ulongValue() const { return mpz_get_ui(get_mp()); } /// doubleValue double doubleValue() const { return mpz_get_d(get_mp()); } //@} }; inline BigInt operator+(const BigInt& a, const BigInt& b) { BigInt r; mpz_add(r.get_mp(), a.get_mp(), b.get_mp()); return r; } inline BigInt operator-(const BigInt& a, const BigInt& b) { BigInt r; mpz_sub(r.get_mp(), a.get_mp(), b.get_mp()); return r; } inline BigInt operator*(const BigInt& a, const BigInt& b) { BigInt r; mpz_mul(r.get_mp(), a.get_mp(), b.get_mp()); return r; } inline BigInt operator/(const BigInt& a, const BigInt& b) { BigInt r; mpz_tdiv_q(r.get_mp(), a.get_mp(), b.get_mp()); return r; } inline BigInt operator%(const BigInt& a, const BigInt& b) { BigInt r; mpz_tdiv_r(r.get_mp(), a.get_mp(), b.get_mp()); return r; } inline BigInt operator&(const BigInt& a, const BigInt& b) { BigInt r; mpz_and(r.get_mp(), a.get_mp(), b.get_mp()); return r; } inline BigInt operator|(const BigInt& a, const BigInt& b) { BigInt r; mpz_ior(r.get_mp(), a.get_mp(), b.get_mp()); return r; } inline BigInt operator^(const BigInt& a, const BigInt& b) { BigInt r; mpz_xor(r.get_mp(), a.get_mp(), b.get_mp()); return r; } inline BigInt operator<<(const BigInt& a, unsigned long ul) { BigInt r; mpz_mul_2exp(r.get_mp(), a.get_mp(), ul); return r; } inline BigInt operator>>(const BigInt& a, unsigned long ul) { BigInt r; mpz_tdiv_q_2exp(r.get_mp(), a.get_mp(), ul); return r; } inline int cmp(const BigInt& x, const BigInt& y) { return mpz_cmp(x.get_mp(), y.get_mp()); } inline bool operator==(const BigInt& a, const BigInt& b) { return cmp(a, b) == 0; } inline bool operator!=(const BigInt& a, const BigInt& b) { return cmp(a, b) != 0; } inline bool operator>=(const BigInt& a, const BigInt& b) { return cmp(a, b) >= 0; } inline bool operator>(const BigInt& a, const BigInt& b) { return cmp(a, b) > 0; } inline bool operator<=(const BigInt& a, const BigInt& b) { return cmp(a, b) <= 0; } inline bool operator<(const BigInt& a, const BigInt& b) { return cmp(a, b) < 0; } inline std::ostream& operator<<(std::ostream& o, const BigInt& x) { return CORE::operator<<(o, x.get_mp()); } inline std::istream& operator>>(std::istream& i, BigInt& x) { x.makeCopy(); return CORE::operator>>(i, x.get_mp()); } /// sign inline int sign(const BigInt& a) { return mpz_sgn(a.get_mp()); } /// abs inline BigInt abs(const BigInt& a) { BigInt r; mpz_abs(r.get_mp(), a.get_mp()); return r; } /// neg inline BigInt neg(const BigInt& a) { BigInt r; mpz_neg(r.get_mp(), a.get_mp()); return r; } /// negate inline void negate(BigInt& a) { a.makeCopy(); mpz_neg(a.get_mp(), a.get_mp()); } /// cmpabs inline int cmpabs(const BigInt& a, const BigInt& b) { return mpz_cmpabs(a.get_mp(), b.get_mp()); } /// \name Conversion Functions //@{ /// longValue inline long longValue(const BigInt& a) { return a.longValue(); } /// ulongValue inline unsigned long ulongValue(const BigInt& a) { return a.ulongValue(); } /// doubleValue inline double doubleValue(const BigInt& a) { return a.doubleValue(); } //@} /// \name File I/O Functions //@{ /// read from file void readFromFile(BigInt& z, std::istream& in, long maxLength = 0); /// write to file void writeToFile(const BigInt& z, std::ostream& in, int base=10, int charsPerLine=80); //@} /// \name Misc Functions //@{ /// isEven inline bool isEven(const BigInt& z) { return mpz_even_p(z.get_mp()); } /// isOdd inline bool isOdd(const BigInt& z) { return mpz_odd_p(z.get_mp()); } /// get exponent of power 2 inline unsigned long getBinExpo(const BigInt& z) { return mpz_scan1(z.get_mp(), 0); } /// get exponent of power k inline void getKaryExpo(const BigInt& z, BigInt& m, int& e, unsigned long k) { mpz_t f; mpz_init_set_ui(f, k); m.makeCopy(); e = mpz_remove(m.get_mp(), z.get_mp(), f); mpz_clear(f); } /// divisible(x,y) = "x | y" inline bool isDivisible(const BigInt& x, const BigInt& y) { return mpz_divisible_p(x.get_mp(), y.get_mp()) != 0; } inline bool isDivisible(int x, int y) { return x % y == 0; } inline bool isDivisible(long x, long y) { return x % y == 0; } /// exact div inline void divexact(BigInt& z, const BigInt& x, const BigInt& y) { z.makeCopy(); mpz_divexact(z.get_mp(), x.get_mp(), y.get_mp()); } // Chee (1/12/2004) The definition of div_exact(x,y) next // ensure that in Polynomials works with both NT=BigInt and NT=int: inline BigInt div_exact(const BigInt& x, const BigInt& y) { BigInt z; // precodition: isDivisible(x,y) divexact(z, x, y); // z is set to x/y; return z; } inline int div_exact(int x, int y) { return x/y; // precondition: isDivisible(x,y) } inline long div_exact(long x, long y) { return x/y; // precondition: isDivisible(x,y) } /// gcd inline BigInt gcd(const BigInt& a, const BigInt& b) { BigInt r; mpz_gcd(r.get_mp(), a.get_mp(), b.get_mp()); return r; } /// div_rem inline void div_rem(BigInt& q, BigInt& r, const BigInt& a, const BigInt& b) { q.makeCopy(); r.makeCopy(); mpz_tdiv_qr(q.get_mp(), r.get_mp(), a.get_mp(), b.get_mp()); } /// power inline void power(BigInt& c, const BigInt& a, unsigned long ul) { c.makeCopy(); mpz_pow_ui(c.get_mp(), a.get_mp(), ul); } // pow inline BigInt pow(const BigInt& a, unsigned long ui) { BigInt r; power(r, a, ui); return r; } // bit length inline int bitLength(const BigInt& a) { return mpz_sizeinbase(a.get_mp(), 2); } /// floorLg -- floor of log_2(a) inline long floorLg(const BigInt& a) { return (sign(a) == 0) ? (-1) : (bitLength(a)-1); } /// ceilLg -- ceiling of log_2(a) where a=BigInt, int or long inline long ceilLg(const BigInt& a) { if (sign(a) == 0) return -1; unsigned long len = bitLength(a); return (mpz_scan1(a.get_mp(), 0) == len-1) ? (len-1) : len; } inline long ceilLg(long a) { // need this for Polynomial return ceilLg(BigInt(a)); } inline long ceilLg(int a) { // need this for Polynomial return ceilLg(BigInt(a)); } // return a gmp_randstate_t structure extern gmp_randstate_t* getRandstate(); /// seed function inline void seed(const BigInt& a) { gmp_randseed(*getRandstate(), a.get_mp()); } /// randomize function inline BigInt randomize(const BigInt& a) { BigInt r; mpz_urandomm(r.get_mp(), *getRandstate(), a.get_mp()); return r; } //@} CORE_END_NAMESPACE #endif // _CORE_BIGINT_H_ core++-1.7/inc/CORE/BigRat.h0100644000175000001440000002712710142771620014624 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: BigRat.h * Synopsis: * a wrapper class for mpq from GMP * * Written by * Chee Yap * Chen Li * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/BigRat.h,v $ * $Revision: 1.19 $ $Date: 2004/11/05 21:41:36 $ ***************************************************************************/ #ifndef _CORE_BIGRAT_H_ #define _CORE_BIGRAT_H_ #include CORE_BEGIN_NAMESPACE class BigRatRep : public RCRepImpl { public: BigRatRep() { mpq_init(mp); } BigRatRep(const BigRatRep& z) { mpq_init(mp); mpq_set(mp, z.mp); } BigRatRep(signed char c) { mpq_init(mp); mpq_set_si(mp, c, 1); } BigRatRep(unsigned char c) { mpq_init(mp); mpq_set_ui(mp, c, 1); } BigRatRep(signed int i) { mpq_init(mp); mpq_set_si(mp, i, 1); } BigRatRep(unsigned int i) { mpq_init(mp); mpq_set_ui(mp, i, 1); } BigRatRep(signed short int s) { mpq_init(mp); mpq_set_si(mp, s, 1); } BigRatRep(unsigned short int s) { mpq_init(mp); mpq_set_ui(mp, s, 1); } BigRatRep(signed long int l) { mpq_init(mp); mpq_set_si(mp, l, 1); } BigRatRep(unsigned long int l) { mpq_init(mp); mpq_set_ui(mp, l, 1); } BigRatRep(float f) { mpq_init(mp); mpq_set_d(mp, f); } BigRatRep(double d) { mpq_init(mp); mpq_set_d(mp, d); } BigRatRep(const char* s) { mpq_init(mp); mpq_set_str(mp, s, 0); } BigRatRep(const std::string& s) { mpq_init(mp); mpq_set_str(mp, s.c_str(), 0); } explicit BigRatRep(mpq_srcptr q) { mpq_init(mp); mpq_set(mp, q); } BigRatRep(mpz_srcptr z) { mpq_init(mp); mpq_set_z(mp, z); } BigRatRep(mpz_srcptr n, mpz_srcptr d) { mpq_init(mp); mpz_set(mpq_numref(mp), n); mpz_set(mpq_denref(mp), d); mpq_canonicalize(mp); } ~BigRatRep() { mpq_clear(mp); } CORE_MEMORY(BigRatRep) mpq_srcptr get_mp() const { return mp; } mpq_ptr get_mp() { return mp; } private: mpq_t mp; }; //BigRatRep typedef RCImpl RCBigRat; class BigRat : public RCBigRat { public: /// \name Constructors //@{ /// default constructor BigRat() : RCBigRat(new BigRatRep()) {} /// constructor for signed char BigRat(signed char x) : RCBigRat(new BigRatRep(x)) {} /// constructor for unsigned char BigRat(unsigned char x) : RCBigRat(new BigRatRep(x)) {} /// constructor for signed short int BigRat(signed short int x) : RCBigRat(new BigRatRep(x)) {} /// constructor for unsigned short int BigRat(unsigned short int x) : RCBigRat(new BigRatRep(x)) {} /// constructor for signed int BigRat(signed int x) : RCBigRat(new BigRatRep(x)) {} /// constructor for unsigned int BigRat(unsigned int x) : RCBigRat(new BigRatRep(x)) {} /// constructor for signed long int BigRat(signed long int x) : RCBigRat(new BigRatRep(x)) {} /// constructor for unsigned long int BigRat(unsigned long int x) : RCBigRat(new BigRatRep(x)) {} /// constructor for float BigRat(float x) : RCBigRat(new BigRatRep(x)) {} /// constructor for double BigRat(double x) : RCBigRat(new BigRatRep(x)) {} /// constructor for const char* with base BigRat(const char* s) : RCBigRat(new BigRatRep(s)) {} /// constructor for std::string with base BigRat(const std::string& s) : RCBigRat(new BigRatRep(s)) {} /// constructor for mpq_srcptr explicit BigRat(mpq_srcptr z) : RCBigRat(new BigRatRep(z)) {} /// constructor for BigInt BigRat(const BigInt& z) : RCBigRat(new BigRatRep(z.get_mp())) {} /// constructor for two BigInts BigRat(const BigInt& n, const BigInt& d) : RCBigRat(new BigRatRep(n.get_mp(), d.get_mp())) {} //@} /// \name Copy-Assignment-Destructor //@{ /// copy constructor BigRat(const BigRat& rhs) : RCBigRat(rhs) { rep->incRef(); } /// assignment operator BigRat& operator=(const BigRat& rhs) { if (this != &rhs) { rep->decRef(); rep = rhs.rep; rep->incRef(); } return *this; } /// destructor ~BigRat() { rep->decRef(); } //@} /// \name Overloaded operators //@{ BigRat& operator +=(const BigRat& rhs) { makeCopy(); mpq_add(get_mp(), get_mp(), rhs.get_mp()); return *this; } BigRat& operator -=(const BigRat& rhs) { makeCopy(); mpq_sub(get_mp(), get_mp(), rhs.get_mp()); return *this; } BigRat& operator *=(const BigRat& rhs) { makeCopy(); mpq_mul(get_mp(), get_mp(), rhs.get_mp()); return *this; } BigRat& operator /=(const BigRat& rhs) { makeCopy(); mpq_div(get_mp(), get_mp(), rhs.get_mp()); return *this; } BigRat& operator <<=(unsigned long ul) { makeCopy(); mpq_mul_2exp(get_mp(), get_mp(), ul); return *this; } BigRat& operator >>=(unsigned long ul) { makeCopy(); mpq_div_2exp(get_mp(), get_mp(), ul); return *this; } //@} /// \name div2, unary, increment, decrement operators //@{ /// exact division by 2 (this method is provided for compatibility) BigRat div2() const { BigRat r; BigRat t(2); // probably not most efficient way mpq_div(r.get_mp(), get_mp(), t.get_mp()); return r; } BigRat operator+() const { return BigRat(*this); } BigRat operator-() const { BigRat r; mpq_neg(r.get_mp(), get_mp()); return r; } BigRat& operator++() { makeCopy(); mpz_add(get_num_mp(),get_num_mp(),get_den_mp()); return *this; } BigRat& operator--() { makeCopy(); mpz_sub(get_num_mp(),get_num_mp(),get_den_mp()); return *this; } BigRat operator++(int) { BigRat r; *r.rep = *rep; (*this)++; return r; } BigRat operator--(int) { BigRat r; *r.rep = *rep; (*this)--; return r; } //@} /// \name Helper Functions //@{ /// Canonicalize void canonicalize() { makeCopy(); mpq_canonicalize(get_mp()); } /// Has Exact Division static bool hasExactDivision() { return true; } /// return mpz pointer of numerator (const) mpz_srcptr get_num_mp() const { return mpq_numref(get_mp()); } /// return mpz pointer of numerator mpz_ptr get_num_mp() { return mpq_numref(get_mp()); } /// return mpz pointer of denominator mpz_srcptr get_den_mp() const { return mpq_denref(get_mp()); } /// return mpz pointer of denominator mpz_ptr get_den_mp() { return mpq_denref(get_mp()); } /// get mpq pointer (const) mpq_srcptr get_mp() const { return rep->get_mp(); } /// get mpq pointer mpq_ptr get_mp() { return rep->get_mp(); } //@} /// \name String Conversion Functions //@{ /// set value from const char* int set_str(const char* s, int base = 0) { makeCopy(); return mpq_set_str(get_mp(), s, base); } /// convert to std::string std::string get_str(int base = 10) const { _alloc_cstr t(mpq_get_str(0, base, get_mp())); return std::string(t.str); } //@} /// \name Conversion Functions //@{ /// intValue int intValue() const { return static_cast(doubleValue()); } /// longValue long longValue() const { return static_cast(doubleValue()); } /// doubleValue double doubleValue() const { return mpq_get_d(get_mp()); } /// BigIntValue BigInt BigIntValue() const { BigInt r; mpz_tdiv_q(r.get_mp(), get_num_mp(), get_den_mp()); return r; } //@} }; //BigRat class inline BigRat operator+(const BigRat& a, const BigRat& b) { BigRat r; mpq_add(r.get_mp(), a.get_mp(), b.get_mp()); return r; } inline BigRat operator-(const BigRat& a, const BigRat& b) { BigRat r; mpq_sub(r.get_mp(), a.get_mp(), b.get_mp()); return r; } inline BigRat operator*(const BigRat& a, const BigRat& b) { BigRat r; mpq_mul(r.get_mp(), a.get_mp(), b.get_mp()); return r; } inline BigRat operator/(const BigRat& a, const BigRat& b) { BigRat r; mpq_div(r.get_mp(), a.get_mp(), b.get_mp()); return r; } // Chee (3/19/2004): // The following definitions of div_exact(x,y) and gcd(x,y) // ensures that in Polynomial // A trivial implementation is to return true always. But this // caused tPolyRat to fail. // So we follow the definition of // Expr::isDivisible(e1, e2) which checks if e1/e2 is an integer. inline bool isInteger(const BigRat& x) { return BigInt(x.get_den_mp()) == 1; } inline bool isDivisible(const BigRat& x, const BigRat& y) { BigRat r; mpq_div(r.get_mp(), x.get_mp(), y.get_mp()); return isInteger(r); } inline BigRat operator<<(const BigRat& a, unsigned long ul) { BigRat r; mpq_mul_2exp(r.get_mp(), a.get_mp(), ul); return r; } inline BigRat operator>>(const BigRat& a, unsigned long ul) { BigRat r; mpq_div_2exp(r.get_mp(), a.get_mp(), ul); return r; } inline int cmp(const BigRat& x, const BigRat& y) { return mpq_cmp(x.get_mp(), y.get_mp()); } inline bool operator==(const BigRat& a, const BigRat& b) { return cmp(a, b) == 0; } inline bool operator!=(const BigRat& a, const BigRat& b) { return cmp(a, b) != 0; } inline bool operator>=(const BigRat& a, const BigRat& b) { return cmp(a, b) >= 0; } inline bool operator>(const BigRat& a, const BigRat& b) { return cmp(a, b) > 0; } inline bool operator<=(const BigRat& a, const BigRat& b) { return cmp(a, b) <= 0; } inline bool operator<(const BigRat& a, const BigRat& b) { return cmp(a, b) < 0; } inline std::ostream& operator<<(std::ostream& o, const BigRat& x) { return CORE::operator<<(o, x.get_mp()); } inline std::istream& operator>>(std::istream& i, BigRat& x) { x.makeCopy(); return CORE::operator>>(i, x.get_mp()); } /// sign inline int sign(const BigRat& a) { return mpq_sgn(a.get_mp()); } /// abs inline BigRat abs(const BigRat& a) { BigRat r; mpq_abs(r.get_mp(), a.get_mp()); return r; } /// neg inline BigRat neg(const BigRat& a) { BigRat r; mpq_neg(r.get_mp(), a.get_mp()); return r; } /// div2 inline BigRat div2(const BigRat& a) { BigRat r(a); return r.div2(); } /// numerator inline BigInt numerator(const BigRat& a) { return BigInt(a.get_num_mp()); } /// denominator inline BigInt denominator(const BigRat& a) { return BigInt(a.get_den_mp()); } /// longValue inline long longValue(const BigRat& a) { return a.longValue(); } /// doubleValue inline double doubleValue(const BigRat& a) { return a.doubleValue(); } /// return BigInt value inline BigInt BigIntValue(const BigRat& a) { return a.BigIntValue(); } CORE_END_NAMESPACE #endif // _CORE_BIGRAT_H_ core++-1.7/inc/CORE/CGAL_Expr.h0100644000175000001440000000510410106104525015141 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: CGAL_Expr.h * * Synopsis: * Adds the necessary functionality so that CORE's Expr can * be used by CGAL. * * Written by * Sylvain Pion * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/CGAL_Expr.h,v $ * $Revision: 1.10 $ $Date: 2004/08/10 08:37:41 $ ***************************************************************************/ // Adds the necessary functionality so that CORE::Expr can be used by CGAL. // This file can also be found in CGAL itself. #ifndef CORE_CGAL_EXPR_H #define CORE_CGAL_EXPR_H #include #define CORE_LEVEL 4 #include CGAL_BEGIN_NAMESPACE template <> struct Number_type_traits { typedef Tag_false Has_gcd; typedef Tag_true Has_division; typedef Tag_true Has_sqrt; }; inline bool is_finite (const CORE::Expr&) { return true; } inline bool is_valid (const CORE::Expr&) { return true; } inline io_Operator io_tag (const CORE::Expr&) { return io_Operator(); } inline double to_double (const CORE::Expr &e) { return e.doubleValue(); } inline CORE::Expr sqrt(const CORE::Expr & e) { return CORE::sqrt(e); } inline Sign sign(const CORE::Expr& e) { return (Sign) e.getSign(); } inline Comparison_result compare(const CORE::Expr& e1, const CORE::Expr& e2) { CORE::Expr c = e1-e2; return (c < 0) ? SMALLER : ((0 < c) ? LARGER : EQUAL); } #if 0 // unfinished inline Interval_base to_interval (const CORE::Expr &e) { bool this_need_to_be_filled; // Protect_FPU_rounding P (CGAL_FE_TONEAREST); // Interval_nt_advanced approx(cl_double_approx(I)); // FPU_set_cw(CGAL_FE_UPWARD); // return approx + Interval_base::Smallest; } #endif // Specialized utilities : namespace NTS { inline CORE::Expr sqrt( const CORE::Expr& e) { return CORE::sqrt(e); } } // namespace NTS CGAL_END_NAMESPACE #endif core++-1.7/inc/CORE/CORE.h0100644000175000001440000000436110127352005014172 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: CORE.h * Synopsis: * The main inclusion file for the Core Library system. * All "Core programs" must include this file. * * Written by * Chee Yap * Chen Li * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/CORE.h,v $ * $Revision: 1.13 $ $Date: 2004/10/01 22:02:45 $ ***************************************************************************/ #ifndef _CORE_CORE_H_ #define _CORE_CORE_H_ #include #include // User can still access machine types: typedef double machine_double; typedef long machine_long; #ifndef CORE_LEVEL # define CORE_LEVEL DEFAULT_CORE_LEVEL #endif #if CORE_LEVEL == 1 # define Real double # define Expr double #elif CORE_LEVEL == 2 # include # undef long # undef double # define long Real # define double Real # define Expr Real #elif CORE_LEVEL == 3 # include # undef long # undef double # define long Expr # define double Expr # define Real Expr #elif CORE_LEVEL == 4 # include #endif // automaticall link necessary static library under visual c++ #ifdef _MSC_VER #ifdef _DEBUG #pragma comment(lib, "coreDebug.lib") #pragma comment(lib, "gmpDebug.lib") #else #pragma comment(lib, "core.lib") #pragma comment(lib, "gmp.lib") #endif #endif #ifndef CORE_NO_AUTOMATIC_NAMESPACE using namespace CORE; #endif #endif // _CORE_CORE_H_ core++-1.7/inc/CORE/Config.h0100644000175000001440000000044310017453432014650 0ustar joachimusers#ifndef _CORE_CONFIG_H_ #define _CORE_CONFIG_H_ // disable debug //#define CORE_DISABLE_DEBUG // disable inline functions //#define CORE_DISABLE_INLINE // disable memory pool //#define CORE_DISABLE_MEMPOOL // debug reference counting //#define CORE_RC_DEBUG 1 #endif // _CORE_CONFIG_H_ core++-1.7/inc/CORE/CoreAux.h0100644000175000001440000001163510110154675015017 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: CoreAux.h * Synopsis: * Auxilliary functions * * Written by * Chee Yap * Chen Li * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/CoreAux.h,v $ * $Revision: 1.21 $ $Date: 2004/08/16 15:58:53 $ ***************************************************************************/ #ifndef _CORE_COREAUX_H_ #define _CORE_COREAUX_H_ #include #include #include "CORE/Impl.h" CORE_BEGIN_NAMESPACE #ifndef LONG_BIT // such as in Linux #define LONG_BIT (sizeof(long) * 8) #endif /// CORE_EPS is unit roundoff for IEEE standard double, i.e., 2^{-53}. // NOTES: // (1) CORE_EPS is used in our Floating Point Filter (Filter.h) // (2) 2^{-53} is called "unit roundoff" and // is the roundoff error for numbers in the range [1,2). // "Machine epsilon" is 2*CORE_EPS = 2^{-52}. It is the // smallest gap between two normal machine numbers --Chee 8/2003 // // const double eps = (ldexp(1.0, -53)); // fails to link on SunPro #define CORE_EPS ((1.0/(1<<30))/(1<<23)) // #define CORE_MACHINE_EPS ((1.0/(1<<30))/(1<<22)) /// relEps is relative error for IEEE standard double, 1+2^{-52}. const double relEps = (1.0 + ldexp(1.0, -52)); /// CORE_DIAGFILE is used for all warning and error messages extern char* CORE_DIAGFILE; /// template function returns the maximum value of two template inline const T& core_max(const T& a, const T& b) { return ((a > b) ? a : b); } /// template function returns the minimum value of two template inline const T& core_min(const T& a, const T& b) { return ((a < b) ? a : b); } /// template function returns the maximum value of three template inline const T& core_max(const T& a, const T& b, const T& c) { return ((a > b) ? core_max(a, c) : core_max(b, c)); } /// template function swaps two values template inline void core_swap(T& a, T& b) { T tmp; tmp = a; a = b; b = tmp; } /// template function rotate three values template inline void core_rotate(T& a, T& b, T& c) { T tmp; tmp = a; a = b; b = c; c = tmp; } /// template function returns the minimum value of three template inline const T& core_min(const T& a, const T& b, const T& c) { return ((a < b) ? core_min(a, c) : core_min(b, c)); } /// template function returns the absolute value template inline const T core_abs(const T& a) { return ((a < T(0)) ? -a : a); } /// returns floor log base 2 of abs(x) /** CONVENTION: lg(0) = -1 */ int flrLg(long x); /// returns floor log base 2 of unsigned long x /** CONVENTION: lg(0) = -1 */ int flrLg(unsigned long x); /// returns ceiling log base 2 of abs(x) /** CONVENTION: lg(0) = -1 */ int clLg(long x); /// returns ceiling log base 2 of unsigned long x /** CONVENTION: lg(0) = -1 */ int clLg(unsigned long x); /// gcd for machine type long long gcd(long m, long n); /// abs for int type inline int abs(int x) { return (x>=0) ? x : (-x); } /// abs for long type inline long abs(long x) { return (x>=0) ? x : (-x); } /// sign for int type inline int sign(int x) { return (x==0) ? 0 : ((x>0) ? 1 : (-1)); } /// sign for long type inline long sign(long x) { return (x==0) ? 0 : ((x>0) ? 1 : (-1)); } /// overloaded << to print out std::string inline std::ostream& operator<< (std::ostream& o, const std::string& s) { o << s.c_str(); return o; } /// implements the "integer mantissa" function // (See CORE_PATH/progs/ieee/frexp.cpp for details) double IntMantissa(double d); /// implements the "integer exponent" function // (See CORE_PATH/progs/ieee/frexp.cpp for details) int IntExponent(double d); /// Writes out an error or warning message in the local file CORE_DIAGFILE /** If last argument (err) is TRUE, then this is considered an error * (not just warning). In this case, the message is also printed in * std::cerr, using std::perror(). * */ void core_error(std::string msg, std::string file, int lineno, bool err); /// This is for debugging messages inline void core_debug(std::string msg){ std::cout << __FILE__ << "::" << __LINE__ << ": " << msg << std::endl; } CORE_END_NAMESPACE #endif // _CORE_COREAUX_H_ core++-1.7/inc/CORE/CoreDefs.h0100644000175000001440000001770410106104525015140 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: CoreDefs.h * Synopsis: * This contains useful Core Library global parameters which * users may modify at runtime or compile time * For each parameter, we provide corresponding methods to * modify or examine the values. * * Written by * Chee Yap * Chen Li * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/CoreDefs.h,v $ * $Revision: 1.12 $ $Date: 2004/08/10 08:37:41 $ ***************************************************************************/ #ifndef _CORE_COREDEFS_H_ #define _CORE_COREDEFS_H_ #include CORE_BEGIN_NAMESPACE ////////////////////////////////////////////////////////////// // defined constants ////////////////////////////////////////////////////////////// /// default accuracy level #define DEFAULT_CORE_LEVEL 3 /// short hand for positive infinity #define CORE_INFTY (CORE_posInfty) ////////////////////////////////////////////////////////////// // global precision parameters ////////////////////////////////////////////////////////////// /// Abort Flag -- default value is true /** The normal behavior is to abort when an invalid expression * is constructed. This flag can be used to turn off this abort. * In any case, an error message will be printed */ extern bool AbortFlag; /// Invalid Flag -- initiallly value is non-negative /** If the Abort Flag is false, then the Invalid flag will be set to * a negative value whenever an invalid expression is constructed. * It is the user's responsibility to check this flag and to make * it non-negative again. */ extern int InvalidFlag; /// Escape Precision in bits extern extLong EscapePrec; /// current ur when EscapePrec triggered /** this flag becomes negative when default EscapePrec is applied */ extern long EscapePrecFlag; /// Escape Precision Warning Flag /** this flag is true by default, and will cause a warning to be printed when EscapePrec is reached */ extern bool EscapePrecWarning; // These following two values determine the precision of computing // approximations in Expr. /// default Relative Precision in bits extern extLong defRelPrec; /// default Absolute Precision in bits extern extLong defAbsPrec; /// default # of decimal digits for conversion from a BF to string. /** This value cannot be CORE_INFTY. See also defOutputDigits. */ /* QUESTION: the following comment seems to contradict the above comment: "controls the printout precision of std::cout for BigFloat" Perhaps, we should merge defOutputDigits and defBigFloatOutputDigits? */ extern long defBigFloatOutputDigits; /// default input precision in digits for converting a string to a Real or Expr /** This value can be CORE_INFTY */ extern extLong defInputDigits; /// controls the printout precision of std::cout for Real and Expr /** This value cannot be CORE_INFTY See also defBigFloatOutputDigits. (it really should be an int, as in std::cout.setprecision(int)). */ extern long defOutputDigits; /// default input precision in digits for converting a string to a BigFloat /** This value cannot be CORE_INFTY. */ extern long defBigFloatInputDigits; /// default BigFloat Division Relative Precision extern extLong defBFdivRelPrec; /// default BigFloat Sqrt Absolute Precision extern extLong defBFsqrtAbsPrec; ////////////////////////////////////////////////////////////// // Mode parameters: incremental, progressive, filters ////////////////////////////////////////////////////////////// /// floating point filter flag extern bool fpFilterFlag; /// if true, evaluation of expressions would be incremental extern bool incrementalEvalFlag; /// progressive evaluation flag extern bool progressiveEvalFlag; /// rational reduction flag extern bool rationalReduceFlag; /// default initial (bit) precision for AddSub Progressive Evaluation extern long defInitialProgressivePrec; ////////////////////////////////////////////////////////////// // methods for setting global precision parameters // including: scientific vs. positional format // All the set methods return the previous global value if any ////////////////////////////////////////////////////////////// /// set default composite precision [defAbsPrec, defRelPrec] /** It determines the precision to which an Expr evaluates its (exact, implicit) constant value. */ inline void setDefaultPrecision(const extLong &r, const extLong &a) { defRelPrec = r; defAbsPrec = a; } /// set default relative precision inline extLong setDefaultRelPrecision(const extLong &r) { extLong old = defRelPrec; defRelPrec = r; return old; } /// set default absolute precision inline extLong setDefaultAbsPrecision(const extLong &a) { extLong old = defAbsPrec; defAbsPrec = a; return old; } /// set default input digits (for Expr, Real) /** it controls the absolute error */ inline extLong setDefaultInputDigits(const extLong &d) { extLong old = defInputDigits; defInputDigits = d; return old; } /// set default output digits (for Expr, Real) inline long setDefaultOutputDigits(long d = defOutputDigits, std::ostream& o = std::cout) { long old = defOutputDigits; defOutputDigits = d; o.precision(d); return old; } /// set default input digits for BigFloat inline long setDefaultBFInputDigits(long d) { long old = defBigFloatInputDigits; defBigFloatInputDigits = d; return old; } /// set default output digits for BigFloat inline long setDefaultBFOutputDigits(long d) { long old = defBigFloatOutputDigits; defBigFloatOutputDigits = d; return old; } /// turn floating-point filter on/off inline bool setFpFilterFlag(bool f) { bool oldf = fpFilterFlag; fpFilterFlag = f; return oldf; } /// turn incremental evaluation flag on/off inline bool setIncrementalEvalFlag(bool f) { bool oldf = incrementalEvalFlag; incrementalEvalFlag = f; return oldf; } /// turn progressive evaluation flag on/off inline bool setProgressiveEvalFlag(bool f) { bool oldf = progressiveEvalFlag; progressiveEvalFlag = f; return oldf; } /// set initial bit precision for progressive evaluation: inline long setDefInitialProgressivePrec(long n) { long oldn = defInitialProgressivePrec; defInitialProgressivePrec = n; return oldn; } /// turn rational reduction flag on/off inline bool setRationalReduceFlag(bool f) { bool oldf = rationalReduceFlag; rationalReduceFlag = f; return oldf; } /// CORE_init(..) is the CORE initialization function. /** We recommend calling it before anything else. Originally motivated by need to get around gnu's compiler bug in which the variable "defAbsPrec" was not properly initialized. But it has other uses, e.g., overriding the default std::cout precision (most systems initializes this value to 6) to our own */ inline void CORE_init(long d) { defAbsPrec = CORE_posInfty; defOutputDigits = d; std::setprecision(defOutputDigits); } /// change to scientific output format inline void setScientificFormat(std::ostream& o = std::cout) { o.setf(std::ios::scientific, std::ios::floatfield); } /// change to positional output format inline void setPositionalFormat(std::ostream& o = std::cout) { o.setf(std::ios::fixed, std::ios::floatfield); } CORE_END_NAMESPACE #endif // _CORE_COREDEFS_H_ core++-1.7/inc/CORE/Expr.h0100644000175000001440000003522710142771621014373 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: Expr.h * Synopsis: a class of Expression in Level 3 * * Written by * Koji Ouchi * Chee Yap * Igor Pechtchanski * Vijay Karamcheti * Chen Li * Zilin Du * Sylvain Pion * Vikram Sharma * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/Expr.h,v $ * $Revision: 1.20 $ $Date: 2004/11/05 21:41:37 $ ***************************************************************************/ #ifndef _CORE_EXPR_H_ #define _CORE_EXPR_H_ #include CORE_BEGIN_NAMESPACE /// \class Expr Expr.h /// \brief Expr is a class of Expression in Level 3 typedef RCImpl RCExpr; class Expr : public RCExpr { public: /// \name Constructors and Destructor //@{ /// default constructor Expr() : RCExpr(new ConstDoubleRep()) {} /// constructor for int Expr(int i) : RCExpr(new ConstDoubleRep(i)) {} /// constructor for unsigned int Expr(unsigned int ui) : RCExpr(new ConstDoubleRep(ui)) {} /// constructor for long Expr(long l) : RCExpr(new ConstRealRep(Real(l))) {} /// constructor for unsigned long Expr(unsigned long ul) : RCExpr(new ConstRealRep(Real(ul))) {} /// constructor for float /** \note the results of this constructor may appear unpredictable to the * user. E.g., one may assume that new Expr(.1) is exactly equal to .1, * but it will be print as * .1000000000000000055511151231257827021181583404541015625. * This is so because .1 cannot be represented exactly as a double * (or, for that matter, as a binary fraction of any finite length). * The value is the closest double value determined by the compiler. */ Expr(float f) : RCExpr(NULL) { // check for valid numbers // (i.e., not infinite and not NaN) if (!finite(f)) { std::cerr << " ERROR : constructed an invalid float! " << std::endl; if (AbortFlag) abort(); InvalidFlag = -1; } rep = new ConstDoubleRep(f); } /// constructor for double Expr(double d) : RCExpr(NULL) { // check for valid numbers // (i.e., not infinite and not NaN) if (!finite(d)) { std::cerr << " ERROR : constructed an invalid double! " << std::endl; if (AbortFlag) abort(); InvalidFlag = -2; } rep = new ConstDoubleRep(d); } /// constructor for BigInt Expr(const BigInt& I) : RCExpr(new ConstRealRep(Real(I))) {} /// constructor for BigRat Expr(const BigRat& R) : RCExpr(new ConstRealRep(Real(R))) {} /// constructor for BigFloat Expr(const BigFloat& F) : RCExpr(new ConstRealRep(Real(F))) {} /// constructor for const char* /** construct Expr from a string representation \a s * with precision \a prec. It is perfectly predictable: * new Expr(".1") is exactly equal to .1, as one would expect. Therefore, * it is generally recommended that the (String) constructor be used in * preference to the (double) constructor. */ Expr(const char *s, const extLong& p = defInputDigits) : RCExpr(new ConstRealRep(Real(s, p))) {} /// constructor for std::string Expr(const std::string& s, const extLong& p = defInputDigits) : RCExpr(new ConstRealRep(Real(s, p))) {} /// constructor for Real Expr(const Real &r) : RCExpr(new ConstRealRep(r)) {} /// constructor for Polynomial node (n-th root) /** default value n=0 means the first positive root */ template Expr(const Polynomial& p, int n = 0) : RCExpr(new ConstPolyRep(p, n)) {} /// constructor for Polynomial node (root in Interval I) template Expr(const Polynomial& p, const BFInterval& I) : RCExpr(new ConstPolyRep(p, I)) {} /// constructor for ExprRep Expr(ExprRep* p) : RCExpr(p) {} //@} /// \name Copy-Assignment-Destructors //@{ /// copy constructor Expr(const Expr& rhs) : RCExpr(rhs) { rep->incRef(); } /// = operator Expr& operator=(const Expr& rhs) { if (this != &rhs) { rep->decRef(); rep = rhs.rep; rep->incRef(); } return *this; } /// destructor ~Expr() { rep->decRef(); } //@} /// \name Compound Assignment Operators //@{ /// += operator Expr& operator+=(const Expr& e) { *this = new AddRep(rep, e.rep); return *this; } /// -= operator Expr& operator-=(const Expr& e) { *this = new SubRep(rep, e.rep); return *this; } /// *= operator Expr& operator*=(const Expr& e) { *this = new MultRep(rep, e.rep); return *this; } /// /= operator Expr& operator/=(const Expr& e) { if ((e.rep)->getSign() == 0) { std::cerr << " ERROR : division by zero ! " << std::endl; if (AbortFlag) abort(); InvalidFlag = -3; } *this = new DivRep(rep, e.rep); return *this; } //@} /// \name Unary Minus, Increment and Decrement Operators //@{ /// unary plus Expr operator+() const { return Expr(*this); } /// unary minus Expr operator-() const { return Expr(new NegRep(rep)); } /// left increment operator (++i) Expr& operator++() { *this += 1; return *this; } /// right increment operator (i++) Expr operator++(int) { Expr t(*this); *this += 1; return t; } /// left decrement operator (--i) Expr& operator--() { *this -= 1; return *this; } /// right deccrement operator (i--) Expr operator--(int) { Expr t(*this); *this -= 1; return t; } //@} /// \name String Conversion Functions //@{ /// set value from const char* void fromString(const char* s, const extLong& prec = defInputDigits) { *this = Expr(s, prec); } /// convert to std::string /** give decimal string representation */ std::string toString(long prec=defOutputDigits, bool sci=false) const { return rep->toString(prec, sci); } //@} // /// \name Conversion Functions //@{ /// convert to \c int int intValue() const { return approx(64, 1024).intValue(); } /// convert to \c long long longValue() const { return approx(64, 1024).longValue(); } /// convert to \c float float floatValue() const { return approx(53, 1024).floatValue(); } /// convert to \c double /** chen: - use equivalent precision (rel:53, abs: 1024) as in IEEE double. enforce an evaluation in case before this has been done before casting. */ double doubleValue() const { return approx(53, 1024).doubleValue(); } /// convert to an interval defined by a pair of \c double /** If value is exact, the two \c double will coincide */ void doubleInterval(double & lb, double & ub) const; /// convert to \c BigInt (approximate it first!) BigInt BigIntValue() const { return rep->BigIntValue(); } /// convert to \c BigRat (approximate it first!) BigRat BigRatValue() const { return rep->BigRatValue(); } /// convert to \c BigFloat (approximate it first!) /** Ought to allow BigFloatValue() take an optional precision argument */ BigFloat BigFloatValue() const { return rep->BigFloatValue(); } //@} /// \name Approximation Function //@{ /// Compute approximation to combined precision [\a r, \a a]. /** Here is the definition of what this means: If e is the exact value and ee is the approximate value, then |e - ee| <= 2^{-a} or |e - ee| <= 2^{-r} |e|. */ const Real & approx(const extLong& relPrec = defRelPrec, const extLong& absPrec = defAbsPrec) const { return rep->getAppValue(relPrec, absPrec); } //@} /// \name Helper Functions //@{ //CONSTANTS: /// return Expr(0) static const Expr& getZero(); /// return Expr(1) static const Expr& getOne(); /// Has Exact Division static bool hasExactDivision() { return true; } /// get the sign int sign() const { return rep->getSign(); } /// is zero? bool isZero() const { return sign() == 0; } /// absolute value Expr abs() const { return (sign() >= 0) ? +(*this) : -(*this); } /// compare function int cmp(const Expr& e) const { return rep == e.rep ? 0 : SubRep(rep, e.rep).getSign(); } /// return the internal representation ExprRep* Rep() const { return rep; } /// get exponent of current approximate value long getExponent() const { return BigFloatValue().exp(); } /// get mantissa of current approximate value BigInt getMantissa() const { return BigFloatValue().m(); } //@} public: /// \name Debug Helper Function //@{ /// debug function void debug(int mode = TREE_MODE, int level = DETAIL_LEVEL, int depthLimit = INT_MAX) const; //@} /// debug information levels enum {LIST_MODE, TREE_MODE, SIMPLE_LEVEL, DETAIL_LEVEL}; };// class Expr #define CORE_EXPR_ZERO Expr::getZero() /// I/O Stream operator<< inline std::ostream& operator<<(std::ostream& o, const Expr& e) { o << *(const_cast(&e.getRep())); return o; } /// I/O Stream operator>> inline std::istream& operator>>(std::istream& i, Expr& e) { Real rVal; i >> rVal; // precision is = defInputDigits if (i) e = rVal; // only assign when reading is successful. return i; } /// floor function BigInt floor(const Expr&, Expr&); /// power function Expr pow(const Expr&, unsigned long); /// addition inline Expr operator+(const Expr& e1, const Expr& e2) { return Expr(new AddRep(e1.Rep(), e2.Rep())); } /// substraction inline Expr operator-(const Expr& e1, const Expr& e2) { return Expr(new SubRep(e1.Rep(), e2.Rep())); } /// multiplication inline Expr operator*(const Expr& e1, const Expr& e2) { return Expr(new MultRep(e1.Rep(), e2.Rep())); } /// division inline Expr operator/(const Expr& e1, const Expr& e2) { if (e2.sign() == 0) { std::cerr << " ERROR : division by zero ! " << std::endl; if (AbortFlag) abort(); InvalidFlag = -4; } return Expr(new DivRep(e1.Rep(), e2.Rep())); } /// modulo operator inline Expr operator%(const Expr& e1, const Expr& e2) { Expr result; floor(e1/e2, result); return result; } /// operator == /** this is inefficient if you compare to zero: * e.g., if (e != 0) {...} use e.isZero() instead */ inline bool operator==(const Expr& e1, const Expr& e2) { return e1.cmp(e2) == 0; } /// operator != inline bool operator!=(const Expr& e1, const Expr& e2) { return e1.cmp(e2) != 0; } /// operator < inline bool operator< (const Expr& e1, const Expr& e2) { return e1.cmp(e2) < 0; } /// operator <= inline bool operator<=(const Expr& e1, const Expr& e2) { return e1.cmp(e2) <= 0; } /// operator < inline bool operator> (const Expr& e1, const Expr& e2) { return e1.cmp(e2) > 0; } /// operator >= inline bool operator>=(const Expr& e1, const Expr& e2) { return e1.cmp(e2) >= 0; } /// return sign inline int sign(const Expr& e) { return e.sign(); } /// is zero? inline bool isZero(const Expr& e) { return e.isZero(); } /// compare /** compare two Expr \a e1 and \a e2, return * \retval -1 if e1 < e2, * \retval 0 if e1 = e2, * \retval 1 if e1 > e2. */ inline int cmp(const Expr& e1, const Expr& e2) { return e1.cmp(e2); } /// absolute value inline Expr abs(const Expr& x) { return x.abs(); } /// absolute value (same as abs) inline Expr fabs(const Expr& x) { return abs(x); } /// floor inline BigInt floor(const Expr& e) { Expr tmp; return floor(e, tmp); } /// ceiling inline BigInt ceil(const Expr& e) { return -floor(-e); } /// floorLg inline long floorLg(const Expr& e) { Expr tmp; return floorLg(floor(e)); } /// ceilLg inline long ceilLg(const Expr& e) { Expr tmp; return ceilLg(ceil(e)); } /// power inline Expr power(const Expr& e, unsigned long p) { return pow(e, p); } /// divisibility predicate /** We do not check if e2 is 0. * */ // NOTE: The name "isDivisible" is not consistent // with the analogous "divisible" predicate in BigInt! inline bool isDivisible(const Expr& e1, const Expr& e2) { Expr result; floor(e1/e2, result); return (result.sign() == 0); } /// square root inline Expr sqrt(const Expr& e) { if (e.sign() < 0) { std::cerr << " ERROR : sqrt of negative value ! " << std::endl; if (AbortFlag) abort(); InvalidFlag = -5; } return Expr(new SqrtRep(e.Rep())); } //Following two have been added to make NT=Expr work for Polynomial /// gcd inline Expr gcd(const Expr& a, const Expr& b) { return Expr(1); } inline Expr div_exact(const Expr& x, const Expr& y) { return x/y - x%y; } /// helper function for constructing Polynomial node (n-th node) template inline Expr rootOf(const Polynomial& p, int n = 0) { return Expr(p, n); } /// helper function for constructing Polynomial node witb BFInterval template inline Expr rootOf(const Polynomial& p, const BFInterval& I) { return Expr(p, I); } /// helper function for constructing Polynomial node with pair of BigFloats template inline Expr rootOf(const Polynomial& p, const BigFloat& x, const BigFloat& y) { return Expr(p, BFInterval(x, y) ); } /// helper function for constructing Polynomial node with pair of doubles template inline Expr rootOf(const Polynomial& p, double x, double y) { return Expr(p, BFInterval(BigFloat(x), BigFloat(y)) ); } /// helper function for constructing Polynomial node with pair of ints template inline Expr rootOf(const Polynomial& p, int x, int y) { return Expr(p, BFInterval(BigFloat(x), BigFloat(y)) ); } /// constructor for Polynomial node of the form x^m - n (i.e., radicals) /** We assume that n >= 0 and m >= 1 * */ template inline Expr radical(const NT& n, int m) { assert(n>=0 && m>=1); if (n == 0 || n == 1 || m == 1) return Expr(n); Polynomial Q(m); Q.setCoeff(0, -n); Q.setCoeff(m, 1); return Expr(Q, 0); } // We include this file here and not from inside Poly.h, // because otherwise VC++.net2003 can't compile Expr.cpp #include CORE_END_NAMESPACE #endif // _CORE_EXPR_H_ core++-1.7/inc/CORE/ExprRep.h0100644000175000001440000011026410143053755015037 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: ExprRep.h * Synopsis: Internal Representation of Expr. * * Written by * Koji Ouchi * Chee Yap * Igor Pechtchanski * Vijay Karamcheti * Chen Li * Zilin Du * Sylvain Pion * Vikram Sharma * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/ExprRep.h,v $ * $Revision: 1.34 $ $Date: 2004/11/06 04:49:49 $ ***************************************************************************/ #ifndef _CORE_EXPRREP_H_ #define _CORE_EXPRREP_H_ #include #include #include CORE_BEGIN_NAMESPACE #ifdef CORE_DEBUG_BOUND // These counters are incremented each time each bound is recognized as equal // to the best one in computeBound(). extern unsigned int BFMSS_counter; extern unsigned int Measure_counter; // extern unsigned int Cauchy_counter; extern unsigned int LiYap_counter; // These counters are incremented each time each bound is recognized as equal // to the best one in computeBound(), and it's strictly the best. extern unsigned int BFMSS_only_counter; extern unsigned int Measure_only_counter; // extern unsigned int Cauchy_only_counter; extern unsigned int LiYap_only_counter; // This counter is incremented each time the precision needed matches the // root bound. extern unsigned int rootBoundHitCounter; #endif const extLong EXTLONG_BIG = (1L << 30); const extLong EXTLONG_SMALL = -(1L << 30); const double log_5 = log(double(5))/log(double(2)); // Returns the ceil of log_2(5^a). inline extLong ceilLg5(const extLong & a) { #if defined (_MSC_VER) || defined (__sgi) return (int) ::ceil(log_5 * a.toLong()); #else return (int) std::ceil(log_5 * a.toLong()); #endif } /// \struct NodeInfo /// \brief store information of a node struct NodeInfo { Real appValue; ///< current approximate value bool appComputed; ///< true if the approx value been computed bool flagsComputed; ///< true if rootBound parameters have been computed extLong knownPrecision; ///< Precision achieved by current approx value #ifdef CORE_DEBUG extLong relPrecision; extLong absPrecision; unsigned long numNodes; #endif /// d_e bounds the degree of the minimal polynomial of a DAG expression /** Basically, d_e is equal to 2^k where k is the number of square-root nodes * in the DAG. If there are other kinds of non-linear nodes, this is * generalized accordingly. */ extLong d_e; bool visited; ///< flag in counting # of sqrts int sign; ///< sign of the value being represented. extLong uMSB; ///< upper bound of the position of Most Significant Bit extLong lMSB; ///< lower bound of the position of Most Significant Bit // For the degree-length method mentioned in Chee's book. /* the degree of defining polynomial P(X) obtained from Resultant calculus * (deprecated now) */ // extLong degree; // extLong length; ///< length is really lg(|| P(X) ||) extLong measure; ///< measure is really lg(Measure) // For our new bound. /// 2^{high(E)} is an UPPER bound for the moduli of ALL conjugates of E. /** In our papers, high is equal to log_2(\overline{\mu(E)}). */ extLong high; /// 2^{-low(E)} is LOWER bound on the moduli of ALL NON_ZERO conjugate of E. /** BE CAREFUL! NOTE THAT UNLIKE "high", the sign of low is negated here! In our papers, low is equal to -log_2(\underline{\nu(E)}) */ extLong low; /// \brief upper bound of the leading coefficient of minimal defining /// polynomial of $E$. extLong lc; /// \brief upper bound of the last non-zero coefficient of minimal defining /// polynomial of $E$. extLong tc; // For the 2-ary BFMSS bound. extLong v2p, v2m; // For the 5-ary BFMSS bound. extLong v5p, v5m; /// 2^u25 is an upper bound for the moduli of all the conjugates of U(E) /** where E = 2^v2*5^v5*U(E)/L(E), U(E) and L(E) are division-free. */ extLong u25; /// 2^l25 is an upper bound for the moduli of all the conjugates of L(E) /** where E = 2^v2*5^v5*U(E)/L(E), U(E) and L(E) are division-free. */ extLong l25; int ratFlag; ///< rational flag BigRat* ratValue; ///< rational value /// default constructor NodeInfo(); };//NodeInfo struct // forward reference // class Expr; /// \class ExprRep /// \brief The sharable, internal representation of expressions // Members: private: int refCount, // public: NodeInfo* nodeInfo, // filteredFp ffVal. class ExprRep { public: /// \name Constructor and Destructor //@{ /// default constructor ExprRep(); /// virtual destructor for this base class virtual ~ExprRep() { if (nodeInfo != NULL) // This check is only for optimization. delete nodeInfo; } //@} /// \name Reference Counting //@{ /// increase reference counter void incRef() { ++refCount; } /// decrease reference counter void decRef() { if (--refCount == 0) delete this; } /// return reference counter int getRefCount() const { return refCount; } /// check whether reference counter == 1 int isUnique() const { return refCount == 1; } //@} /// \name Helper Functions //@{ /// Get the approximate value const Real & getAppValue(const extLong& relPrec = defRelPrec, const extLong& absPrec = defAbsPrec); /// Get the sign. int getSign(); int getExactSign(); const Real& appValue() const { return nodeInfo->appValue; } Real& appValue() { return nodeInfo->appValue; } const bool& appComputed() const { return nodeInfo->appComputed; } bool& appComputed() { return nodeInfo->appComputed; } const bool& flagsComputed() const { return nodeInfo->flagsComputed; } bool& flagsComputed() { return nodeInfo->flagsComputed; } const extLong& knownPrecision() const { return nodeInfo->knownPrecision; } extLong& knownPrecision() { return nodeInfo->knownPrecision; } #ifdef CORE_DEBUG const extLong& relPrecision() const { return nodeInfo->relPrecision; } extLong& relPrecision() { return nodeInfo->relPrecision; } const extLong& absPrecision() const { return nodeInfo->absPrecision; } extLong& absPrecision() { return nodeInfo->absPrecision; } const unsigned long& numNodes() const { return nodeInfo->numNodes; } unsigned long& numNodes() { return nodeInfo->numNodes; } #endif const extLong& d_e() const { return nodeInfo->d_e; } extLong& d_e() { return nodeInfo->d_e; } const bool& visited() const { return nodeInfo->visited; } bool& visited() { return nodeInfo->visited; } const int& sign() const { return nodeInfo->sign; } int& sign() { return nodeInfo->sign; } const extLong& uMSB() const { return nodeInfo->uMSB; } extLong& uMSB() { return nodeInfo->uMSB; } const extLong& lMSB() const { return nodeInfo->lMSB; } extLong& lMSB() { return nodeInfo->lMSB; } // const extLong& length() const { return nodeInfo->length; } // extLong& length() { return nodeInfo->length; } const extLong& measure() const { return nodeInfo->measure; } extLong& measure() { return nodeInfo->measure; } const extLong& high() const { return nodeInfo->high; } extLong& high() { return nodeInfo->high; } const extLong& low() const { return nodeInfo->low; } extLong& low() { return nodeInfo->low; } const extLong& lc() const { return nodeInfo->lc; } extLong& lc() { return nodeInfo->lc; } const extLong& tc() const { return nodeInfo->tc; } extLong& tc() { return nodeInfo->tc; } const extLong& v2p() const { return nodeInfo->v2p; } extLong& v2p() { return nodeInfo->v2p; } const extLong& v2m() const { return nodeInfo->v2m; } extLong& v2m() { return nodeInfo->v2m; } extLong v2() const { return v2p()-v2m(); } const extLong& v5p() const { return nodeInfo->v5p; } extLong& v5p() { return nodeInfo->v5p; } const extLong& v5m() const { return nodeInfo->v5m; } extLong& v5m() { return nodeInfo->v5m; } extLong v5() const { return v5p()-v5m(); } const extLong& u25() const { return nodeInfo->u25; } extLong& u25() { return nodeInfo->u25; } const extLong& l25() const { return nodeInfo->l25; } extLong& l25() { return nodeInfo->l25; } const int& ratFlag() const { return nodeInfo->ratFlag; } int& ratFlag() { return nodeInfo->ratFlag; } const BigRat* ratValue() const { return nodeInfo->ratValue; } BigRat*& ratValue() { return nodeInfo->ratValue; } /// Get BigFloat BigInt BigIntValue(); BigRat BigRatValue(); BigFloat BigFloatValue(); /// represent as a string in decimal value // toString() Joaquin Grech 31/5/2003 std::string toString(long prec=defOutputDigits, bool sci=false) { return (getAppValue(defRelPrec, defAbsPrec)).toString(prec,sci); } //@} /// \name Debug functions //@{ /// dump the contents in this DAG node const std::string dump(int = OPERATOR_VALUE) const; /// print debug information in list mode virtual void debugList(int level, int depthLimit) const = 0; /// print debug information in tree mode virtual void debugTree(int level, int indent, int depthLimit) const = 0; //@} /// \name I/O Stream //@{ friend std::ostream& operator<<(std::ostream&, ExprRep&); //@} private: int refCount; // reference count public: enum {OPERATOR_ONLY, VALUE_ONLY, OPERATOR_VALUE, FULL_DUMP}; NodeInfo* nodeInfo; ///< node information filteredFp ffVal; ///< filtered value /// \name Approximation Functions //@{ /// initialize nodeInfo virtual void initNodeInfo() = 0; /// compute the sign, uMSB, lMSB, etc. virtual void computeExactFlags() = 0; /// compute the minimal root bound extLong computeBound(); /// driver function to approximate void approx(const extLong& relPrec, const extLong& absPrec); /// compute an approximate value satifying the specified precisions virtual void computeApproxValue(const extLong&, const extLong&) = 0; /// Test whether the current approx. value satisfies [relPrec, absPrec] bool withinKnownPrecision(const extLong&, const extLong&); //@} /// \name Misc Functions //@{ /// reduce current node void reduceToBigRat(const BigRat&); /// reduce current node void reduceTo(const ExprRep*); /// reduce current node to zero void reduceToZero(); /// return operator string virtual const std::string op() const { return "UNKNOWN"; } //@} /// \name Degree Bound Functions //@{ /// compute "d_e" based on # of sqrts extLong degreeBound(); /// count actually computes the degree bound of current node. virtual extLong count() = 0; /// reset the flag "visited" virtual void clearFlag() = 0; //@} #ifdef CORE_DEBUG virtual unsigned long dagSize() = 0; virtual void fullClearFlag() = 0; #endif };//ExprRep /// \class ConstRep /// \brief constant node class ConstRep : public ExprRep { public: /// \name Constructors and Destructor //@{ /// default constructor ConstRep() {} /// destructor virtual ~ConstRep() {} //@} /// \name Debug Functions //@{ /// print debug information in list mode void debugList(int level, int depthLimit) const; /// print debug information in tree mode void debugTree(int level, int indent, int depthLimit) const; //@} protected: /// initialize nodeInfo virtual void initNodeInfo(); /// return operator in string const std::string op() const { return "C"; } /// count returns the degree of current node //extLong count() { return d_e(); } extLong count(); /// clear visited flag void clearFlag() { visited() = false; } #ifdef CORE_DEBUG unsigned long dagSize(); void fullClearFlag(); #endif }; /// \class ConstDoubleRep /// \brief constant node class ConstDoubleRep : public ConstRep { public: /// \name Constructors and Destructor //@{ /// default constructor ConstDoubleRep() {} /// constructor for all \c double type ConstDoubleRep(double d) { ffVal = d; } /// destructor ~ConstDoubleRep() {} //@} CORE_MEMORY(ConstDoubleRep) protected: /// compute sign and MSB void computeExactFlags(); /// compute approximation value void computeApproxValue(const extLong&, const extLong&); }; /// \class ConstRealRep /// \brief constant node class ConstRealRep : public ConstRep { public: /// \name Constructors and Destructor //@{ /// default constructor ConstRealRep() : value(CORE_REAL_ZERO) { } /// constructor for all \c Real type ConstRealRep(const Real &); /// destructor ~ConstRealRep() {} //@} CORE_MEMORY(ConstRealRep) private: Real value; ///< internal representation of node protected: /// compute sign and MSB void computeExactFlags(); /// compute approximation value void computeApproxValue(const extLong&, const extLong&); }; /// \class Constant Polynomial Node /// \brief template class where NT is supposed to be some number type template class ConstPolyRep : public ConstRep { public: /// \name Constructors and Destructor //@{ /// default constructor ConstPolyRep() { } /// constructor for Polynomial ConstPolyRep(const Polynomial& p, int n) : ss(p) { // isolate roots using Sturm Sequences I = ss.isolateRoot(n); // check whether n-th root exists if (I.first == 1 && I.second == 0) { core_error("CORE ERROR! root index out of bound", __FILE__, __LINE__, true); abort(); } // test if the root isolated in I is 0: if ((I.first == 0)&&(I.second == 0)) ffVal = 0; else ffVal = computeFilteredValue(); // silly to use a filter here! // since sign is known. } /// constructor for Polynomial ConstPolyRep(const Polynomial& p, const BFInterval& II) : ss(p), I(II) { BFVecInterval v; ss.isolateRoots(I.first, I.second, v); I = v.front(); if (v.size() != 1) { core_error("CORE ERROR! non-isolating interval", __FILE__, __LINE__, true); abort(); } ffVal = computeFilteredValue(); // Chee: this line seems unnecessary } /// destructor ~ConstPolyRep() {} //@} CORE_MEMORY(ConstPolyRep) private: Sturm ss; ///< internal Sturm sequences BFInterval I; ///< current interval contains the real value // IMPORTANT: I.first and I.second are exact BigFloats filteredFp computeFilteredValue() { // refine initial interval to absolute error of 2^(lMSB(k)-54) where // k is a lower bound on the root (use Cauchy Lower Bound). // Hence, the precision we pass to refine should be 54-lMSB(k). // refine with newton (new method) // ss.seq[0] could be zero!! // I=ss.newtonRefine(I, // 54-(ss.seq[0].CauchyLowerBound()).lMSB().asLong()); extLong lbd = ss.seq[0].CauchyLowerBound().lMSB(); if (lbd.isTiny()) I = ss.newtonRefine(I, 54); else I = ss.newtonRefine(I, 54-lbd.asLong()); // is this necessary? //return I.first.doubleValue(); // NOTE: This is not quite right! // It should be "centralized" to set // the error bit correctly. // E.g., otherwise, radical(4,2) will print wrongly. if ((I.first == 0) && (I.second == 0)) // Checkfor zero value return filteredFp(0); BigFloat x = centerize(I.first, I.second); double val = x.doubleValue(); double max = core_max(core_abs(I.first), core_abs(I.second)).doubleValue(); int ind = 1; /* long ee = x.exp()*CHUNK_BIT; unsigned long err = ee > 0 ? (x.err() << ee) : (x.err() >> (-ee)); double max = core_abs(val) + err; int ind = longValue((BigInt(x.err()) << 53) / (x.m() + x.err())); */ return filteredFp(val, max, ind); // Aug 8, 2004, Comment from Chee: // I think we should get rid of filters here! Given the interval I, // we either know the sign (I.first >=0) or (I.second <=0) // or we don't. We don't need to compute all the index stuff. // In fact, you have lost the sign in the above computation... // ALSO, why bother to use filter? }//computeFilteredValue protected: void initNodeInfo() { nodeInfo = new NodeInfo(); d_e() = ss.seq[0].getTrueDegree(); // return degree of the polynomial } /// compute sign and MSB void computeExactFlags() { if ((I.first == 0) && (I.second == 0)) { reduceToZero(); return; } else if (I.second > 0) { uMSB() = I.second.uMSB(); lMSB() = I.first.lMSB(); sign() = 1; } else { // we know that I.first < 0 lMSB() = I.second.lMSB(); uMSB() = I.first.uMSB(); sign() = -1; } // length() = 1+ ss.seq[0].length().uMSB(); measure() = 1+ ss.seq[0].length().uMSB(); // since measure<= length // compute u25, l25, v2p, v2m, v5p, v5m v2p() = v2m() = v5p() = v5m() = 0; u25() = 1+ss.seq[0].CauchyUpperBound().uMSB(); l25() = ceilLg(ss.seq[0].getLeadCoeff()); // assumed coeff is integer!! // ceilLg(BigInt) and ceilLg(Expr) are defined. But if // NT=int, ceilLg(int) is ambiguous! Added ceilLg(int) // under BigInt.h // compute high, low, lc, tc high() = u25(); low() = - (ss.seq[0].CauchyLowerBound().lMSB()); // note the use of negative lc() = l25(); tc() = ceilLg(ss.seq[0].getTailCoeff()); // no rational reduction if (rationalReduceFlag) ratFlag() = -1; flagsComputed() = true; appValue()=centerize(I.first, I.second);// set an initial value for appValue } /// compute approximation value void computeApproxValue(const extLong& relPrec, const extLong& absPrec) { extLong pr = -lMSB() + relPrec; extLong p = pr < absPrec ? pr : absPrec; // bisection sturm (old method) //I = ss.refine(I, p.asLong()+1); // refine with newton (new method) I = ss.newtonRefine(I, p.asLong()+1); appValue() = centerize(I.first, I.second); } }; /// \class UnaryOpRep /// \brief unary operator node class UnaryOpRep : public ExprRep { public: /// \name Constructors and Destructor //@{ /// constructor UnaryOpRep(ExprRep* c) : child(c) { child->incRef(); } /// destructor virtual ~UnaryOpRep() { child->decRef(); } //@} /// \name Debug Functions //@{ /// print debug information in list mode void debugList(int level, int depthLimit) const; /// print debug information in tree mode void debugTree(int level, int indent, int depthLimit) const; //@} protected: ExprRep* child; ///< pointer to its child node /// initialize nodeInfo virtual void initNodeInfo(); /// clear visited flag void clearFlag(); #ifdef CORE_DEBUG unsigned long dagSize(); void fullClearFlag(); #endif }; /// \class NegRep /// \brief unary minus operator node class NegRep : public UnaryOpRep { public: /// \name Constructors and Destructor //@{ /// constructor NegRep(ExprRep* c) : UnaryOpRep(c) { ffVal = - child->ffVal; } /// destructor ~NegRep() {} //@} CORE_MEMORY(NegRep) protected: /// compute sign and MSB void computeExactFlags(); /// compute approximation value void computeApproxValue(const extLong&, const extLong&); /// return operator in string const std::string op() const { return "Neg"; } /// count computes the degree of current node, i.e., d_e(). /** This is now a misnomer, but historically accurate. */ extLong count(); }; /// \class SqrtRep /// \brief squartroot operator node class SqrtRep : public UnaryOpRep { public: /// \name Constructors and Destructor //@{ /// constructor SqrtRep(ExprRep* c) : UnaryOpRep(c) { ffVal = (child->ffVal).sqrt(); } /// destructor ~SqrtRep() {} //@} CORE_MEMORY(SqrtRep) protected: /// compute sign and MSB void computeExactFlags(); /// compute approximation value void computeApproxValue(const extLong&, const extLong&); /// return operator in string const std::string op() const { return "Sqrt"; } /// count computes the degree of current node, i.e., d_e(). /** This is now a misnomer, but historically accurate. */ extLong count(); }; /// \class BinOpRep /// \brief binary operator node class BinOpRep : public ExprRep { public: /// \name Constructors and Destructor //@{ /// constructor BinOpRep(ExprRep* f, ExprRep* s) : first(f), second(s) { first->incRef(); second->incRef(); } /// destructor virtual ~BinOpRep() { first->decRef(); second->decRef(); } //@} /// \name Debug Functions //@{ /// print debug information in list mode void debugList(int level, int depthLimit) const; /// print debug information in tree mode void debugTree(int level, int indent, int depthLimit) const; //@} protected: ExprRep* first; ///< first operand ExprRep* second; ///< second operand /// initialize nodeInfo virtual void initNodeInfo(); /// clear visited flags void clearFlag(); /// count computes the degree of current node, i.e., d_e(). /** This is now a misnomer, but historically accurate. */ extLong count(); #ifdef CORE_DEBUG unsigned long dagSize(); void fullClearFlag(); #endif }; /// \struct Add /// \brief "functor" class used as parameter to AddSubRep<> struct Add { /// name static const char* name; /// unary operator template const T& operator()(const T& t) const { return t; } /// binary operator template T operator()(const T& a, const T& b) const { return a+b; } }; /// \struct Sub /// \brief "functor" class used as parameter to AddSubRep<> struct Sub { /// name static const char* name; /// unary operator template T operator()(const T& t) const { return -t; } /// binary operator template T operator()(const T& a, const T& b) const { return a-b; } }; /// \class AddSubRep /// \brief template class where operator is supposed to be Add or Sub template class AddSubRep : public BinOpRep { public: /// \name Constructors and Destructor //@{ /// constructor AddSubRep(ExprRep* f, ExprRep* s) : BinOpRep(f, s) { ffVal = Op(first->ffVal, second->ffVal); } /// destructor ~AddSubRep() {} //@} CORE_MEMORY(AddSubRep) protected: /// compute sign and MSB void computeExactFlags(); /// compute approximation value void computeApproxValue(const extLong&, const extLong&); /// return operator in string const std::string op() const { return Operator::name; } private: static Operator Op; };//AddSubRep class template Operator AddSubRep::Op; /// AddSubRep::computeExactFlags() /// This function is the heart of Expr class, /// and hence the heart of Core Library! /// Here is where we use the root bounds. template void AddSubRep::computeExactFlags() { if (!first->flagsComputed()) first->computeExactFlags(); if (!second->flagsComputed()) second->computeExactFlags(); int sf = first->sign(); int ss = second->sign(); if ((sf == 0) && (ss == 0)) { // the node is zero reduceToZero(); return; } else if (sf == 0) { // first operand is zero reduceTo(second); sign() = Op(ss); appValue() = Op(appValue()); if (rationalReduceFlag && ratFlag() > 0) *(ratValue()) = Op(*(ratValue())); return; } else if (ss == 0) { // second operand is zero reduceTo(first); return; } // rational node if (rationalReduceFlag) { if (first->ratFlag() > 0 && second->ratFlag() > 0) { BigRat val=Op(*(first->ratValue()), *(second->ratValue())); reduceToBigRat(val); ratFlag() = first->ratFlag() + second->ratFlag(); return; } else ratFlag() = -1; } // neither operand is zero extLong df = first->d_e(); extLong ds = second->d_e(); // extLong md = df < ds ? df : ds; // extLong l1 = first->length(); // extLong l2 = second->length(); extLong m1 = first->measure(); extLong m2 = second->measure(); // length() = df * l2 + ds * l1 + d_e() + md; measure() = m1 * ds + m2 * df + d_e(); // BFMSS[2,5] bound. v2p() = core_min(first->v2p() + second->v2m(), first->v2m() + second->v2p()); v2m() = first->v2m() + second->v2m(); v5p() = core_min(first->v5p() + second->v5m(), first->v5m() + second->v5p()); v5m() = first->v5m() + second->v5m(); if (v2p().isInfty() || v5p().isInfty()) u25() = CORE_INFTY; else u25() = EXTLONG_ONE + core_max(first->v2p() + second->v2m() - v2p() + ceilLg5(first->v5p() + second->v5m() - v5p()) + first->u25() + second->l25(), first->v2m() + second->v2p() - v2p() + ceilLg5(first->v5m() + second->v5p() - v5p()) + first->l25() + second->u25()); l25() = first->l25() + second->l25(); lc() = ds * first->lc() + df * second->lc(); tc() = measure(); high() = core_max(first->high(),second->high())+EXTLONG_ONE; // The following is a subset of the minimization in computeBound(). low() = core_min(measure(), (d_e()-EXTLONG_ONE)*high() + lc()); extLong lf = first->lMSB(); extLong ls = second->lMSB(); extLong uf = first->uMSB(); extLong us = second->uMSB(); extLong l = core_max(lf, ls); extLong u = core_max(uf, us); #ifdef CORE_TRACE std::cout << "INSIDE Add/sub Rep: " << std::endl; #endif if (Op(sf, ss) != 0) { // can't possibly cancel out #ifdef CORE_TRACE std::cout << "Add/sub Rep: Op(sf, ss) non-zero" << std::endl; #endif uMSB() = u + EXTLONG_ONE; lMSB() = l; // lMSB = core_min(lf, ls)+1 better sign() = sf; } else { // might cancel out #ifdef CORE_TRACE std::cout << "Add/sub Rep: Op(sf, ss) zero" << std::endl; #endif uMSB() = u + EXTLONG_ONE; uMSB() = u; if (lf >= us + EXTLONG_TWO) {// one is at least 1 order of magnitude larger #ifdef CORE_TRACE std::cout << "Add/sub Rep: Can't cancel" << std::endl; #endif lMSB() = lf - EXTLONG_ONE; // can't possibly cancel out sign() = sf; } else if (ls >= uf + EXTLONG_TWO) { #ifdef CORE_TRACE std::cout << "Add/sub Rep: Can't cancel" << std::endl; #endif lMSB() = ls - EXTLONG_ONE; sign() = Op(ss); } else if (ffVal.isOK()) {// begin filter computation #ifdef CORE_TRACE std::cout << "Add/sub Rep: filter used" << std::endl; #endif #ifdef CORE_DEBUG_FILTER std::cout << "call filter in " << op() << "Rep" << std::endl; #endif sign() = ffVal.sign(); lMSB() = ffVal.lMSB(); uMSB() = ffVal.uMSB(); } else { // about the same size, might cancel out #ifdef CORE_TRACE std::cout << "Add/sub Rep: iteration start" << std::endl; #endif extLong lowBound = computeBound(); /* Zilin 06/11/2003 * as BFMSS[2] might be a negative number, lowBound can be negative. * In this case, we just set it to 1 since we need at least one bit * to get the sign. In the future, we may need to improve this. */ if (lowBound <= EXTLONG_ZERO) lowBound = EXTLONG_ONE; if (!progressiveEvalFlag) { // convert the absolute error requirement "lowBound" to // a relative error requirement "ur", s.t. // |x|*2^(-ur) <= 2^(-lowBound). // ==> r >= a + lg(x) >= a + (uMSB + 1); // extLong rf = lowBound + (uf + 1); // extLong rs = lowBound + (us + 1); // first->approx(rf, CORE_INFTY); // second->approx(rs, CORE_INFTY); // Chen: considering the uMSB is also an approximate bound. // we choose to use absolute precision up-front. Real newValue = Op(first->getAppValue(CORE_INFTY, lowBound + EXTLONG_ONE), second->getAppValue(CORE_INFTY, lowBound + EXTLONG_ONE)); if (!newValue.isZeroIn()) { // Op(first, second) != 0 lMSB() = newValue.lMSB(); uMSB() = newValue.uMSB(); // chen: to get tighers value. sign() = newValue.sign(); } else if (lowBound.isInfty()) {//check if rootbound is too big core_error("AddSubRep:root bound has exceeded the maximum size\n \ but we still cannot decide zero.\n", __FILE__, __LINE__, false); } else { // Op(first, second) == 0 lMSB() = CORE_negInfty; sign() = 0; } } else { // else do progressive evaluation #ifdef CORE_TRACE std::cout << "Add/sub Rep: progressive eval" << std::endl; #endif // Oct 30, 2002: fixed a bug here! Old versions used relative // precision bounds, but one should absolute precision for addition! // Moreover, this is much more efficient. // ua is the upper bound on the absolute precision in our iteration // Chee, Aug 8, 2004: it is important that ua be strictly // larger than lowBound AND the defaultInitialProgressivePrec, // so that we do at least one iteration of the for-loop. So: // i is the variable for iteration. extLong i = core_min(defInitialProgressivePrec, lowBound.asLong()); extLong ua = lowBound.asLong() + EXTLONG_ONE; // NOTE: ua is allowed to be CORE_INFTY #ifdef CORE_DEBUG_BOUND std::cout << "DebugBound:" << "ua = " << ua << std::endl; #endif // We initially set the lMSB and sign as if the value is zero: lMSB() = CORE_negInfty; sign() = 0; EscapePrecFlag = 0; // reset the Escape Flag // Now we try to determine the real lMSB and sign, // in case it is not really zero: #ifdef CORE_TRACE std::cout << "Upper bound (ua) for iteration is " << ua << std::endl; std::cout << "Starting iteration at i = " << i << std::endl; #endif for ( ; igetAppValue(CORE_INFTY, i), second->getAppValue(CORE_INFTY, i)); #ifdef CORE_TRACE if (newValue.getRep().ID() == REAL_BIGFLOAT) std::cout << "BigFloat! newValue->rep->ID() = " << newValue.getRep().ID() << std::endl; else std::cout << "ERROR, Not BigFloat! newValue->rep->ID() =" << newValue.getRep().ID() << std::endl; std::cout << "newValue = Op(first,second) = " << newValue << std::endl; std::cout << "first:appVal, appComputed, knownPrec, sign =" << first->appValue() << "," << first->appComputed() << "," << first->knownPrecision() << "," << first->sign() << std::endl; std::cout << "second:appVal, appComputed, knownPrec, sign =" << second->appValue() << "," << second->appComputed() << "," << second->knownPrecision() << "," << second->sign() << std::endl; #endif if (!newValue.isZeroIn()) { // Op(first, second) != 0 lMSB() = newValue.lMSB(); uMSB() = newValue.uMSB(); sign() = newValue.sign(); #ifdef CORE_DEBUG_BOUND std::cout << "DebugBound(Exit Loop): " << "i=" << i << std::endl; #endif #ifdef CORE_TRACE std::cout << "Zero is not in, lMSB() = " << lMSB() << ", uMSB() = " << uMSB() << ", sign() = " << sign() << std::endl; std::cout << "newValue = " << newValue << std::endl; #endif break; // assert -- this must happen in the loop if nonzero! } //8/9/01, Chee: implement escape precision here: if (i> EscapePrec) { EscapePrecFlag = -i.asLong();//negative means EscapePrec is used core_error("Escape precision triggered at", __FILE__, __LINE__, false); if (EscapePrecWarning) std::cout<< "Escape Precision triggered at " << EscapePrec << " bits" << std::endl; #ifdef CORE_DEBUG std::cout << "EscapePrecFlags=" << EscapePrecFlag << std::endl; std::cout << "ua =" << ua << ",lowBound=" << lowBound << std::endl; #endif break; }// if }// for (long i=1...) #ifdef CORE_DEBUG_BOUND rootBoundHitCounter++; #endif if (sign() == 0 && ua .isInfty()) { core_error("AddSubRep: root bound has exceeded the maximum size\n \ but we still cannot decide zero.\n", __FILE__, __LINE__, true); } // if (sign == 0 && ua .isInfty()) }// else do progressive } } flagsComputed() = true; }// AddSubRep::computeExactFlags template void AddSubRep::computeApproxValue(const extLong& relPrec, const extLong& absPrec) { // Nov 13, 2002: added the analog of "reduceTo(first)" and "reduceTo(second)" // that is found in computeExactFlags. This is more efficient, but // it also removes a NaN warning in subsequent logic! // E.g., if first=0, then first->uMSB and first->lMSB are -infty, and // subtracting them creates NaN. Chee and Zilin. if (first->sign() == 0) { appValue() = Op(second->getAppValue(relPrec, absPrec)); return; } if (second->sign() == 0) { appValue() = first->getAppValue(relPrec, absPrec); return; } if (lMSB() < EXTLONG_BIG && lMSB() > EXTLONG_SMALL) { extLong rf = first->uMSB()-lMSB()+relPrec+EXTLONG_FOUR; // 2 better if (rf < EXTLONG_ZERO) rf = EXTLONG_ZERO; // from Koji's thesis P63: Proposition 26 extLong rs = second->uMSB()-lMSB()+relPrec+EXTLONG_FOUR; // 2 better if (rs < EXTLONG_ZERO) rs = EXTLONG_ZERO; // from Koji's thesis P63: Proposition 26 extLong a = absPrec + EXTLONG_THREE; // 1 better appValue() = Op(first->getAppValue(rf, a), second->getAppValue(rs, a)); } else { std::cerr << "lMSB = " << lMSB() << std::endl; // should be in core_error core_error("CORE WARNING: a huge lMSB in AddSubRep", __FILE__, __LINE__, false); } } /// \typedef AddRep /// \brief AddRep for easy of use typedef AddSubRep AddRep; /// \typedef SubRep /// \brief SuRep for easy of use typedef AddSubRep SubRep; /// \class MultRep /// \brief multiplication operator node class MultRep : public BinOpRep { public: /// \name Constructors and Destructor //@{ /// constructor MultRep(ExprRep* f, ExprRep* s) : BinOpRep(f, s) { ffVal = first->ffVal * second->ffVal; } /// destructor ~MultRep() {} //@} CORE_MEMORY(MultRep) protected: /// compute sign and MSB void computeExactFlags(); /// compute approximation value void computeApproxValue(const extLong&, const extLong&); /// return operator in string const std::string op() const { return "*"; } }; /// \class DivRep /// \brief division operator node class DivRep : public BinOpRep { public: /// \name Constructors and Destructor //@{ /// constructor DivRep(ExprRep* f, ExprRep* s) : BinOpRep(f, s) { ffVal = first->ffVal / second->ffVal; } /// destructor ~DivRep() {} //@} CORE_MEMORY(DivRep) protected: /// compute sign and MSB void computeExactFlags(); /// compute approximation value void computeApproxValue(const extLong&, const extLong&); /// return operator in string const std::string op() const { return "/"; } }; // inline functions inline int ExprRep::getExactSign() { if (!nodeInfo) initNodeInfo(); if (!flagsComputed()) { degreeBound(); #ifdef CORE_DEBUG dagSize(); fullClearFlag(); #endif computeExactFlags(); } return sign(); } // Chee, 7/17/02: degreeBound() function is now // taken out of "computeExactFlags() inline int ExprRep::getSign() { if (ffVal.isOK()) return ffVal.sign(); else return getExactSign(); } // you need force to approximate before call these functions!! inline BigInt ExprRep::BigIntValue() { return getAppValue().BigIntValue(); } inline BigRat ExprRep::BigRatValue() { return getAppValue().BigRatValue(); } inline BigFloat ExprRep::BigFloatValue() { return getAppValue().BigFloatValue(); } CORE_END_NAMESPACE #endif // _CORE_EXPRREP_H_ core++-1.7/inc/CORE/Filter.h0100644000175000001440000001372510106104525014672 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: Filter.h * Synopsis: * This is a simple filtered floating point number, * represented by the main class, FilterFp. * based on the Burnikel-Funke-Schirra (BFS) filter scheme. * We do not use IEEE exception mechanism here. * It is used by the Expr class. * * Written by * Zilin Du * Chee Yap * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/Filter.h,v $ * $Revision: 1.14 $ $Date: 2004/08/10 08:37:41 $ ***************************************************************************/ #ifndef _CORE_FILTER_H_ #define _CORE_FILTER_H_ #include #if defined (_MSC_VER) || defined (__MINGW32__) // add support for MinGW #define finite(x) _finite(x) #define ilogb(x) (int)_logb(x) #else extern "C" int finite(double); // since SunOS defined "finite" in , extern "C" int ilogb(double); // but gnu defined it in , so we // declared it here explictly. // Zilin Du: 07/18/2002 #endif CORE_BEGIN_NAMESPACE const int POWTWO_26 = (1 << 26); ///< constant 2^26 /// \class filteredFp Filter.h /// \brief filteredFp represents filtered floating point /// numbers, based on BFS filter class filteredFp { double fpVal; // approximate double value for some "real value" double maxAbs; // if (|fpVal| > maxAbs * ind * 2^{-53}) then int ind; // sign of value is sign(fpVal). Else, don't know. // REFERENCE: Burnikel, Funke, Schirra (BFS) filter // Chee: in isOK(), you used the test "|fpVal| >= maxAbs * ind * 2^{-53}" // which seems to be correct (i.e., not |fpVal| > maxAbs * ind * 2^{-53}) public: /// \name Constructors //@{ /// constructor filteredFp (double val = 0.0) : fpVal(val), maxAbs(core_abs(val)), ind(0) {} /// constructor filteredFp (double val, double m, int i) : fpVal(val), maxAbs(m), ind(i) {} /// construct a filteredFp from Real v. /** if v causes an overflow, fpVal = +/- Infty if v causes an underflow, fpVal = ...? */ filteredFp (const Real & value) : fpVal(0.0), maxAbs(0.0), ind(0) { if (value != CORE_REAL_ZERO) { ind = 1; fpVal = value.doubleValue(); maxAbs = core_abs(fpVal); // NaN are propagated correctly by core_abs. } } //@} /// \name Help Functions //@{ /// return filtered value (for debug) double getValue() const { return fpVal; } /// check whether filtered value is OK bool isOK() const { return (fpFilterFlag && // To disable filter finite(fpVal) && // Test for infinite and NaNs (core_abs(fpVal) >= maxAbs*ind*CORE_EPS)); } /// return the sign of fitered value. /** (Note: must call isOK() to check whether the sign is ok before call this function.) */ int sign() const { #ifdef CORE_DEBUG assert(isOK()); #endif if (fpVal == 0.0) return 0; else return fpVal > 0.0 ? 1: -1; } /// lower bound on MSB /** defined to be cel(lg(real value)); ilogb(x) is floor(log_2(|x|)). Also, ilogb(0) = -INT_MAX. ilogb(NaN) = ilogb(+/-Inf) = INT_MAX */ extLong lMSB() const { return extLong(ilogb(core_abs(fpVal)-maxAbs*ind*CORE_EPS)); } /// upper bound on MSB extLong uMSB() const { return extLong(ilogb(core_abs(fpVal)+maxAbs*ind*CORE_EPS)); } //@} /// \name Operators //@{ /// unary minus filteredFp operator -() const { return filteredFp(-fpVal, maxAbs, ind); } /// addition filteredFp operator+ (const filteredFp& x) const { return filteredFp(fpVal+x.fpVal, maxAbs+x.maxAbs, 1+core_max(ind, x.ind)); } /// subtraction filteredFp operator- (const filteredFp& x) const { return filteredFp(fpVal-x.fpVal, maxAbs+x.maxAbs, 1+core_max(ind, x.ind)); } /// multiplication filteredFp operator* (const filteredFp& x) const { return filteredFp(fpVal*x.fpVal, maxAbs*x.maxAbs+DBL_MIN, 1+ind+x.ind); } /// division filteredFp operator/ (const filteredFp& x) const { if (x.fpVal == 0.0) core_error("possible zero divisor!", __FILE__, __LINE__, false); double xxx = core_abs(x.fpVal) / x.maxAbs - (x.ind+1)*CORE_EPS + DBL_MIN; if (xxx > 0) { double val = fpVal / x.fpVal; double maxVal = ( core_abs(val) + maxAbs / x.maxAbs) / xxx + DBL_MIN; return filteredFp(val, maxVal, 1 + core_max(ind, x.ind + 1)); } else return filteredFp(getDoubleInfty(), 0.0, 0); } /// square root filteredFp sqrt () const { if (fpVal < 0.0) core_error("possible negative sqrt!", __FILE__, __LINE__, false); if (fpVal > 0.0) { double val = ::sqrt(fpVal); return filteredFp(val, ( maxAbs / fpVal ) * val, 1 + ind); } else return filteredFp(0.0, ::sqrt(maxAbs) * POWTWO_26, 1 + ind); } /// dump function void dump (std::ostream&os) const { os << "Filter=[fpVal=" << fpVal << ",maxAbs=" << maxAbs << ",ind=" << ind << "]"; } /// helper function (to avoid warning under some compilers) static double getDoubleInfty() { static double d = DBL_MAX; return 2*d; } //@} }; //filteredFp class inline std::ostream & operator<< (std::ostream & os, const filteredFp& fp) { fp.dump(os); return os; } CORE_END_NAMESPACE #endif // _CORE_FILTER_H_ core++-1.7/inc/CORE/Gmp.h0100644000175000001440000000060010073450646014167 0ustar joachimusers// CORE LIBRARY FILE #ifndef _CORE_GMP_H_ #define _CORE_GMP_H_ #include #include CORE_BEGIN_NAMESPACE std::ostream& operator<< (std::ostream &, mpz_srcptr); std::ostream& operator<< (std::ostream &, mpq_srcptr); std::istream& operator>> (std::istream &, mpz_ptr); std::istream& operator>> (std::istream &, mpq_ptr); CORE_END_NAMESPACE #endif // _CORE_GMP_H_ core++-1.7/inc/CORE/Impl.h0100644000175000001440000000246510017722323014350 0ustar joachimusers#ifndef _CORE_IMPL_H_ #define _CORE_IMPL_H_ #include // The following lines only for MS Visual C++ #ifdef _MSC_VER #pragma warning(disable: 4291) // no matching operator delete found #pragma warning(disable: 4146) #pragma warning(disable: 4267) #pragma warning(disable: 4244) #endif // macros for defining namespace #define CORE_BEGIN_NAMESPACE namespace CORE { #define CORE_END_NAMESPACE }; // condition preprocessor for inline function #ifndef CORE_DISABLE_INLINE #define CORE_INLINE inline #else #define CORE_INLINE #endif // Macros for memory pool #ifdef CORE_DISABLE_MEMORY_POOL #define CORE_MEMORY(T) #else #include #define CORE_MEMORY(T) \ void *operator new( size_t size) \ { return MemoryPool::global_allocator().allocate(size); } \ void operator delete( void *p, size_t ) \ { MemoryPool::global_allocator().free(p); } #endif // include some common header files #include #include #include #include #include #include #include #include #include #include #include #include #endif // _CORE_IMPL_H_ core++-1.7/inc/CORE/Makefile0100644000175000001440000000200710106104525014723 0ustar joachimusers# file: Makefile (for inc) # CORE Library version 1.4 # $Id: Makefile,v 1.11 2004/08/10 08:37:41 exact Exp $ # ============================================================= # PATHS ======================================================= # ============================================================= CORE_PATH=.. INCLUDE=-I${CORE_PATH}/inc LIBPATH= save: -mkdir RCS; ci -l -m"make save" *.h Makefile* clean: veryclean: clean REPLACE_STRING="s/1.6, June 2003/1.7, August 2004/;s/1995-2003/1995-2004/" chver: @sed -e ${REPLACE_STRING} ../CORE.h > x.tmp; mv x.tmp ../CORE.h @for f in *.h; do \ sed -e ${REPLACE_STRING} $$f > x.tmp; mv x.tmp $$f; \ done @for f in poly/*.h; do \ sed -e ${REPLACE_STRING} $$f > x.tmp; mv x.tmp $$f; \ done @for f in poly/*.tcc; do \ sed -e ${REPLACE_STRING} $$f > x.tmp; mv x.tmp $$f; \ done @for f in geom2d/*.h; do \ sed -e ${REPLACE_STRING} $$f > x.tmp; mv x.tmp $$f; \ done @for f in geom3d/*.h; do \ sed -e ${REPLACE_STRING} $$f > x.tmp; mv x.tmp $$f; \ done core++-1.7/inc/CORE/MemoryPool.h0100644000175000001440000000566110143053633015553 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: MemoryPool.h * Synopsis: * a memory pool template class. * * Written by * Zilin Du * Chee Yap * Sylvain Pion * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/MemoryPool.h,v $ * $Revision: 1.12 $ $Date: 2004/11/06 04:48:27 $ ***************************************************************************/ #ifndef _CORE_MEMORYPOOL_H_ #define _CORE_MEMORYPOOL_H_ #include // for placement new #include CORE_BEGIN_NAMESPACE #define CORE_EXPANSION_SIZE 1024 template< class T, int nObjects = CORE_EXPANSION_SIZE > class MemoryPool { public: MemoryPool() : head( 0 ) {} void* allocate(size_t size); void free(void* p); // Access the corresponding static global allocator. static MemoryPool& global_allocator() { return memPool; } private: struct Thunk { T object; Thunk* next; }; private: Thunk* head; // next available block in the pool private: // Static global allocator. static MemoryPool memPool; }; template MemoryPool MemoryPool::memPool; template< class T, int nObjects > void* MemoryPool< T, nObjects >::allocate(size_t) { if ( head == 0 ) { // if no more memory in the pool const int last = nObjects - 1; // use the global operator new to allocate a block for the pool Thunk* pool = reinterpret_cast( ::operator new(nObjects * sizeof(Thunk))); // initialize the chain (one-directional linked list) head = pool; for (int i = 0; i < last; ++i ) { pool[i].next = &pool[i+1]; } pool[last].next = 0; } // set head to point to the next object in the list Thunk* currentThunk = head; head = currentThunk->next; return currentThunk; } template< class T, int nObjects > void MemoryPool< T, nObjects >::free(void* t) { assert(t != 0); if (t == 0) return; // for safety // recycle the object memory, by putting it back into the chain reinterpret_cast(t)->next = head; head = reinterpret_cast(t); } CORE_END_NAMESPACE #endif // _CORE_MEMORYPOOL_H_ core++-1.7/inc/CORE/Real.h0100644000175000001440000003247610106104525014334 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: Real.h * * Synopsis: The Real class is a superclass for all the number * systems in the Core Library (int, long, float, double, * BigInt, BigRat, BigFloat, etc) * * Written by * Koji Ouchi * Chee Yap * Chen Li * Zilin Du * Sylvain Pion * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/Real.h,v $ * $Revision: 1.17 $ $Date: 2004/08/10 08:37:41 $ ***************************************************************************/ #ifndef _CORE_REAL_H_ #define _CORE_REAL_H_ #include "RealRep.h" CORE_BEGIN_NAMESPACE // class Real typedef RCImpl RCReal; class Real : public RCReal { public: Real(int i=0) : RCReal(new RealLong(i)) {} Real(unsigned int ui) : RCReal(NULL) { (ui<=INT_MAX) ? (rep=new RealLong(static_cast(ui))) : (rep=new RealBigInt(ui)); } Real(long l) : RCReal(new RealLong(l)) {} Real(unsigned long ul) : RCReal(NULL) { (ul<=LONG_MAX) ? (rep=new RealLong(static_cast(ul))) : (rep=new RealBigInt(ul)); } Real(float f) : RCReal(new RealDouble(f)) {} Real(double d) : RCReal(new RealDouble(d)) {} Real(const BigInt& I) : RCReal(new RealBigInt(I)) {} Real(const BigRat& R) : RCReal(new RealBigRat(R)) {} Real(const BigFloat& F) : RCReal(new RealBigFloat(F)) {} Real(const char* s, const extLong& prec=defInputDigits) : RCReal(NULL) { constructFromString(s, prec); } Real(const std::string& s, const extLong& prec=defInputDigits) : RCReal(NULL){ constructFromString(s.c_str(), prec); } /// \name Copy-Assignment-Destructor //@{ /// copy constructor Real(const Real& rhs) : RCReal(rhs) { rep->incRef(); } /// assignment operator Real& operator=(const Real& rhs) { if (this != &rhs) { rep->decRef(); rep = rhs.rep; rep->incRef(); } return *this; } /// destructor ~Real() { rep->decRef(); } //@} /// \name Compound Assignment Operators //@{ /// operator+= Real& operator+=(const Real& x); /// operator-= Real& operator-=(const Real& x); /// operator*= Real& operator*=(const Real& x); /// operator/= Real& operator/=(const Real& x); //@} /// \name Unary Minus, Increment and Decrement Operators //@{ /// unary plus Real operator+() const { return Real(*this); } /// unary minus Real operator-() const { return -(*rep); } /// left increment operator (++i) Real& operator++() { *this += 1; return *this; } /// left decrement operator (--i) Real& operator--() { *this -= 1; return *this; } /// right increment operator (i++) Real operator++(int) { Real t(*this); *this += 1; return t; } /// right deccrement operator (i--) Real operator--(int) { Real t(*this); *this -= 1; return t; } //@} /// \name String Conversion Functions //@{ /// set value from const char* void fromString(const char* s, const extLong& prec = defInputDigits) { *this = Real(s, prec); } /// convert to std::string /** give decimal string representation */ std::string toString(long prec=defOutputDigits, bool sci=false) const { return rep->toString(prec, sci); } //@} /// \name Conversion Functions //@{ /// convert to \c int int intValue() const { return static_cast(longValue()); } /// convert to \c long long longValue() const { return rep->longValue(); } /// convert to \c float float floatValue() const { return static_cast(doubleValue()); } /// convert to \c double double doubleValue() const { return rep->doubleValue(); } /// convert to \c BigInt BigInt BigIntValue() const { return rep->BigIntValue(); } /// convert to \c BigRat BigRat BigRatValue() const { return rep->BigRatValue(); } /// convert to \c BigFloat (approximate it first!) BigFloat BigFloatValue() const { return rep->BigFloatValue(); } //@} /// \name Aprroximation Function //@{ /// approximation Real approx(const extLong& r=defRelPrec, const extLong& a=defAbsPrec) const { return rep->approx(r, a); } //@} /// \name Helper Functions //@{ /// sign function int sign() const { return rep->sgn(); } /// isZero function bool isZero() const { return sign() == 0; } /// return true if interval contains zero bool isZeroIn() const { return rep->isZeroIn(); } /// absolute value function Real abs() const { return (sign() >= 0) ? +(*this) : -(*this); } /// get mantissa of current approximate value BigInt getMantissa() const { return BigFloatValue().m(); } /// get exponent of current approximate value long getExponent() const { return BigFloatValue().exp(); } /// return true if error free otherwise return false; bool isExact() const { return rep->isExact(); } /// low bound of MSB extLong lMSB() const { return isExact() ? MSB():(rep->BigFloatValue()).lMSB(); } /// upper bound of MSB extLong uMSB() const { return isExact() ? MSB():(rep->BigFloatValue()).uMSB(); } /// MSB - Most Significant Bit extLong MSB() const { return rep->mostSignificantBit; } /// floor of log_2 of Error extLong flrLgErr() const { return rep->flrLgErr(); } /// ceil of log_2 of Error extLong clLgErr() const { return rep->clLgErr(); } /// division with desired precision Real div(const Real& x, const extLong& r) const; /// squareroot Real sqrt(const extLong& x) const { return rep->sqrt(x); } /// squareroot with initial approximation Real sqrt(const extLong& x, const BigFloat& A) const { return rep->sqrt(x, A); } /// correspond to the variables "u25, l25, v2p, v2m, v5p, v5m" in Expr void ULV_E(extLong &up, extLong &lp, extLong &v2p, extLong &v2m, extLong &v5p, extLong &v5m) const { rep->ULV_E(up, lp, v2p, v2m, v5p, v5m); } /// degree of polynomial P(x) unsigned long degree() const { return rep->degree(); } /// \f$ lg(|| P(X) ||_2) \f$ unsigned long length() const { return rep->length(); } /// \f$ lg(|| P(X) ||_\infty) \f$ unsigned long height() const { return rep->height(); } //@} /// return Real(0) static const Real& getZero(); private: void constructFromString(const char *str, const extLong& prec); }; #define CORE_REAL_ZERO Real::getZero() const long halfLongMax = LONG_MAX /2; const long halfLongMin = LONG_MIN /2; struct _real_add { template static Real eval(const T& a, const T& b) { return a+b; } // specialized for two long values static Real eval(long a, long b) { if ((a > halfLongMax && b > halfLongMax) || (a < halfLongMin && b < halfLongMin)) return BigInt(a)+BigInt(b); else return a+b; } }; struct _real_sub { template static Real eval(const T& a, const T& b) { return a-b; } // specialized for two long values static Real eval(long a, long b) { if ((a > halfLongMax && b < halfLongMin) || (a < halfLongMin && b > halfLongMax)) return BigInt(a)-BigInt(b); else return a-b; } }; struct _real_mul { template static Real eval(const T& a, const T& b) { return a*b; } // specialized for two long values static Real eval(long a, long b) { if (flrLg(a) + flrLg(b) >= static_cast(LONG_BIT-2)) return BigInt(a)*BigInt(b); else return a*b; } }; template struct _real_binary_op { static Real eval(const RealRep& a, const RealRep& b) { if (a.ID() == REAL_BIGRAT || b.ID() == REAL_BIGRAT) { if (!a.isExact()) { // a must be a BigFloat and b must be a BigRat BigFloat bf_a = a.BigFloatValue(), bf_b; bf_b.approx(b.BigRatValue(), CORE_posInfty, -bf_a.flrLgErr()); return Op::eval(bf_a, bf_b); } else if (!b.isExact()) { // a must be a BigRat and b must be a BigFloat BigFloat bf_a, bf_b = b.BigFloatValue(); bf_a.approx(a.BigRatValue(), CORE_posInfty, -bf_b.flrLgErr()); return Op::eval(bf_a, bf_b); } else // both are BigRat return Op::eval(a.BigRatValue(), b.BigRatValue()); } else if (a.ID() == REAL_BIGFLOAT || b.ID() == REAL_BIGFLOAT || a.ID() == REAL_DOUBLE || b.ID() == REAL_DOUBLE) { return Op::eval(a.BigFloatValue(), b.BigFloatValue()); } else if (a.ID() == REAL_BIGINT || b.ID() == REAL_BIGINT) { return Op::eval(a.BigIntValue(), b.BigIntValue()); } else { // a.ID() == REAL_LONG && b.ID() == REAL_LONG return Op::eval(a.longValue(), b.longValue()); } } }; typedef _real_binary_op<_real_add> real_add; typedef _real_binary_op<_real_sub> real_sub; typedef _real_binary_op<_real_mul> real_mul; struct real_div { static Real eval(const RealRep& a, const RealRep& b, const extLong& r) { if (a.ID() == REAL_BIGRAT || b.ID() == REAL_BIGRAT) { if (!a.isExact()) { // a must be a BigFloat and b must be a BigRat BigFloat bf_a = a.BigFloatValue(), bf_b; bf_b.approx(b.BigRatValue(), bf_a.MSB() - bf_a.flrLgErr() + 1, CORE_posInfty); return bf_a.div(bf_b, r); } else if (!b.isExact()) { // a must be a BigRat and b must be a BigFloat BigFloat bf_a, bf_b = b.BigFloatValue(); bf_a.approx(a.BigRatValue(), bf_b.MSB() - bf_b.flrLgErr() + 1, CORE_posInfty); return bf_a.div(bf_b, r); } else // both are BigRat return a.BigRatValue()/b.BigRatValue(); } else if (a.ID() == REAL_BIGFLOAT || b.ID() == REAL_BIGFLOAT || a.ID() == REAL_DOUBLE || b.ID() == REAL_DOUBLE) { return a.BigFloatValue().div(b.BigFloatValue(), r); } else if (a.ID() == REAL_BIGINT || b.ID() == REAL_BIGINT) { return BigRat(a.BigIntValue(), b.BigIntValue()); } else { // a.ID() == REAL_LONG && b.ID() == REAL_LONG return BigRat(a.longValue(), b.longValue()); } } }; std::istream& operator>>(std::istream& i, Real& r); inline std::ostream& operator<<(std::ostream& o, const Real& r) { return r.getRep().operator<<(o); } inline Real& Real::operator+=(const Real& rhs) { *this = real_add::eval(getRep(), rhs.getRep()); return *this; } inline Real& Real::operator-=(const Real& rhs) { *this = real_sub::eval(getRep(), rhs.getRep()); return *this; } inline Real& Real::operator*=(const Real& rhs) { *this = real_mul::eval(getRep(), rhs.getRep()); return *this; } inline Real& Real::operator/=(const Real& rhs) { *this = real_div::eval(getRep(), rhs.getRep(), defRelPrec); return *this; } // operator+ inline Real operator+(const Real& x, const Real& y) { return real_add::eval(x.getRep(), y.getRep()); } // operator- inline Real operator-(const Real& x, const Real& y) { return real_sub::eval(x.getRep(), y.getRep()); } // operator* inline Real operator*(const Real& x, const Real& y) { return real_mul::eval(x.getRep(), y.getRep()); } // operator/ inline Real operator/(const Real& x, const Real& y) { return real_div::eval(x.getRep(), y.getRep(), defRelPrec); } // div w/ precision inline Real Real::div(const Real& x, const extLong& r) const { return real_div::eval(getRep(), x.getRep(), r); } inline int cmp(const Real& x, const Real& y) { return (x-y).sign(); } inline bool operator==(const Real& x, const Real& y) { return cmp(x, y) == 0; } inline bool operator!=(const Real& x, const Real& y) { return cmp(x, y) != 0; } inline bool operator>=(const Real& x, const Real& y) { return cmp(x, y) >= 0; } inline bool operator>(const Real& x, const Real& y) { return cmp(x, y) > 0; } inline bool operator<=(const Real& x, const Real& y) { return cmp(x, y) <= 0; } inline bool operator<(const Real& x, const Real& y) { return cmp(x, y) < 0; } /// floor function BigInt floor(const Real&, Real&); /// power function Real pow(const Real&, unsigned long); /// return sign inline int sign(const Real& r) { return r.sign(); } /// is zero? inline bool isZero(const Real& r) { return r.sign() == 0; } /// absolute value inline Real abs(const Real& x) { return x.abs(); } /// absolute value (same as abs) inline Real fabs(const Real& x) { return abs(x); } /// floor inline BigInt floor(const Real& r) { Real tmp; return floor(r, tmp); } /// ceiling inline BigInt ceil(const Real& r) { return -floor(-r); } /// power inline Real power(const Real& r, unsigned long p) { return pow(r, p); } /// square root inline Real sqrt(const Real& x) { return x.sqrt(defAbsPrec); } // class Realbase_for (need defined after Real) // unary minus operator template inline Real Realbase_for::operator-() const { return -ker; } template <> inline Real RealLong::operator-() const { return ker < -LONG_MAX ? -BigInt(ker) : -ker; } CORE_END_NAMESPACE #endif // _CORE_REAL_H_ core++-1.7/inc/CORE/RealRep.h0100644000175000001440000003127410106261351014777 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: RealRep.h * Synopsis: * Internal Representation for Real * * Written by * Koji Ouchi * Chee Yap * Chen Li * Zilin Du * Sylvain Pion * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/RealRep.h,v $ * $Revision: 1.19 $ $Date: 2004/08/11 00:06:01 $ ***************************************************************************/ #ifndef _CORE_REALREP_H_ #define _CORE_REALREP_H_ #include "BigFloat.h" CORE_BEGIN_NAMESPACE class Real; class RealRep { public: extLong mostSignificantBit; public: RealRep() : refCount(1) {} virtual ~RealRep() {} virtual int ID() const = 0; virtual long longValue() const = 0; virtual double doubleValue() const = 0; virtual BigInt BigIntValue() const = 0; virtual BigRat BigRatValue() const = 0; virtual BigFloat BigFloatValue() const = 0; virtual BigFloat approx(const extLong&, const extLong&) const = 0; virtual Real operator-() const = 0; virtual bool isExact() const = 0; virtual int sgn() const = 0; virtual bool isZeroIn() const = 0; virtual BigFloat sqrt(const extLong&) const = 0; virtual BigFloat sqrt(const extLong&, const BigFloat&) const = 0; virtual void ULV_E(extLong &, extLong&, extLong&, extLong&, extLong&, extLong&) const = 0; virtual extLong flrLgErr() const = 0; virtual extLong clLgErr() const = 0; virtual unsigned long degree() const = 0; virtual unsigned long length() const = 0; virtual unsigned long height() const = 0; virtual std::string toString(long prec, bool sci) const = 0; virtual std::ostream& operator<<(std::ostream& o) const = 0; public: void incRef() { ++refCount; } void decRef() { if (--refCount == 0) delete this; } int getRefCount() const { return refCount; } private: int refCount; };//realRep class template class Realbase_for : public RealRep { public: CORE_MEMORY(Realbase_for) Realbase_for(const T& k); ~Realbase_for() {} int ID() const; long longValue() const { return ker.longValue(); } double doubleValue() const { return ker.doubleValue(); } BigInt BigIntValue() const { return BigInt(ker); } BigRat BigRatValue() const { return BigRat(ker); } BigFloat BigFloatValue() const { return BigFloat(ker); } BigFloat approx(const extLong&, const extLong&) const; Real operator-() const; bool isExact() const { return true; } int sgn() const { return ker > 0.0 ? 1 : ( ker == 0.0 ? 0 : -1); } bool isZeroIn() const { return ker == 0.0; } BigFloat sqrt(const extLong&) const; BigFloat sqrt(const extLong&, const BigFloat&) const; void ULV_E(extLong &, extLong&, extLong&, extLong&, extLong&, extLong&) const; extLong flrLgErr() const { return CORE_negInfty; } extLong clLgErr() const { return CORE_negInfty; } unsigned long degree() const { return 1; } unsigned long length() const; unsigned long height() const; std::string toString(long, bool) const { std::stringstream st; st << ker; return st.str(); } std::ostream& operator<<(std::ostream& o) const { return o << ker; } private: T ker; };//Realbase_for class typedef Realbase_for RealLong; typedef Realbase_for RealDouble; typedef Realbase_for RealBigInt; typedef Realbase_for RealBigRat; typedef Realbase_for RealBigFloat; enum { REAL_LONG, REAL_DOUBLE, REAL_BIGINT, REAL_BIGRAT, REAL_BIGFLOAT }; // constructors template<> inline RealLong::Realbase_for(const long& l) : ker(l) { mostSignificantBit = (ker != 0 ) ? extLong(flrLg(ker)) : CORE_negInfty; } template<> inline RealDouble::Realbase_for(const double& d) : ker(d) { mostSignificantBit = BigFloat(ker).MSB(); } template<> inline RealBigInt::Realbase_for(const BigInt& l) : ker(l) { mostSignificantBit = (sign(ker)) ? extLong(floorLg(ker)) : CORE_negInfty; } template<> inline RealBigRat::Realbase_for(const BigRat& l) : ker(l) { mostSignificantBit = BigFloat(ker).MSB(); } template<> inline RealBigFloat::Realbase_for(const BigFloat& l) : ker(l) { mostSignificantBit = ker.MSB(); } // ID() template<> inline int RealLong::ID() const { return REAL_LONG; } template<> inline int RealDouble::ID() const { return REAL_DOUBLE; } template<> inline int RealBigInt::ID() const { return REAL_BIGINT; } template<> inline int RealBigRat::ID() const { return REAL_BIGRAT; } template<> inline int RealBigFloat::ID() const { return REAL_BIGFLOAT; } // cast functions template<> inline long RealLong::longValue() const { return ker; } template<> inline long RealDouble::longValue() const { return static_cast(ker); } template<> inline double RealLong::doubleValue() const { return static_cast(ker); } template<> inline double RealDouble::doubleValue() const { return ker; } template<> inline BigInt RealBigInt::BigIntValue() const { return ker; } template<> inline BigInt RealBigRat::BigIntValue() const { return ker.BigIntValue(); } template<> inline BigInt RealBigFloat::BigIntValue() const { return ker.BigIntValue(); } template<> inline BigRat RealBigRat::BigRatValue() const { return ker; } template<> inline BigRat RealBigFloat::BigRatValue() const { return ker.BigRatValue(); } template<> inline BigFloat RealBigFloat::BigFloatValue() const { return ker; } // isExact() template<> inline bool RealBigFloat::isExact() const { return ker.isExact(); } // sign() template<> inline int RealBigInt::sgn() const { return sign(ker); } template<> inline int RealBigRat::sgn() const { return sign(ker); } template<> inline int RealBigFloat::sgn() const { return ker.sign(); } // isZeroIn() template<> inline bool RealBigInt::isZeroIn() const { return sign(ker) == 0; } template<> inline bool RealBigRat::isZeroIn() const { return sign(ker) == 0; } template<> inline bool RealBigFloat::isZeroIn() const { return ker.isZeroIn(); } // approx template inline BigFloat Realbase_for::approx(const extLong& r, const extLong& a) const { BigFloat x; x.approx(ker, r, a); return x; } template <> inline BigFloat RealLong::approx(const extLong& r, const extLong& a) const { BigFloat x; x.approx(BigInt(ker), r, a); return x; } template <> inline BigFloat RealDouble::approx(const extLong& r, const extLong& a) const { BigFloat x; x.approx(BigRat(ker), r, a); return x; } // sqrt template inline BigFloat Realbase_for::sqrt(const extLong& a) const { return BigFloat(ker).sqrt(a); } template inline BigFloat Realbase_for::sqrt(const extLong& a, const BigFloat& A) const { return BigFloat(ker).sqrt(a, A); } // ULV_E() template<> inline void RealLong::ULV_E(extLong &up, extLong &lp, extLong &v2p, extLong &v2m, extLong &v5p, extLong &v5m) const { // TODO : extract the power of 5. up = lp = v2p = v2m = v5p = v5m = EXTLONG_ZERO; if (ker == 0) return; // Extract the power of 2. unsigned long exp = 0; unsigned long tmp_ker = ker; while ((tmp_ker&1) != 0) { tmp_ker = tmp_ker/2; ++exp; } up = clLg(tmp_ker); lp = 0; v2p = exp; } template<> inline void RealDouble::ULV_E(extLong &up, extLong &lp, extLong &v2p, extLong &v2m, extLong &v5p, extLong &v5m) const { // TODO : can probably be made faster using frexp() or such. // TODO : extract the power of 5. BigRat R = BigRat(ker); up = ceilLg(numerator(R)); v2m = ceilLg(denominator(R)); lp = v2p = v5m = v5p = EXTLONG_ZERO; } template<> inline void RealBigInt::ULV_E(extLong &up, extLong &lp, extLong &v2p, extLong &v2m, extLong &v5p, extLong &v5m) const { up = lp = v2p = v2m = v5p = v5m = EXTLONG_ZERO; if (ker == 0) return; // Extract power of 5. int exp5; BigInt remainder5; getKaryExpo(ker, remainder5, exp5, 5); v5p = exp5; // Extract power of 2. int exp2 = getBinExpo(remainder5); up = ceilLg(remainder5) - exp2; v2p = exp2; } template<> inline void RealBigRat::ULV_E(extLong &up, extLong &lp, extLong &v2p, extLong &v2m, extLong &v5p, extLong &v5m) const { up = lp = v2p = v2m = v5p = v5m = EXTLONG_ZERO; if (ker == 0) return; // Extract power of 5. int exp5; BigInt num5, den5; getKaryExpo(numerator(ker), num5, exp5, 5); if (exp5 != 0) { v5p = exp5; den5 = denominator(ker); } else { getKaryExpo(denominator(ker), den5, exp5, 5); v5m = exp5; } // Now we work with num5/den5. int exp2 = getBinExpo(num5); if (exp2 != 0) { v2p = exp2; } else { exp2 = getBinExpo(den5); v2m = exp2; } up = ceilLg(num5) - v2p; lp = ceilLg(den5) - v2m; } template<> inline void RealBigFloat::ULV_E(extLong &up, extLong &lp, extLong &v2p, extLong &v2m, extLong &v5p, extLong &v5m) const { // TODO : extract power of 5. up = lp = v2p = v2m = v5p = v5m = EXTLONG_ZERO; BigRat R = ker.BigRatValue(); up = ceilLg(numerator(R)); v2m = ceilLg(denominator(R)); } // flrLgErr && clLgErr template<> inline extLong RealBigFloat::flrLgErr() const { return ker.flrLgErr(); } template<> inline extLong RealBigFloat::clLgErr() const { return ker.clLgErr(); } // height && length template<> inline unsigned long RealLong::length() const { return clLg(1+ core_abs(ker)); } // length is (log_2(1+ker^2)) /2. template<> inline unsigned long RealLong::height() const { return clLg(core_max(1L, core_abs(ker))); } // height is max{1, |ker|} template<> inline unsigned long RealDouble::length() const { BigRat R = BigRat(ker); long ln = 1 + ceilLg(numerator(R)); long ld = 1 + ceilLg(denominator(R)); return (ln>ld) ? ln : ld; ///< an upper bound on log_2(sqrt(num^2+den^2)) } template<> inline unsigned long RealDouble::height() const { BigRat R = BigRat(ker); long ln = ceilLg(numerator(R)); long ld = ceilLg(denominator(R)); return (ln>ld) ? ln : ld; ///< an upper bound on log_2(max(|num|, |den|)) } template<> inline unsigned long RealBigInt::length() const { return ceilLg(1 + abs(ker)); } template<> inline unsigned long RealBigInt::height() const { BigInt r(abs(ker)); if (r<1) r = 1; return ceilLg(r); } template<> inline unsigned long RealBigFloat::length() const { // Chen Li: A bug fixed. // The statement in the older version with the bug was: // BigRat R = BigRat(ker); // The BigRat(BigFloat) actually is a // conversion operator (defined in BigFloat.h), _NOT_ // an ordinary class constructor! The C++ language // specify that an intialization is not an assignment // but a constructor operation! // Considering that BigRat(BigFloat) is a conversion // operator not really a constructor. The programmer's // intent is obvious to do an assignment. // However, the g++ seems to be confused by the above // initialization. BigRat R = ker.BigRatValue(); long ln = 1 + ceilLg(numerator(R)); long ld = 1 + ceilLg(denominator(R)); return ( ln > ld ) ? ln : ld; } template<> inline unsigned long RealBigFloat::height() const { // Chen Li: A bug fixed. The old statement with the bug was: // BigRat R = BigRat(ker); // Detailed reasons see above (in RealBigFloat::length()! BigRat R = ker.BigRatValue(); long ln = ceilLg(numerator(R)); long ld = ceilLg(denominator(R)); return ( ln > ld ) ? ln : ld; } template<> inline unsigned long RealBigRat::length() const { long ln = 1 + ceilLg(numerator(ker)); long ld = 1 + ceilLg(denominator(ker)); return ( ln > ld ) ? ln : ld; } template<> inline unsigned long RealBigRat::height() const { long ln = ceilLg(numerator(ker)); long ld = ceilLg(denominator(ker)); return (ln > ld ) ? ln : ld; } // toString() template<> inline std::string RealBigInt::toString(long, bool) const { return ker.get_str(); } template<> inline std::string RealBigRat::toString(long, bool) const { return ker.get_str(); } template<> inline std::string RealBigFloat::toString(long prec, bool sci) const { return ker.toString(prec, sci); } CORE_END_NAMESPACE #endif // _CORE_REALREP_H_ core++-1.7/inc/CORE/RefCount.h0100644000175000001440000000622710106104525015171 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: RefCount.h * Synopsis: * 1. This file defines two templated classes: * RCRepImpl * to create Reps of the class N. The basic functions provided by * this class is reference counting. The other class is * RCImpl * for implementing the envelop-letter paradigm for a class whose Rep * is the class T. So, T is the "letter", and RCImpl the "envelop". * * 2. All Rep classes (BigIntRep, BigFloatRep, BigRatRep, ExprRep, etc) * are derived from RCRepImpl. E.g., * * class BigRatRep : public RCRepImp { * ... * } * (Note the recursive use of "BigRatRep"). * * 3. All Number classes (BigInt, BigFloat, BigRat, Expr, etc) * are derived from RCImpl. E.g. * * typedef RCImpl RCBigRat; * class BigRat : public RCBigRat { * ... * } * * Written by * Zilin Du * Chee Yap * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/RefCount.h,v $ * $Revision: 1.4 $ $Date: 2004/08/10 08:37:41 $ ***************************************************************************/ #ifndef _CORE_REFCOUNT_H_ #define _CORE_REFCOUNT_H_ CORE_BEGIN_NAMESPACE template class RCRepImpl { public: RCRepImpl() : refCount(1) {} void incRef() { ++refCount; } // Without static_cast this to Deriving*, // the destructor of Deriving class will never been called. // this is an example of simulating dynamic binding from ATL. void decRef() { if (--refCount == 0) delete static_cast(this); } int getRefCount() const { return refCount; } private: int refCount; }; template class RCImpl { protected: RCImpl(T* p) : rep(p) {} RCImpl(const RCImpl& x) : rep(x.rep) {} T* rep; ///<= rep is the actual representation public: /// get rep (const) const T& getRep() const { return *rep; } /// get rep (non-const) T& getRep() { return *rep; } /// clone data void makeCopy() { if (rep->getRefCount() > 1) { T* oldValue = rep; rep->decRef(); // safe since rep has been referred at least once. rep = oldValue ? new T(*oldValue) : 0; } } #ifdef CORE_RC_DEBUG /// get counter int getRefCount() const { return rep->getRefCount(); } #endif }; CORE_END_NAMESPACE #endif // _CORE_REFCOUNT_H_ core++-1.7/inc/CORE/Timer.h0100644000175000001440000000360310106104525014517 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: Timer.h * Synopsis: * Timer is a class to provide simple timing functions: * * Here is an example of how to use it: * * Timer timer; * * timer.start(); * .. do some tasks for timing .. * timer.stop(); * * long clock = timer.getClocks(); // get CPU clocks * long seconds = time.getSeconds(); // get seconds * * Written by * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/Timer.h,v $ * $Revision: 1.9 $ $Date: 2004/08/10 08:37:41 $ ***************************************************************************/ #ifndef _CORE_TIMER_H_ #define _CORE_IIMER_H_ #include #include CORE_BEGIN_NAMESPACE class Timer { private: long startClock; long clocks; public: Timer() : startClock(0), clocks(0) {} void start() { startClock = clock(); } void stop() { clocks = clock() - startClock; } long getClocks() { return clocks; } float getSeconds() { return (float)clocks / CLOCKS_PER_SEC; } }; CORE_END_NAMESPACE #endif // _CORE_TIMER_H_ core++-1.7/inc/CORE/extLong.h0100644000175000001440000001507010106104525015060 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: extLong.h * Synopsis: * An extended class for long * * Written by * Koji Ouchi * Chee Yap * Igor Pechtchanski , * Vijay Karamcheti , * Chen Li * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/extLong.h,v $ * $Revision: 1.15 $ $Date: 2004/08/10 08:37:41 $ ***************************************************************************/ #ifndef _CORE_EXTLONG_H_ #define _CORE_EXTLONG_H_ #include #include CORE_BEGIN_NAMESPACE #ifndef LONG_MAX #error "haven't define LONG_MAX" #endif #ifndef LONG_MIN #error "haven't define LONG_MIN" #endif // LONG_MAX and LONG_MIN is assumed in this class: const long EXTLONG_MAX = LONG_MAX; const long EXTLONG_MIN = LONG_MIN + 1; const long EXTLONG_NAN = LONG_MIN; const unsigned long U_EXTLONG_MAX = LONG_MAX; /// \class extLong /// \brief extended long integer class extLong { private: long val; ///< internal representation int flag; ///< flags /**< 0 -- Normal; 1 -- Overflow (positive); -1 -- Overflow (negative); 2 -- NaN (sign can not be determined) */ static void add(extLong& z, long x, long y); public: /// \name Constructors //@{ /// default constructor extLong(); /// constructor for \c bool extLong(bool isNaN); /// constructor for \c int extLong(int); /// constructor for \c unsigned int extLong(unsigned int); /// constructor for \c long extLong(long); /// constructor for \c unsigned long extLong(unsigned long); //@} /// \name Arithmetic and assignment operators //@{ extLong& operator +=(const extLong&); extLong& operator -=(const extLong&); extLong& operator *=(const extLong&); extLong& operator /=(const extLong&); //@} /// \name Incremental, Decremental, Unary minus operators //@{ extLong& operator++(); extLong operator++(int); extLong& operator--(); extLong operator--(int); extLong operator-() const; //@} /// \name Conversion Function //@{ std::string toString() const { std::stringstream st; st << (*this); return st.str(); } long toLong() const; //@} /// \name Builtin functions //@{ long asLong() const; bool isInfty() const; bool isTiny() const; bool isNaN() const; int sign() const; /// comparison int cmp(const extLong &) const; //@} /// \name I/O Stream ///@{ friend std::ostream& operator <<(std::ostream&, const extLong&); //@} static const extLong& getNaNLong(); static const extLong& getPosInfty(); static const extLong& getNegInfty(); }; // constants (Globally) #define CORE_NaNLong extLong::getNaNLong() #define CORE_posInfty extLong::getPosInfty() #define CORE_negInfty extLong::getNegInfty() const extLong EXTLONG_ZERO(0); const extLong EXTLONG_ONE(1); const extLong EXTLONG_TWO(2); const extLong EXTLONG_THREE(3); const extLong EXTLONG_FOUR(4); const extLong EXTLONG_FIVE(5); const extLong EXTLONG_SIX(6); const extLong EXTLONG_SEVEN(7); const extLong EXTLONG_EIGHT(8); // inline functions // private comparison function inline int extLong::cmp(const extLong& x) const { if (isNaN() || x.isNaN()) { core_error("Two extLong NaN's cannot be compared!", __FILE__, __LINE__, false); } return (val == x.val) ? 0 : ((val > x.val) ? 1 : -1); } // default constructor (cheapest one) inline extLong::extLong() : val(0), flag(0) {} inline extLong::extLong(int i) : val(i), flag(0) { if (val == EXTLONG_MAX) flag = 1; else if (val <= EXTLONG_MIN) flag = -1; } inline extLong::extLong(unsigned int ui) : val(ui), flag(0) { if (val >= EXTLONG_MAX) { val = EXTLONG_MAX; flag = 1; } } inline extLong::extLong(long l) : val(l), flag(0) { if (val >= EXTLONG_MAX) flag = 1; else if (val <= EXTLONG_MIN) flag = -1; } inline extLong::extLong(unsigned long u) { if (u >= U_EXTLONG_MAX) { val = EXTLONG_MAX; flag = 1; } else { val = static_cast(u); flag = 0; } } // isNaN defaults to false inline extLong::extLong(bool isNaN) : val(0), flag(0) { if (isNaN) { val = EXTLONG_NAN; flag = 2; } } // comparison operators inline bool operator== (const extLong& x, const extLong& y) { return x.cmp(y) == 0; } inline bool operator!= (const extLong& x, const extLong& y) { return x.cmp(y) != 0; } inline bool operator< (const extLong& x, const extLong& y) { return x.cmp(y) < 0; } inline bool operator<= (const extLong& x, const extLong& y) { return x.cmp(y) <= 0; } inline bool operator> (const extLong& x, const extLong& y) { return x.cmp(y) > 0; } inline bool operator>= (const extLong& x, const extLong& y) { return x.cmp(y) >= 0; } // arithmetic operators inline extLong operator+ (const extLong& x, const extLong& y) { return extLong(x)+=y; } inline extLong operator- (const extLong& x, const extLong& y) { return extLong(x)-=y; } inline extLong operator* (const extLong& x, const extLong& y) { return extLong(x)*=y; } inline extLong operator/ (const extLong& x, const extLong& y) { return extLong(x)/=y; } inline extLong& extLong::operator++ () { *this += 1; return *this; } inline extLong extLong::operator++ (int) { extLong r(*this); *this += 1; return r; } inline extLong& extLong::operator-- () { *this -= 1; return *this; } inline extLong extLong::operator-- (int) { extLong r(*this); *this -= 1; return r; } // conversion to long inline long extLong::toLong() const { return val; } // builtin functions inline long extLong::asLong() const { return val; } inline bool extLong::isInfty() const { return (flag == 1); } inline bool extLong::isTiny() const { return (flag == -1); } inline bool extLong::isNaN() const { return (flag == 2); } CORE_END_NAMESPACE #endif // _CORE_EXTLONG_H_ core++-1.7/inc/CORE/geombase.h0100644000175000001440000000174110106104525015222 0ustar joachimusers/****************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2002 Exact Computation Project * * File: geombase.h * Synopsis: * Code that is common to (and included by) geometry2d.h * and geometry3d.h * * Written by * Shubin Zhao (shubinz@cs.nyu.edu) (2001) * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: geombase.h,v 1.10 2004/08/10 08:37:41 exact Exp $ *****************************************************************/ #ifndef CORE_GEOMETRY_H #define CORE_GEOMETRY_H #include //base class for geom2d and geom3d classes class GeomObj { public: // Exceptions class Exception { public: virtual void print_message( char* msg ) { std::cerr << msg < #include "CORE/geom2d/line2d.h" #include "CORE/geom2d/circle2d.h" #include "CORE/geom2d/segment2d.h" // automaticall link necessary static library under visual c++ #ifdef _MSC_VER #if CORE_LEVEL == 1 #ifdef _DEBUG #pragma comment(lib, "corexDebug_level1.lib") #else #pragma comment(lib, "corex_level1.lib") #endif #elif CORE_LEVEL == 2 #ifdef _DEBUG #pragma comment(lib, "corexDebug_level2.lib") #else #pragma comment(lib, "corex_level2.lib") #endif #elif CORE_LEVEL == 3 #ifdef _DEBUG #pragma comment(lib, "corexDebug_level3.lib") #else #pragma comment(lib, "corex_level3.lib") #endif #endif #endif #endif core++-1.7/inc/CORE/geometry3d.h0100644000175000001440000000263610106104525015526 0ustar joachimusers/****************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2002 Exact Computation Project * * File: geometry3d.h * * Written by * Shubin Zhao (shubinz@cs.nyu.edu) (2001) * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: geometry3d.h,v 1.10 2004/08/10 08:37:41 exact Exp $ *****************************************************************/ #ifndef CORE_GEOMETRY3D_H #define CORE_GEOMETRY3D_H #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include class Point3d; class Line3d; class Segment3d; class Plane3d; class Triangle3d; class Polygon3d; #include #include #include #include #include #include // automaticall link necessary static library under visual c++ #ifdef _MSC_VER #if CORE_LEVEL == 1 #ifdef _DEBUG #pragma comment(lib, "corexDebug_level1.lib") #else #pragma comment(lib, "corex_level1.lib") #endif #elif CORE_LEVEL == 2 #ifdef _DEBUG #pragma comment(lib, "corexDebug_level2.lib") #else #pragma comment(lib, "corex_level2.lib") #endif #elif CORE_LEVEL == 3 #ifdef _DEBUG #pragma comment(lib, "corexDebug_level3.lib") #else #pragma comment(lib, "corex_level3.lib") #endif #endif #endif #endif core++-1.7/inc/CORE/linearAlgebra.h0100644000175000001440000001066110106104525016171 0ustar joachimusers/****************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2002 Exact Computation Project * * File: LinearAlgebra.h * Synopsis: * Linear Algebra Extension of Core Library introducing * class Vector * class Matrix * * Written by * Shubin Zhao (shubinz@cs.nyu.edu) (2001) * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: linearAlgebra.h,v 1.10 2004/08/10 08:37:41 exact Exp $ *****************************************************************/ #ifndef CORE_LINEAR_ALGEBRA_H #define CORE_LINEAR_ALGEBRA_H #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include #include class Vector; class Matrix; //////////////////////////////////////////////////////////////////////// // Class Vector // Generic vectors // Operations implemented: addition, subtraction, dot product //////////////////////////////////////////////////////////////////////// class Vector { private: int dim; double* _rep; public: class RangeException { }; class ArithmeticException { }; explicit Vector(int); Vector(); Vector(double, double); Vector(double, double, double); Vector(const Vector&); Vector(int, double *); ~Vector(); const Vector& operator=(const Vector&); bool operator==(const Vector&); bool operator!=(const Vector&); const Vector& operator+=(const Vector&); const Vector& operator-=(const Vector&); const Vector& operator*=(double); const double& operator[](int) const; double& operator[](int); double norm() const; double maxnorm() const; double infnorm() const; double dimension() const {return dim;} bool isZero() const; Vector cross(const Vector &v) const; static Vector crossProduct(int, ...); friend Vector operator+(const Vector&, const Vector&); friend Vector operator-(const Vector&, const Vector&); friend Vector operator-(const Vector&); friend Vector operator*(const Vector&, double); friend Vector operator*(double, const Vector&); friend Vector operator*(const Matrix&, const Vector&); friend Vector operator*(const Vector&, const Matrix&); friend double dotProduct(const Vector&, const Vector&); friend std::istream& operator>>(std::istream&, Vector&); friend std::ostream& operator<<(std::ostream&, const Vector&); }; //////////////////////////////////////////////////////////////////////// // Class Matrix // Generic matrices // Operations implemented: addition, subtraction, multiplication //////////////////////////////////////////////////////////////////////// class Matrix { private: int dim1, dim2; double* _rep; public: class RangeException { }; class ArithmeticException { }; explicit Matrix(int); Matrix(int, int); Matrix(int, int, double *); Matrix(double, double, double, double); Matrix(double, double, double, double, double, double, double, double, double); Matrix(const Matrix&); ~Matrix(); Matrix& operator=(const Matrix&); bool operator==(const Matrix&); bool operator!=(const Matrix&); const Matrix& operator+=(const Matrix&); const Matrix& operator-=(const Matrix&); const Matrix& operator*=(double); const double& operator()(int, int) const; double& operator()(int, int); // added by chen li // const Vector& row(int i) const; // const Vector& col(int i) const; Matrix matrixAlgebraRemainder(int, int) const; double valueAlgebraRemainder(int, int) const; const Matrix& transpose(); double determinant() const; int dimension_1() const { return dim1; } int dimension_2() const { return dim2; } friend Matrix operator+(const Matrix&, const Matrix&); friend Matrix operator-(const Matrix&, const Matrix&); friend Matrix operator*(const Matrix&, double); friend Matrix operator*(double, const Matrix&); friend Vector operator*(const Vector&, const Matrix&); friend Vector operator*(const Matrix&, const Vector&); friend Matrix operator*(const Matrix&, const Matrix&); friend Matrix transpose(const Matrix&); friend double det(const double a, const double b, const double c, const double d); friend double det(const Vector u, const Vector & v); // u,v are 2d vectors friend std::istream& operator>>(std::istream&, Matrix&); friend std::ostream& operator<<(std::ostream&, const Matrix&); }; //Matrix #endif core++-1.7/inc/CORE/geom2d/0040755000175000001440000000000010147210064014445 5ustar joachimuserscore++-1.7/inc/CORE/geom2d/circle2d.h0100644000175000001440000000755607725666625016351 0ustar joachimusers/***************************************************************** * File: circle2d.h * Synopsis: * Basic 2-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: circle2d.h,v 1.3 2003/09/04 16:51:33 exact Exp $ *****************************************************************/ #ifndef _CIRCLE2D_H #define _CIRCLE2D_H #include #include class Circle2d : public GeomObj { /* An instance C of the data type circle is an oriented circle in the plane passing through three points p1, p2, p3. The orientation of C is equal to the orientation of the three defining points. i.e. orientation(p1, p2, p3). If \Labs{\{p1, p2, p3\}} = 1, C is the empty circle with center p1. If p1, p2 and p3 are collinear, C is a straight line passing through p1, p2 and p3 in this order and the center of C is undefined. */ private: Point2d p1; // the 3 points defining the circle Point2d p2; Point2d p3; int orient; //orientation(p1, p2, p3) Point2d* cp; //pointer to center double * rp; //pointer to radius public: Circle2d( const Point2d& p1, const Point2d& p2, const Point2d& p3); //initialized to the oriented circle through points p1, p2, p3 Circle2d(const Point2d& a, const Point2d& b0); //initialized to the counter-clockwise oriented circle with center a //passing through b0 Circle2d(const Point2d& p); //initialized to the trivial circle with center p Circle2d(); //initialized to the trivial circle with center (0,0) Circle2d(const Point2d& c, double r); //initialized to the circle with center c and radius r with positive //(i.e. counter-clockwise) orientation Circle2d(const Circle2d& c); //copy constructor virtual ~Circle2d(); Circle2d& operator=(const Circle2d& C); //operations Point2d center(); //return the center of the circle double radius(); //returns the radius. //precond: the orientation of the circle is not 0 Point2d point1() const { return p1; } Point2d point2() const { return p2; } Point2d point3() const { return p3; } // Point2d point_on_circle(float alpha); //returns a point p on the circle with angle of alpha bool is_degerate() const { return orient == 0; } //returns true if the defining points are collinear bool is_trivial() const {return p1 == p2; } //returns true if radius is zero int orientation() const { return orient; } int side_of(const Point2d& p) const; // returns -1, +1 or 0 if p lies right of, left of or on the circle // respectively bool inside(const Point2d& p); //returns true if p lies inside of the circle bool outside(const Point2d& p); bool contains(const Point2d& p) const ; //returns true if p lies on the circle, false otherwise double distance(const Point2d& p); //returns the distance between p and the circle: distance to center - radius double distance(const Line2d& l); //returns the distance between l and the circle //distance from center to l minus radius double distance(Circle2d& D); //returns the distance between this circle and circle D //distance between two centers minus two radius bool operator==(const Circle2d& D) const ; bool operator!=(const Circle2d& D) const { return !operator==(D); } friend std::ostream& operator<<(std::ostream& out, Circle2d& c); friend std::istream& operator>>(std::istream& in, Circle2d c); //?? Circle2d & }; // class Circle2d #endif core++-1.7/inc/CORE/geom2d/line2d.h0100644000175000001440000001163010055167013015774 0ustar joachimusers/***************************************************************** * File: line2d.h * Synopsis: * Basic 2-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: line2d.h,v 1.3 2004/05/26 19:20:43 exact Exp $ *****************************************************************/ #ifndef _LINE2D_H_ #define _LINE2D_H_ #include class Line2d : public GeomObj { /* An instance l of the data type $line$ is a directed straight line in the two dimensional plane. The angle between a right oriented horizontal line and $l$ is called the direction of $l$. */ /* member Vector is not used in this class, it's intended for use in the operator+,- etc need to do: assure p0 != p1 */ private: Point2d p0; Point2d p1; Vector V; public: /************************************************************* * constructors *************************************************************/ Line2d(const Point2d & p, const Vector &v); // line initialized to pass through points p and p+v Line2d(const Point2d &p, const Point2d &q); //line is initialized to pass through points p and q directed from p to q // Line2d(const point& p, double alpha); //line passes through point p with direction alpha Line2d(const Line2d &); Line2d(); //line passes through the origin with direction 0. virtual ~Line2d() {} /************************************************************* * member functions *************************************************************/ Vector direction() const { return p1-p0; } // returns the direction as a vector Point2d startPt() const { return p0; } Point2d stopPt() const { return p1; } double distance(Point2d q) const; // returns the Euclidean distance between this line and point q Point2d projection(const Point2d& p) const; // returns the projection of p on this line int orientation( const Point2d& p ) const; // orientation of p0, p1 and p // the sine/cosine of the angle made with positive x-direction double sine() const { return (p1.Y() - p0.Y()) / p0.distance(p1); } double cosine() const { return (p1.X() - p0.X()) / p0.distance(p1); } Line2d rotate90( const Point2d& q) { return Line2d(startPt().rotate90(q), stopPt().rotate90(q)); } double y_abs() const; // returns the y-abscissa of the line double slope() const ; //precond: is not vertical /************************************************************* * predicates *************************************************************/ bool isVertical() const { return p0.X() == p1.X(); } bool isHorizontal() const { return p0.Y() == p1.Y(); } bool is_trivial() const {return p0 == p1; } //meaning for a line? bool contains( const Point2d& p) const { return orientation2d(p0, p1, p) == 0; } bool isCoincident( const Line2d& g) const { return contains(g.p0) && contains(g.p1); } bool isParallel(const Line2d& l) const { return det(V, l.direction()) == 0; } bool operator==( const Line2d& g ) const { return isCoincident(g); } bool operator!=( const Line2d& g ) const { return !operator==(g); } /************************************************************* * intersection *************************************************************/ int intersects(const Line2d& t) const; // decides whether *this and t intersects // return dim of intersection. // return -1 if no intersection GeomObj* intersection(const Line2d& g) const; //if this line and g intersect in a single point, this point is // assigned to p and the result is true, otherwise the result is false /************************************************************* * angles and others *************************************************************/ friend int orientation2d( const Line2d& l, const Point2d& p); // computes the orientation (a, b, p), where a!=b and a and b appear // in this order on line l friend int cmp_slopes(const Line2d& l1, const Line2d& l2) //l1.slope > l2.slope: +1; equal: 0; otherwise: -1 { if (l1.slope() == l2.slope()) return 0; else return (l1.slope() > l2.slope()) ? +1 : -1; } /************************************************************* * I/O *************************************************************/ friend std::istream& operator>>(std::istream& in, Line2d& l); friend std::ostream &operator<<(std::ostream & out, const Line2d & l); }; // class Line2d extern Line2d p_bisector(const Point2d& p, const Point2d& q); #endif core++-1.7/inc/CORE/geom2d/point2d.h0100644000175000001440000001216510105433304016175 0ustar joachimusers/***************************************************************** * File: point2d.h * Synopsis: * Basic 2-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: point2d.h,v 1.9 2004/08/08 14:20:52 exact Exp $ *****************************************************************/ #ifndef _POINT2D_H #define _POINT2D_H #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include #include #include class Point2d : public GeomObj { private: double x, y; public: //CONSTRUCTORS // Point2d(); //initialized to origin(0,0) Point2d(double, double); Point2d(const Point2d &); Point2d(Vector v); //create a point initialized to the point $(v[0], v[1])$ //precondition: v.dim() = 2 //DESTRUCTOR virtual ~Point2d() {} //ASSIGNMENT AND QUERY // Point2d& operator=(const Point2d&); double X() const { return x; } double Y() const { return y; } void setX( const double a){ x = a; } void setY( const double a){ y = a; } void set( const double a, const double b){ x = a; y = b;} int dim() const { return 2; } //CONVERSION // Vector toVector() const { return Vector(X(), Y()); } //DISTANCES // double distance(const Point2d) const; // returns the Euclidean distance between p and this double distance() const { return distance(Point2d(0, 0)); } // returns distance between this and origin //VECTOR OPERATIONS // Vector operator-(const Point2d &) const; Point2d operator+(const Vector &) const; //TRANSFORMATIONS // Point2d rotate90( const Point2d& q); // returns the point rotated about q by angle of 90 degrees //COMPARISONS // bool operator==(const Point2d&) const; bool operator!=(const Point2d& p) const {return !operator==(p); } //INPUT-OUTPUT // friend std::ostream& operator<< (std::ostream&, const Point2d); // write point p to output stream // The format is, e.g., Point2d(1.0, 23) friend std::istream& operator>> (std::istream&, Point2d&); // reads the x and y coordinates of point p from the input stream // The format is " ( x , y ) " where the white spaces are optional. // Even the comma and the "(" and ")" are optional. // The comment char '#' is allowed, and the rest of // the line is then treated as white space. // However, you must not use other kinds of parenthesis // E.g., the following are all equivalent: // 1.0 -0.2 # comment // ( +1.0, -0.2) // 1.0, -.2 friend int readPoints(std::istream &iS, Point2d *pA, int MaxN = 1000, int N = 0); // reads a sequence of points from input stream iS into Point2d array pA. // The input stream constains a sequence of 2K+1 numbers of the form // [NN] ( x1 , y1 ) ( x2 , y2 ) ... ( xK , yK ) // The i-th point is (xi, yi). // (0) NN is optional if N is given as argument (then N is set to NN) // (1) Any of the "(", "," and ")" are optional // (2) Newlines, extra white spaces, '#' are all ignored. // (3) Also, everything after '#' is discarded. // If N > MaxN, nothing is read and 0 is returned. // Returns the number of points actually read, i.e, min(K, N). }; //Point2d Class // ////////////////////////////////////////////////// // AUXILLIARY FUNCTIONS: // ////////////////////////////////////////////////// Point2d midPoint(const Point2d& a, const Point2d& b); // returns midpoint between a and b Point2d aCenter(const Point2d& a, const Point2d& b, machine_double alpha =0.5); // returns the "asymmetric Center" point // that is alpha-fraction of the distance from a to b double area(const Point2d& a, const Point2d& b, const Point2d& c); // returns twice (!) the signed area of triangle (a,b,c) int orientation2d(const Point2d& a, const Point2d& b, const Point2d& c); // returns sign of area(a,b,c) bool leftTurn(const Point2d& a, const Point2d& b, const Point2d& c); // returns true iff orientation2d(a,b,c) = +1 bool rightTurn(const Point2d& a, const Point2d& b, const Point2d& c); // returns true iff orientation2d(a,b,c) = -1 bool collinear(const Point2d& a, const Point2d& b, const Point2d& c); // returns true iff orientation2d(a,b,c) = 0 bool between(const Point2d& a, const Point2d& b, const Point2d& c); // returns true iff orientation2d(a,b,c) = 0 and b is strictly // between a and c. //variant of between: bool betweenVar(const Point2d& a, const Point2d& b, const Point2d& c); // returns true iff the scalar product (a-b, c-b) is positive. // In case orientation2d(a,b,c)=0, then this is equivalent to // b being strictly between a and c. // THE FOLLOWING ARE CALLED by // operator>>(..) and readPoints(..) // bool getToNum( std::istream& in, char mark, bool strict=false) ; // bool getToChar( std::istream& in, char mark) ; // bool startNum(char c) ; #endif core++-1.7/inc/CORE/geom2d/segment2d.h0100644000175000001440000001336510055167013016516 0ustar joachimusers/***************************************************************** * File: segment2d.h * Synopsis: * Basic 2-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: segment2d.h,v 1.3 2004/05/26 19:20:43 exact Exp $ *****************************************************************/ #ifndef _SEGMENT2D_H_ #define _SEGMENT2D_H_ #include #include /************************************************************ * Class Segment2d: * * An instance s of Segment2d is a finite or infinite line segment * in the two dimensional plane, defined by a start point * s.startPt() and a stop point s.stopPt(). It can be regarded * as an open or a closed segment (default: open), and directed * or not (default: directed). * * We do not necessarily assume that startPt() != stopPt(). ************************************************************/ class Segment2d : public GeomObj { private: Point2d p0; Point2d p1; bool directed; // segments can be directed or not (default is directed) bool open; // segments can be open or closed (default is open) public: /************************************************************ * constructors ************************************************************/ Segment2d(const Segment2d &); Segment2d(const Point2d &p, const Point2d &q); //finite segment with endpoints p and q Segment2d(const Point2d & p, const Vector & v); //ray segment Segment2d(); //unit segment from (0,0) to (1,0) virtual ~Segment2d() {} /************************************************************* * member functions *************************************************************/ Point2d startPt() const { return p0; } Point2d stopPt() const { return p1; } void reverse() { Point2d pTmp = p0; p0=p1; p1=pTmp; } // reverses the direction of the segment Line2d toLine() const { return Line2d(p0,p1); } double length() const { return p0.distance(p1); } //length of segment double distance( const Point2d& p ) const; // returns the Euclidean distance between this segment and point q Point2d nearPt( const Point2d& p ) const; // returns the point on segment closest to q; void setDirected( bool _directed ) { directed = _directed; } void setOpen( bool _open ) { directed = open; } // orientation of p0, p1 and p int orientation( const Point2d& p ) const { return toLine().orientation(p); } /************************************************************* * predicates *************************************************************/ bool isOpen() const {return open; } bool isDirected() const {return directed; } bool isTrivial() const {return p0 == p1; } bool isVertical() const { return p0.X() == p1.X(); } bool isHorizontal() const { return p0.Y() == p1.Y(); } bool isCollinear( Point2d& p ) const { return toLine().contains(p); } bool isCoincident( const Segment2d& s) const; bool isParallel( const Segment2d& s ) { return toLine().isParallel( s.toLine() ); } bool contains( const Point2d& p ) const; bool contains( const Segment2d& s ) const { return contains(s.startPt()) && contains(s.stopPt()); } bool operator==(const Segment2d& s) const { return isCoincident(s); } bool operator!=(const Segment2d& s) const { return !isCoincident(s); } /************************************************************* * intersection *************************************************************/ int intersects( const Line2d& l ) const; //decides whether *this and t intersect in one point // return dim of intersetion int intersects( const Segment2d& s ) const; //decides whether *this and t intersect in one point // return dim of intersetion GeomObj* intersection( const Line2d& l ) const; // return intersection point if this segment and l intersect at a single point // the intersection point is returned GeomObj* intersection( const Segment2d& s ) const; // return intersection point if this segment and s intersect at a single point // the intersection point is returned /************************************************************* * angles *************************************************************/ // the sine/cosine of the angle made with positive x-direction double sine() const { return (p1.Y() - p0.Y()) / length() ; } double cosine() const { return (p1.X() - p0.X()) / length() ; } Line2d rotate90(const Point2d& q) { return Line2d(startPt().rotate90(q), stopPt().rotate90(q)); } // computes the orientation (a, b, p), where a!=b and a and b appear // in this order on segment l friend int orientation2d( const Segment2d& s, const Point2d& p) { return orientation2d( s.toLine(), p ); } friend int cmp_slopes( const Segment2d& s1, const Segment2d& s2) //l1.slope > l2.slope: +1; equal: 0; otherwise: -1 { Line2d l1 = s1.toLine(); Line2d l2 = s2.toLine(); if (l1.slope() == l2.slope()) return 0; else return (l1.slope() > l2.slope()) ? +1 : -1; } /************************************************************* * I/O *************************************************************/ friend std::istream& operator>>(std::istream& in, Segment2d& l); friend std::ostream &operator<<(std::ostream & out, const Segment2d & l); // syntax: {[} p {===} q {]} }; //class Segment2d #endif core++-1.7/inc/CORE/geom3d/0040755000175000001440000000000010147210064014446 5ustar joachimuserscore++-1.7/inc/CORE/geom3d/line3d.h0100644000175000001440000000771107725666633016031 0ustar joachimusers/***************************************************************** * File: line3d.h * Synopsis: * Basic 3-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: line3d.h,v 1.2 2003/09/04 16:51:39 exact Exp $ *****************************************************************/ #ifndef _LINE3D_H_ #define _LINE3D_H_ #include class Line3d : public GeomObj{ /************************************************************ * An instance l of the class Line3d is a directed line * in the three dimensional plane. The angle between a right oriented * horizontal line and $l$ is called the direction of $l$. * We assume that l is defined by two points, l.startPt() * and l.stopPt(). We do not assure that these points are distinct. * So the line could be "improper". But most operators assume * that lines are proper (it is the user's responsibility to check). * * In the future, we may generalize this to allow the dual * representation in terms of a linear equation. * * Member Vector is not used in this class. It is intended for use in * the operator+/-, etc. ************************************************************/ private: Point3d p0; // = startPt Point3d p1; // = stopPt Vector V; // = stopPt - startPt public: /************************************************************ * constructors ************************************************************/ Line3d(const Point3d & p, const Vector &v); // line initialized to pass through points p and p+v Line3d(const Point3d &p, const Point3d &q); //line is initialized to pass through points p and q directed from p to q Line3d(const Line3d &l); //copy constructor //Line3d(const Segment3d & s): p0(s.startPt()), p1(s.stopPt()), V(s.direction()) {} //construct from a segment Line3d(); //horizontal line passes through the origin with direction 0. virtual ~Line3d() {} /************************************************************ * MEMBERS ************************************************************/ virtual int dim() const { return 1; } Point3d startPt() const { return p0; } Point3d stopPt() const { return p1; } const Vector direction() const { return V; } double distance(const Point3d& q) const; // returns the Euclidean distance between this line and point q Point3d projection(const Point3d& p) const; // returns the projection of p on this line /************************************************************ * PREDICATES ************************************************************/ bool isProper() {return p0 == p1; } bool contains(const Point3d& p) const; bool isCoincident(const Line3d& g) const; bool isParallel(const Line3d& g) const; // same slope bool isSkew(const Line3d& l2) const; bool operator==(const Line3d& g) const { return isCoincident(g); } bool operator!=(const Line3d& g) { return !operator==(g); } int intersects(const Line3d& g ) const; // return the dimension of the intersection of g with this line: // -1 if disjoint (i.e., parallel but distinct lines) // 1 if coincident // 0 if intersect in a point. In this case, the // intersection point is assigned to p if this is available. GeomObj* intersection(const Line3d &l) const; /************************************************************ * I/O ************************************************************/ friend std::istream& operator>>(std::istream& in, Line3d& l); friend std::ostream& operator<<(std::ostream & out, const Line3d & l); }; //class Line3d #endif core++-1.7/inc/CORE/geom3d/plane3d.h0100644000175000001440000001015507725666633016175 0ustar joachimusers /***************************************************************** * File: plane3d.h * Synopsis: * Basic 3-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: plane3d.h,v 1.2 2003/09/04 16:51:39 exact Exp $ *****************************************************************/ #ifndef _PLANE3D_H_ #define _PLANE3D_H_ #include #include class Segment3d; class Plane3d : public GeomObj{ private: // ax + by + cz + d = 0 double a; double b; double c; double d; Vector n; public: /************************************************************ * constructors ************************************************************/ Plane3d(): a(0.0), b(0.0), c(0.0), d(0.0), n(0.0, 0.0, 0.0) {} //trivial plane Plane3d(const Plane3d & plane); //copy constructor Plane3d(const Point3d & p, const Vector &v); // plane with direction v passes through point p Plane3d(const Point3d &p1, const Point3d &p2, const Point3d &p3); //plane passes through points p1, p2, p3 Plane3d(const Point3d &p, const Line3d &l); //plane passes through point p and line l Plane3d(const Point3d &p, const Segment3d &s); //plane passes through point p and segment s Plane3d(const Vector &v1, double d1); // plane determined by vector and displacement // plane determined by equation Plane3d(double a1, double b1, double c1, double d1); virtual ~Plane3d() {} /************************************************************ * member functions ************************************************************/ virtual int dim() const { return 2; } double* coeffients() const; double A() const { return a; } double B() const { return b; } double C() const { return c; } double displacement() const { return d; } const Vector& normal() const { return n; } // test if plane is trivial bool isTrivial() const { return a==double(0) && b==double(0) && c==double(0); } // apply equation of plane to a point double apply( const Point3d& p ) const { return a*p.X()+b*p.Y()+c*p.Z()+d; } // plane against plane predicates bool isCoincident(const Plane3d& pl) const; bool isParallel(const Plane3d& pl) const; // test parallel bool isParallel(const Line3d& l) const; bool contains( const Point3d& p ) const; bool contains( const Line3d& l ) const; bool contains( const Segment3d& s ) const; // returns the projection of p on this line Point3d projection(const Point3d& p) const; /** be careful of line(segment) projection * It could be a line(segment) or point * The function returns degenerated line(segment) in point case **/ Line3d projection(const Line3d& l) const; Segment3d projection(const Segment3d& s) const; //distance double distance( const Point3d& p ) const; double distance( const Line3d& l ) const; double distance( const Segment3d& s ) const; /** intersect predicates * later implementation may return like this: * return dimension of intersection * return -1 if not intersect * return 0 if intersect on a point ... and so on. **/ int intersects( const Line3d& l ) const; int intersects( const Point3d& p ) const; int intersects( const Segment3d& s ) const; int intersects( const Plane3d& pl ) const; // return intersection GeomObj* intersection( const Line3d& l ) const; GeomObj* intersection( const Segment3d& s ) const; GeomObj* intersection( const Plane3d& pl ) const; bool operator==(const Plane3d& pl) const { return isCoincident(pl); } bool operator!=(const Plane3d& pl) { return !operator==(pl); } friend std::istream& operator>>(std::istream& in, Plane3d& pl); friend std::ostream& operator<<(std::ostream& out, const Plane3d& pl); }; //class Plane3d #endif core++-1.7/inc/CORE/geom3d/point3d.h0100644000175000001440000001204207725666633016224 0ustar joachimusers /***************************************************************** * File: point3d.h * Synopsis: * Basic 3-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: point3d.h,v 1.3 2003/09/04 16:51:39 exact Exp $ *****************************************************************/ #ifndef _POINT3D_H #define _POINT3D_H #include #include #include // class defination for 3d points class Point3d : public GeomObj{ private: double x, y, z; public: /************************************************************ * constructors and destructors ************************************************************/ Point3d(); //initialized to origin(0,0,0) Point3d(double x, double y, double z); Point3d(const Point3d & p); Point3d(const Vector& v); //create a point initialized to the point $(v[0], v[1], v[2])$ //precondition: v.dim() >= 3 (only the first 3 components are used) //destructor virtual ~Point3d() {} /************************************************************ * Methods ************************************************************/ Point3d& operator=(const Point3d&); double X() const { return x; } double Y() const { return y; } double Z() const { return z; } Vector toVector() const { return Vector(x, y, z); } virtual int dim() const { return 0; } double distance(const Point3d& p) const; // returns the Euclidean distance between p and this double distance() const { return distance(Point3d(0, 0, 0)); } // returns distance between this and origin Point3d negate() const { return Point3d(-x, -y, -z); } Vector operator-(const Point3d &p) const; Point3d operator+(const Vector &v) const; Point3d operator-(const Vector &v) const; Point3d operator*(const double& d) const; /************************************************************ * predicates ************************************************************/ bool operator==(const Point3d&) const; bool operator!=(const Point3d& p) const {return !operator==(p); } /************************************************************ * I/O, debugging ************************************************************/ friend std::ostream& operator<< (std::ostream&, const Point3d&); // write point p to output stream friend std::istream& operator>>(std::istream&, Point3d&); // reads the x and y coordinates of point p from the input stream // routines to display point: void dump() const { std::cout << "(" << x <<", " << y << z << ")" ; // simply outputs "(x, y)" } void dump(const char* s) const { std::cout << s << "(" << x <<", " << y << z << ")" ; // s is the prefix message } void dump(const char* s, const char* ss) const { std::cout << s << "(" << x <<", " << y << z << ss ; // ss is the suffix message } // compute signed volume of a tetrahedron friend double signed_volume(const Point3d& a, const Point3d& b, const Point3d& c, const Point3d& d); };//class Point3d /************************************************************ * Inline implementation and some 3d predicates ************************************************************/ // removed inline implementation for compile under visual c++ // Zilin Du // midPt(p, q) returns (p+q)/2: Point3d midPt3d ( Point3d& a, Point3d& b); /* orientation3d(a, b, c, d) * computes the orientation of points a, b, c, d as the sign * of the determinant * | ax ay az 1 | * | bx by bz 1 | * | cx cy cz 1 | * | dx dy dz 1 | * i.e., it returns +1 if d lies in the opposite side w.r.t. the * counter-clockwise side of plane formed by a, b, c */ int orientation3d(const Point3d& a, const Point3d& b, const Point3d& c, const Point3d& d); /* area(a, b, c) returns 1/2 times the determinant of orientation(a,b,c) * above. This is the signed area of the triangle determined by a, b, c, * positive if orientation(a,b,c) > 0, and negative otherwise. */ double volume(const Point3d& a, const Point3d& b, const Point3d& c, const Point3d& d); /* returns true if points a, b, c and d are coplanar, i.e., * orientation(a, b, c, d) = 0, and false otherwise. */ bool coplanar(const Point3d& a, const Point3d& b, const Point3d& c, const Point3d& d); /************************************************************ * CONSTANTS ************************************************************/ static Point3d ORIGIN_3D(0.0, 0.0, 0.0); static Point3d X_UNIT_3D(1.0, 0.0, 0.0); static Point3d Y_UNIT_3D(0.0, 1.0, 0.0); static Point3d Z_UNIT_3D(0.0, 0.0, 1.0); #endif core++-1.7/inc/CORE/geom3d/polygon3d.h0100644000175000001440000001064707725666633016573 0ustar joachimusers/***************************************************************** * File: polygon3d.h * Synopsis: * Basic 3-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: polygon3d.h,v 1.2 2003/09/04 16:51:39 exact Exp $ *****************************************************************/ #ifndef _POLYGON3D_H_ #define _POLYGON3D_H_ #include #include #include #include class Polygon3d : public GeomObj { private: class PointNode { public: Point3d *p; PointNode *prev; PointNode *next; PointNode( const Point3d& _p ) { p = new Point3d(_p); prev=NULL; next=NULL; } ~PointNode() { delete p; } }; PointNode* headN; //head of linked list int size; //length of the list public: class Iterator; friend class Iterator; class Iterator { private: PointNode* pointer; public: Iterator( PointNode* node ) { pointer = node; } PointNode* getPointer() { return pointer; } //bool hasNext() { return pointer->next != Polygon3d::headN; } //Point3d* nextPoint() { pointer=pointer->next; return pointer->prev->p; } Iterator& operator =(Iterator & it) { pointer=it.getPointer(); return *this; } // postfix only Iterator& operator ++(int) { pointer = pointer->next; return *this; } Iterator& operator --(int) { pointer = pointer->prev; return *this; } Point3d* getPoint() { return pointer->p; } // remove current node void remove( ) { PointNode* temp = pointer; pointer->next->prev = pointer->prev; pointer->prev->next = pointer->next; pointer = pointer->prev; delete temp; } }; // default Polygon3d(); // initialize given a triangle // not included, use Polygon3d::toPolygon() instead //Polygon3d(const Triangle3d& T); //copy constructor Polygon3d(const Polygon3d& plg); virtual ~Polygon3d(); /************************************************************ * member functions ************************************************************/ // view a polygon as a surface virtual int dim() const { return 2; } int getSize() const { return size; } Iterator getIterator() { return Iterator(headN); } bool searchPoint( const Point3d& p ) const; Point3d* getPoint( int index ) const; // append to the end of list void addPoint( const Point3d& p ); // remove point at given position void removePoint( int index ); // return false if point doesn't exist bool removePoint( const Point3d& p ); void removeAllPoints(); // get next point of p // return NULL if p doesn't exist Point3d* nextPoint( const Point3d& p ) const; // get previous point of p // return NULL if p doesn't exist Point3d* prevPoint( const Point3d& p ) const; //operators Point3d* operator []( int index ) const { return getPoint(index); } Polygon3d& operator =(const Polygon3d& plg); // test identity bool operator ==(Polygon3d& plg) const; bool operator !=(Polygon3d& plg) const { return !(*this == plg); } // verify if polygon is valid bool verify(); // test coplanarity bool isCoplanar( const Point3d& p ) const; bool isCoplanar( const Segment3d& s ) const { return isCoplanar(s.startPt()) && isCoplanar(s.stopPt()); } bool isCoplanar( const Line3d& l ) const { return isCoplanar(l.startPt()) && isCoplanar(l.stopPt()); } bool isCoplanar( const Plane3d& pl ) const; // test if p is on any edge bool isOnEdge( const Point3d& p ) const; protected: void freeMemory(); // delete the point list // copy point list from other polygon // make sure old list has been deleted before calling this void copy( const Polygon3d& plg ); /************************************************************ * I/O ************************************************************/ friend std::ostream& operator<<(std::ostream& in, const Polygon3d& plg); }; //class Polygon3d #endif core++-1.7/inc/CORE/geom3d/segment3d.h0100644000175000001440000001160107725666634016536 0ustar joachimusers/***************************************************************** * File: segment3d.h * Synopsis: * Basic 3-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: segment3d.h,v 1.2 2003/09/04 16:51:40 exact Exp $ *****************************************************************/ #ifndef _SEGMENT3D_H_ #define _SEGMENT3D_H_ #include #include /************************************************************ * Class Segment3d: * * An instance s of Segment3d is a finite or infinite line segment * in the three dimensional plane, defined by a start point * s.startPt() and a stop point s.stopPt(). It can be regarded * as an open or a closed segment (default: open), and directed * or not (default: directed). * * We do not necessarily assume that startPt() != stopPt(). ************************************************************/ #define S_TYPE_FINITE 0 #define S_TYPE_RAY 1 #define S_TYPE_LINE 2 class Plane3d; class Segment3d : public GeomObj{ private: Point3d p0; Point3d p1; bool directed; // segments can be directed or not (default is directed) bool open; // segments can be open or closed (default is open) //int finite; // 0=finite, 1=ray, 2=line (default is 0) public: /************************************************************ * constructors ************************************************************/ Segment3d(const Segment3d &s); Segment3d(const Point3d &p, const Point3d &q); //finite segment with endpoints p and q Segment3d(const Point3d & p, const Vector & v); //ray segment Segment3d(); //trivial segment from (0,0) to (0,0) virtual ~Segment3d() {} /************************************************************* * member functions *************************************************************/ virtual int dim() const { return 1; } Point3d startPt() const { return p0; } Point3d stopPt() const { return p1; } Vector direction() const { return p1 - p0; } void reverse(); // reverses the direction of the segment void setDirected( bool beDirected ) { directed = beDirected; } void setOpen( bool beOpen ) { open = beOpen; } void setStartPt( Point3d& p ) { p0 = p; } void setStopPt ( Point3d& p ) { p1 = p; } double length() const { return p0.distance(p1); } //length of segment Line3d toLine() const { return Line3d(p0,p1); } double distance( const Point3d& p ) const; // returns the Euclidean distance between this segment and point q Point3d nearPt( const Point3d& q ) const; // returns the point on segment closest to q; /************************************************************* * predicates *************************************************************/ bool isDirected() const { return directed; } bool isOpen() const {return open; } bool isTrivial() const {return p0 == p1; } bool isCollinear( const Point3d& p ) const {return toLine().contains(p); } bool contains( const Segment3d& s ) const { return contains(s.startPt()) && contains(s.stopPt()); } bool isCoincident( const Segment3d& s) const; bool isCoplanar( const Line3d& s) const; bool isCoplanar( const Segment3d& s) const; bool contains( const Point3d& p ) const; bool operator==( const Segment3d& s ) { return isCoincident( s ); } bool operator!=( const Segment3d& s ) { return !operator==(s); } /************************************************************* * intersection *************************************************************/ int intersects( const Line3d& l ) const; //decides whether *this and t intersect in one point // return dim of intersetion int intersects( const Segment3d& s ) const; //decides whether *this and t intersect in one point // return dim of intersetion GeomObj* intersection( const Line3d& l ) const; // return intersection point if this segment and l intersect at a single point // the intersection point is returned GeomObj* intersection( const Segment3d& s ) const; // return intersection point if this segment and s intersect at a single point // the intersection point is returned Plane3d bisect_plane() const; // return bisector plane /************************************************************* * I/O *************************************************************/ friend std::istream& operator>>(std::istream& in, Segment3d& l); friend std::ostream& operator<<(std::ostream& out, const Segment3d& l); }; //class Segment3d #endif core++-1.7/inc/CORE/geom3d/triangle3d.h0100644000175000001440000001275007725666634016707 0ustar joachimusers/***************************************************************** * File: triangle3d.h * Synopsis: * Basic 3-dimensional geometry * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * ***************************************************************** * CORE Library Version 1.4 (July 2001) * Chee Yap * Chen Li * Zilin Du * * Copyright (c) 1995, 1996, 1998, 1999, 2000, 2001 Exact Computation Project * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Id: triangle3d.h,v 1.2 2003/09/04 16:51:40 exact Exp $ *****************************************************************/ #ifndef _TRIANGLE3D_H_ #define _TRIANGLE3D_H_ #include #include #include #include #include class Triangle3d : public GeomObj{ private: // three vertices Point3d p0; Point3d p1; Point3d p2; public: /************************************************************ * constructors ************************************************************/ Triangle3d(const Point3d& v1, const Point3d& v2, const Point3d& v3); // given three vertices Triangle3d(const Triangle3d& T); // given a triangle Triangle3d(): p0(ORIGIN_3D), p1(ORIGIN_3D), p2(ORIGIN_3D) {} //trivial triangle virtual ~Triangle3d() {} /************************************************************ * member functions ************************************************************/ // view a triangle as a surface virtual int dim() const { return 2; } Point3d V1() const { return p0; } Point3d V2() const { return p1; } Point3d V3() const { return p2; } Vector normal() const { return (p1 - p0).cross( p2 - p0); } // return normal of the plane containing this triangle Plane3d toPlane() const { return Plane3d(p0,p1,p2); } Polygon3d* toPolygon() const; /************************************************************ * predicates ************************************************************/ inline bool isCoplanar( const Point3d& p ) const { return orientation3d(p0, p1, p2, p) == 0; } inline bool isCoplanar( const Segment3d& s ) const { return isCoplanar(s.startPt()) && isCoplanar(s.stopPt()); } inline bool isCoplanar( const Line3d& l ) const { return isCoplanar(l.startPt()) && isCoplanar(l.stopPt()); } inline bool isCoplanar( const Triangle3d& T ) const { return isCoplanar(T.V1()) && isCoplanar(T.V2()) && isCoplanar(T.V3()); } inline bool isCoplanar( const Plane3d& pl ) const { return pl.contains(p0) && pl.contains(p1) && pl.contains(p2); } // test if p is on triangle bool contains( const Point3d& p ) const; // test if s is on triangle inline bool contains( const Segment3d& s ) const { return contains( s.startPt() ) && contains( s.stopPt() ); } // test if T is on triangle inline bool contains( const Triangle3d& T ) const { return contains( T.V1() ) && contains( T.V2() ) && contains( T.V3() ); } bool isOnEdge( const Point3d& p ) const; // test if p is on the edge bool inside( const Point3d& p ) const; // test if p is inside the triangle /************************************************************ * Intersection ************************************************************/ /** all intersect predicates return the dimension of the intersection * -1 if disjoint (i.e., parallel but distinct lines) * 0 if coincident * 0 if intersect in a point. In this case, the * // -1 if disjoint (i.e., parallel but distinct lines) // 1 if coincident // 0 if intersect in a point. In this case, the // intersection point is assigned to p if this is available. **/ // intersect predicates bool do_intersect( const Segment3d& s ) const; bool do_intersect( const Line3d& l ) const; bool do_intersect( const Plane3d& pl ) const; bool do_intersect( const Triangle3d& t ) const; // these are consistent with other classes // they return the dimension of the intersection // return -1 if no intersection int intersects( const Segment3d& s ) const; int intersects( const Line3d& l ) const; int intersects( const Plane3d& pl ) const; int intersects( const Triangle3d& T ) const; // general intersections GeomObj* intersection( const Segment3d& s ) const; GeomObj* intersection( const Line3d& l ) const; GeomObj* intersection( const Plane3d& pl ) const; GeomObj* intersection( const Triangle3d& t ) const; // coplanar intersections GeomObj* coplanar_intersection( const Segment3d& s ) const; GeomObj* coplanar_intersection( const Line3d& l ) const; GeomObj* coplanar_intersection( const Triangle3d& T ) const; Polygon3d* in_half_plane( const Point3d& pa, const Point3d& pb, const Point3d& pSide, Polygon3d& plg ) const; int coplanar_orientation( const Point3d& pa, const Point3d& pb, const Point3d& ps, const Point3d& p ) const; /************************************************************ * I/O ************************************************************/ friend std::istream& operator>>(std::istream& in, Triangle3d& T); friend std::ostream& operator<<(std::ostream & out, const Triangle3d & T); }; //class Triangle3d #endif core++-1.7/inc/CORE/poly/0040755000175000001440000000000010147210064014253 5ustar joachimuserscore++-1.7/inc/CORE/poly/Curves.h0100644000175000001440000004003510135016234015672 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: Curves.h * * Description: * Two templated classes are defined here: * Curve and BiPoly * These classes are parametrized by the number type * (called NT) which represents the * domain of the coefficients of the underlying * polynomials. Standard default is NT=BigInt, but * we will allow NT=int, NT=BigRat, NT=BigFloat, NT=Expr. * BiPoly represents the class of bivariate polynomials, * i.e., each BiPoly object is an element of NT[X,Y]. * We store each BiPoly as a list of polynomials in X. * Curve represents the class of plane curves whose equation * is A(X,Y)=0, for some BiPoly A(X,Y). * Features: * --Constructor from strings such as * "3 x^2 + 7 xy^2 - 4 x + 13". * --Basic plot functions * * To Do: * --Dump should produce human readable strings like * "3 x^2 + 7 xy^2 - 4 x + 13". * --String constructor generalizations: * (1) allow one "=" sign (e.g., "3 x^2 = y^2 - xy")(DONE) * (2) allow general parenthesis * (3) allow X and Y (DONE) * --We should be able to read/write * curve definitions from/to files * --Plot should be more efficient (use previous roots * to help find the next roots, there should be * a "plot structure" that is persistent) * --Plot should refine in both x- and y-increments. * --Plot should have some option to show the * x- and y-axes, and to label some points. * --verticalIntersect(...) should be implemented using * Polynomial, not Polynomial for efficiency * --the plot parameters (eps,xmin,xmax,ymin,ymax) must be * made part of the Curve class (static members). * Incorporate the "setParams" method into class. * * Author: Vikram Sharma and Chee Yap * Date: April 12, 2004 * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/poly/Curves.h,v $ * $Revision: 1.13 $ $Date: 2004/10/18 19:42:20 $ ***************************************************************************/ #ifndef CORE_CURVES_H #define CORE_CURVES_H #include #include #include "CORE/poly/Poly.h" CORE_BEGIN_NAMESPACE // ================================================== // Curve Class // ================================================== //typedef BigInt NT; //typedef Expr NT; //typedef Polynomial PolyNT; //typedef std::vector VecExpr; //typedef std::vector VecBigInt; //typedef std::vector VecNT; //typedef std::vector > VecPoly; template class Monomial{ //Helper class to store the coefficients for given x-deg and y-deg //Used by string input routines public: NT coeff; int xdeg; int ydeg; Monomial(){ } Monomial(NT& cf, int& dx, int& dy){ coeff = cf; xdeg = dx; ydeg = dy; } void dump(){ std::cout << coeff << "X^" << xdeg << " Y^" << ydeg; } }; //Class of Bivariate polynomials // Viewed as a polynomial in Y with // coefficients which are polynomials in X template class BiPoly{ private: //The following are used in the constructor from strings. //For more details see the related constructor. void constructFromString(string& s, char myX='x', char myY='y'); void constructX(int n, BiPoly& P); void constructY(int n, BiPoly& P); int getnumber(const char* c, int i, unsigned int len, BiPoly & P); bool isint(char c); int getint(const char* c, int i, unsigned int len, int & n); int matchparen(const char* cstr, int start); int getbasicterm(string s, BiPoly & P); int getterm(string s, BiPoly & P); public: int ydeg; //Y-degree of the polynomial std::vector > coeffX; //vector of (1+ydeg) polynomials in X // If ydeg = d, then the polynomial is F(X,Y) = // (Y^d * coeffX[d]) + (Y^{d-1} * coeffX[d-1]) +...+ (coeffX[0]). //////////////////////////////////////////////////////// //Constructors //////////////////////////////////////////////////////// //BiPoly() BiPoly(); // zero polynomial //BiPoly(n) BiPoly(int n);// creates a BiPoly with nominal y-degree equal to n. //BiPoly(vp) BiPoly(std::vector > vp); // From vector of Polynomials //BiPoly(p, flag): // if true, it converts polynomial p(X) into P(Y) // if false, it creates the polynomial Y-p(X) BiPoly(Polynomial p, bool flag=false); //BiPoly(deg, d[], C[]): // Takes in a list of list of coefficients. // Each cofficient list represents a polynomial in X // // deg - ydeg of the bipoly // d[] - array containing the degrees of each coefficient (i.e., X poly) // C[] - list of coefficients, we use array d to select the // coefficients BiPoly(int deg, int *d, NT *C); //BiPoly(String s, char myX, char myY) // myX and myY are names of the two variables. // Default values of myX and myY are 'x' and 'y'. // The string s has the form "3 x^2 + 7 xy^2 - 4 x + 13" // // For now, we assume no parentheses, * or =. BiPoly(const string& s, char myX='x', char myY='y'); BiPoly(const char* s, char myX='x', char myY='y'); // copy constructor BiPoly(const BiPoly&); //Destructor ~BiPoly(); //Destructor helper void deleteCoeffX(); //////////////////////////////////////////////////////// // METHODS //////////////////////////////////////////////////////// // filedump (msg, ofs, com, com2) // where msg, com, com2 are strings. // msg is an message and com, com2 are the strings // preceding each output line // (e.g., msg="BiVariate Polynomial" and com=com2="# ") // This is called by the other dump functions void dump(std::ostream & os, std::string msg = "", std::string com="# ", std::string com2 = "# ") const; // dump(ofs, msg, com) -- dump to file //void dump(std::ofstream & ofs, std::string msg, // std::string com="# ", std::string com2="# ") const; // dump(msg, com) -- dump to std output void dump(std::string msg="", std::string com="", std::string com2="") const; /*Cannot work with these two functions right now. BiPoly as per now can only handle BigInt and int since Expr cannot be handled by Polynomial class.*/ // yPolynomial(x) // returns the polynomial (in Y) when we substitute X=x /* BiPoly yPolynomial(const Expr & x) { VecExpr vE; for (int i=0; i<= ydeg; i++) { vE.push_back(coeffX[i].eval(x)); } return BiPoly(vE); }//yPolynomial */ Polynomial yPolynomial(const NT & x); // Expr version of yPoly (temporary hack) Polynomial yExprPolynomial(const Expr & x); // BF version of yPoly (temporary hack) Polynomial yBFPolynomial(const BigFloat & x); // xPolynomial(y) // returns the polynomial (in X) when we substitute Y=y // // N.B. May need the // Polynomial xExprPolynomial(Expr y) // version too... // Polynomial xPolynomial(const NT & y) ; // getYdegree() int getYdegree() const; // getXdegree() int getXdegree(); // getTrueYdegree int getTrueYdegree(); //eval(x,y) Expr eval(Expr x, Expr y);//Evaluate the polynomial at (x,y) //////////////////////////////////////////////////////// // Polynomial arithmetic (these are all self-modifying) //////////////////////////////////////////////////////// // Expands the nominal y-degree to n; // Returns n if nominal y-degree is changed to n // Else returns -2 int expand(int n); // contract() gets rid of leading zero polynomials // and returns the new (true) y-degree; // It returns -2 if this is a no-op int contract(); // Self-assignment BiPoly & operator=( const BiPoly& P); // Self-addition BiPoly & BiPoly::operator+=( BiPoly& P); // Self-subtraction BiPoly & BiPoly::operator-=( BiPoly& P); // Self-multiplication BiPoly & BiPoly::operator*=( BiPoly& P); // Multiply by a polynomial in X BiPoly & mulXpoly( Polynomial & p); //Multiply by a constant BiPoly & mulScalar( NT & c); // mulYpower: Multiply by Y^i (COULD be a divide if i<0) BiPoly & mulYpower(int s); // Divide by a polynomial in X. // We replace the coeffX[i] by the pseudoQuotient(coeffX[i], P) BiPoly & divXpoly( Polynomial & p); //Using the standard definition of pseudRemainder operation. // --No optimization! BiPoly pseudoRemainderY (BiPoly & Q); //Partial Differentiation //Partial Differentiation wrt Y BiPoly & differentiateY(); BiPoly & differentiateX(); BiPoly & differentiateXY(int m, int n);//m times wrt X and n times wrt Y //Represents the bivariate polynomial in (R[X])[Y] as a member //of (R[Y])[X]. //But since our polynomials in X can only have NT coeff's thus // to represent the above polynomial we switch X and Y once // the conversion has been done. //NOTE: This is different from replacing X by Y which was // done in the case of the constructor from a polynomial in X //Need to calculate resultant wrt X. BiPoly & convertXpoly(); //Set Coeffecient to the polynomial passed as a parameter bool setCoeff(int i, Polynomial p); void reverse(); Polynomial replaceYwithX(); //Binary-power operator BiPoly& pow(unsigned int n); //Returns a Bipoly corresponding to s, which is supposed to //contain as place-holders the chars 'x' and 'y'. BiPoly getbipoly(string s); };//BiPoly Class //////////////////////////////////////////////////////// // Helper Functions //////////////////////////////////////////////////////// //Experimental version of constructor from strings containing general //parentheses // zeroPinY(P) // checks whether a Bi-polynomial is a zero Polynomial template bool zeroPinY(BiPoly & P); // gcd(P,Q) // This gcd is based upon the subresultant PRS to avoid // exponential coeffecient growth and gcd computations, both of which // are expensive since the coefficients are polynomials template BiPoly gcd( BiPoly& P ,BiPoly& Q); // resY(P,Q): // Resultant of Bi-Polys P and Q w.r.t. Y. // So the resultant is a polynomial in X template Polynomial resY( BiPoly& P ,BiPoly& Q); // resX(P,Q): // Resultant of Bi-Polys P and Q w.r.t. X. // So the resultant is a polynomial in Y // We first convert P, Q to polynomials in X. Then // call resY and then turn it back into a polynomial in Y // QUESTION: is this last switch really necessary??? template BiPoly resX( BiPoly& P ,BiPoly& Q); //Equality operator for BiPoly template bool operator==(const BiPoly& P, const BiPoly& Q); //Addition operator for BiPoly template BiPoly operator+(const BiPoly& P, const BiPoly& Q); //Subtraction operator for BiPoly template BiPoly operator-(const BiPoly& P, const BiPoly& Q); //Multiplication operator for BiPoly template BiPoly operator*(const BiPoly& P, const BiPoly& Q); //////////////////////////////////////////////////////// //Curve Class // extends BiPoly Class //////////////////////////////////////////////////////// template < class NT > class Curve : public BiPoly { public: // Colors for plotting curves const static int NumColors=7; static double red_comp(int i){ static double RED_COMP[] = {0.9, 0.8, 0.7, 0.6, 0.8, 0.8, 0.7}; return RED_COMP[i % NumColors]; } static double green_comp(int i){ static double GREEN_COMP[] = {0.5, 0.9, 0.3, 0.9, 0.7, 0.55, 0.95}; return GREEN_COMP[i % NumColors]; } static double blue_comp(int i){ static double BLUE_COMP[] = {0.8, 0.3, 0.8, 0.5, 0.4, 0.85, 0.35}; return BLUE_COMP[i % NumColors]; } Curve(); // zero polynomial //Curve(vp): // construct from a vector of polynomials Curve(std::vector > vp); // : BiPoly(vp){ //} //Curve(p): // Converts a polynomial p(X) to a BiPoly in one of two ways: // (1) if flag is false, the result is Y-p(X) // (2) if flag is true, the result is p(Y) // The default is (1) because we usually want to plot the // graph of the polynomial p(X) Curve(Polynomial p, bool flag=false); // : BiPoly(p, flag){ //} //Curve(deg, d[], C[]): // Takes in a list of list of coefficients. // Each cofficient list represents a polynomial in X // // deg - ydeg of the bipoly // d[] - array containing the degrees of each coefficient (i.e., X poly) // C[] - list of coefficients, we use array d to select the // coefficients Curve(int deg, int *d, NT *C); // : BiPoly(deg, d, C){ //} Curve(const BiPoly &P); // : BiPoly(P){ //} //Curve(n) -- the nominal y-degree is n Curve(int n); //Creates a curve from a string (no parentheses, no *, no =) Curve(const string & s, char myX='x', char myY='y'); Curve(const char* s, char myX='x', char myY='y'); ///////////////////////////////////////////////////////////////////////// // verticalIntersections(x, vecI, aprec=0): // The list vecI is passed an isolating intervals for y's such that (x,y) // lies on the curve. // If aprec is non-zero (!), the intervals have with < 2^{-aprec}. // Return is -2 if curve equation does not depend on Y // -1 if infinitely roots at x, // 0 if no roots at x // 1 otherwise int verticalIntersections(const BigFloat & x, BFVecInterval & vI, int aprec=0); // TO DO: // horizontalIntersections(...) ///////////////////////////////////////////////////////////////////////// // plot(eps, x1, y1, x2, y2) // // All parameters have defaults // // Gives the points on the curve at resolution "eps". Currently, // eps is viewed as delta-x step size (but it could change). // The display is done in the rectangale // defined by [(x1, y1), (x2, y2)]. // The output is written into a file in the format specified // by our drawcurve function (see COREPATH/ext/graphics). // // Heuristic: the open polygonal lines end when number of roots // changes... // int plot( BigFloat eps=0.1, BigFloat x1=-1.0, BigFloat y1=-1.0, BigFloat x2=1.0, BigFloat y2=1.0, int fileNo=1); // selfIntersections(): // this should be another member function that lists // all the self-intersections of a curve // // template // void selfIntersections(BFVecInterval &vI){ // ... // } };// Curve class //////////////////////////////////////////////////////// // Curve helper functions //////////////////////////////////////////////////////// //Xintersections(C, D, vI): // returns the list vI of x-ccordinates of possible intersection points. // Assumes that C & D are quasi-monic.(or generally aligned) template void Xintersections( Curve& P ,Curve& Q, BFVecInterval &vI); //Yintersections(C, D, vI): // similar to Xintersections template void Yintersections( Curve& P ,Curve& Q, BFVecInterval &vI); // Display Intervals template void showIntervals(char* s, BFVecInterval &vI); // Set Display Parameters // ... //////////////////////////////////////////////////////// // IMPLEMENTATIONS ARE FOUND IN Curves.tcc //////////////////////////////////////////////////////// #include CORE_END_NAMESPACE #endif /*************************************************************************** */ // END /*************************************************************************** */ core++-1.7/inc/CORE/poly/Curves.tcc0100644000175000001440000011210310142771626016223 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: Curves.tcc * * Description: * This file contains the implementations of * functions defined by Curves.h * It is included through Curves.h * Please see Curves.h for more details. * * Author: Vikram Sharma and Chee Yap * Date: April 12, 2004 * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/poly/Curves.tcc,v $ * $Revision: 1.20 $ $Date: 2004/11/05 21:41:42 $ ***************************************************************************/ //CONSTRUCTORS FOR THE BIPOLY CLASS //////////////////////////////////////////////////////// //Constructors //////////////////////////////////////////////////////// template BiPoly::BiPoly(){ // zero polynomial ydeg = -1; } //BiPoly(n) template BiPoly::BiPoly(int n){// creates a BiPoly with nominal y-degree equal to n. // To support this constructor, you need functions // that are equivalent to "setCoeff(i, PolyNT q)" in the Poly Class // You also want "getCoeff(i)" functions. // E.g. BiPoly p(10); // PolyNT q(3, {1,2,3,4}); // p.setCoeff(10, q); // p.setCoeff(0, PolyNT()); // ydeg = n; if (n<0) return; // coeffX not needed for(int i=0; i<= ydeg; i++){ Polynomial temp; coeffX.push_back(temp); } } //BiPoly(vp) template BiPoly::BiPoly(std::vector > vp){ // From vector of Polynomials ydeg = vp.size() - 1; if(ydeg >=0){ coeffX = vp; } } //BiPoly(p, flag): // if true, it converts polynomial p(X) into P(Y) // if false, it creates the polynomial Y-p(X) template BiPoly::BiPoly(Polynomial p, bool flag){ if (flag){ ydeg = p.getTrueDegree(); if(ydeg >=0){ for(int i=0; i<=ydeg; i++){ Polynomial temp(0); temp.setCoeff(0, p.getCoeffi(i)); coeffX.push_back(temp); // does STL make a copy of temp? }//for }//if } else { ydeg = 1; coeffX.push_back(p); coeffX.push_back(Polynomial::polyUnity()); }//else }//BiPoly(p) //BiPoly(deg, d[], C[]): // Takes in a list of list of coefficients. // Each cofficient list represents a polynomial in X // // deg - ydeg of the bipoly // d[] - array containing the degrees of each coefficient (i.e., X poly) // C[] - list of coefficients, we use array d to select the // coefficients template BiPoly::BiPoly(int deg, int *d, NT *C){ ydeg = deg; Polynomial temp; int max=0; for(int i=0; i <=deg; i++) max = core_max(d[i],max); NT *c = new NT[max]; for(int i=0; i<= deg; i++){ for(int j=0; j <=d[i]; j++) c[j] = C[i+j]; temp = Polynomial(d[i],c); coeffX.push_back(temp); } delete[] c; }//BiPoly(deg,d[],C[]) //The BNF syntax is the following:- // [bipoly] -> [term]| [term] +/- [bipoly] // [term] -> [basic term]|[basic term] [term]|[basic term]*[term] // [basic term] -> [number]|'x'|'y'|[basic term]'^'[number] // | '(' [bipoly]')'|'-' //Unary minus is treated as a basic term template BiPoly::BiPoly(const char * s, char myX, char myY){ string ss(s); constructFromString(ss, myX, myY); } template BiPoly::BiPoly(const string & s, char myX, char myY){ string ss(s); constructFromString(ss, myX, myY); } template void BiPoly::constructFromString(string & s, char myX, char myY){ if((myX != 'x' || myX != 'X') && (myY != 'y' || myY != 'Y')){ //Replace myX with 'x' and myY with 'y' in s. unsigned int loc = s.find(myX, 0); while(loc != string::npos){ s.replace(loc,1,1,'x'); loc = s.find(myX, loc+1); } loc = s.find(myY, 0); while(loc != string::npos){ s.replace(loc,1,1,'y'); loc = s.find(myY, loc+1); } } (*this) = (*this).getbipoly(s); } //Constructor from another BiPoly template BiPoly::BiPoly(const BiPoly &P) : ydeg(P.ydeg), coeffX(P.coeffX) { } //Destructor template void BiPoly::deleteCoeffX(){ coeffX.clear(); } template BiPoly::~BiPoly(){ if (ydeg >= 0) deleteCoeffX(); } //////////////////////////////////////////////////////// // METHODS USED BY STRING CONSTRUCTOR ABOVE //////////////////////////////////////////////////////// //Sets the input BiPoly to X^n template void BiPoly::constructX(int n, BiPoly& P){ assert(n>= -1); P.deleteCoeffX();//Clear the present coeffecients Polynomial q(n);//Nominal degree n q.setCoeff(n,NT(1)); if (n>0) q.setCoeff(0,NT(0)); P.coeffX.push_back(q); P.ydeg = 0; } //Sets the input BiPoly to Y^n template void BiPoly::constructY(int n, BiPoly& P){ P.ydeg = 0; P.deleteCoeffX();//Clear the present coeffecients NT cs[] = {1}; Polynomial q(0, cs); P.coeffX.push_back(q);//P is the unit bipoly. Now we just multiply Y^n P.mulYpower(n); } //Returns in P the coeffecient starting from start template int BiPoly::getnumber(const char* c, int start, unsigned int len, BiPoly & P){ int j=0; char *temp = new char[len]; while(isint(c[j+start])){ temp[j]=c[j+start];j++; } temp[j] = '\0'; NT cf = NT(temp); P.deleteCoeffX(); Polynomial q(0); q.setCoeff(0, cf); P.coeffX.push_back(q); P.ydeg = 0; delete[] temp; return (j-1+start);//Exactly the length of the number } template bool BiPoly::isint(char c){ if(c == '0' || c == '1' || c == '2' || c == '3' || c == '4' || c == '5' || c == '6' || c == '7' || c == '8' || c == '9') return true; else return false; } //Returns as integer the number starting from start in c template int BiPoly::getint(const char* c, int start, unsigned int len, int & n){ int j=0; char *temp = new char[len]; while(isint(c[j+start])){ temp[j]=c[j+start];j++; } temp[j] = '\n'; n = atoi(temp); delete[] temp; return (j-1+start);//Exactly the length of the number } //Given a string starting with an open parentheses returns the place // which marks the end of the corresponding closing parentheses. //Strings of the form (A). template int BiPoly::matchparen(const char* cstr, int start){ int count = 0; int j=start; do{ if(cstr[j] == '('){ count++; } if(cstr[j] == ')'){ count--; } j++; }while(count != 0 );//j is one more than the matching ')' return j-1; } template int BiPoly::getbasicterm(string s, BiPoly & P){ const char * cstr = s.c_str(); unsigned int len = s.length(); int i=0; //BiPoly * temp = new BiPoly(); if(isint(cstr[i])){ i = getnumber(cstr, i, len, P); }else if(cstr[i] == 'x'||cstr[i] == 'X'){ constructX(1, P); }else if(cstr[i] == 'y'||cstr[i] == 'Y'){ constructY(1, P); }else if(cstr[i] =='('){ int oldi = i; i = matchparen(cstr, i); string t = s.substr(oldi+1, i -oldi -1); P = getbipoly(t); }else if(cstr[i] == '-'){//Unary Minus P.ydeg = 0; P.deleteCoeffX();//Clear the present coeffecients NT cs[] = {-1}; Polynomial q(0, cs); P.coeffX.push_back(q); }else{ std::cout <<"ERROR IN PARSING BASIC TERM" << std::endl; } //i+1 points to the beginning of next syntaxtic object in the string. if(cstr[i+1] == '^'){ int n; i = getint(cstr, i+2, len, n); P.pow(n); } return i; } template int BiPoly::getterm(string s, BiPoly & P){ unsigned int len = s.length(); if(len == 0){// Zero BiPoly P = BiPoly(); return 0; } unsigned int ind, oind; const char* cstr =s.c_str(); string t; //P will be used to accumulate the product of basic terms. ind = getbasicterm(s, P); while(ind != len-1 && cstr[ind + 1]!='+' && cstr[ind + 1]!='-' ){ //Recursively get the basic terms till we reach the end or see // a '+' or '-' sign. if(cstr[ind + 1] == '*'){ t = s.substr(ind + 2, len - ind -2); oind = ind + 2; }else{ t = s.substr(ind + 1, len -ind -1); oind = ind + 1; } BiPoly R; ind = oind + getbasicterm(t, R);//Because the second term is the offset in //t P *= R; } return ind; } template BiPoly BiPoly::getbipoly(string s){ //Remove white spaces from the string unsigned int cnt=s.find(' ',0); while(cnt != string::npos){ s.erase(cnt, 1); cnt = s.find(' ', cnt); } unsigned int len = s.length(); if(len <= 0){//Zero Polynomial return BiPoly(); } //To handle the case when there is one '=' sign //Suppose s is of the form s1 = s2. Then we assign s to //s1 + (-1)(s2) and reset len unsigned int loc; if((loc=s.find('=',0)) != string::npos){ s.replace(loc,1,1,'+'); string s3 = "(-1)("; s.insert(loc+1, s3); len = s.length(); s.insert(len, 1, ')'); } len = s.length(); const char *cstr = s.c_str(); string t; BiPoly P; // P will be the polynomial in which we accumulate the //sum and difference of the different terms. unsigned int ind; if(cstr[0] == '-'){ t = s.substr(1, len); ind = getterm(t,P) + 1; NT negone(-1); P.mulScalar(negone); }else{ ind = getterm(s, P); } unsigned int oind =0;//the string between oind and ind is a term while(ind != len -1){ BiPoly R; t = s.substr(ind + 2, len -ind -2); oind = ind; ind = oind + 2 + getterm(t, R); if(cstr[oind + 1] == '+') P += R; else if(cstr[oind + 1] == '-') P -= R; else std::cout << "ERROR IN PARSING BIPOLY! " << std::endl; } return P; } //////////////////////////////////////////////////////// // METHODS //////////////////////////////////////////////////////// // filedump (msg, ofs, com, com2) // where msg and com are strings. // msg is an message and com is the character preceding each line // (e.g., msg="" and com=com2="# ") // This is called by the other dump functions template void BiPoly::dump(std::ostream & os, std::string msg, std::string com, std::string com2) const { if (msg != "") os << msg << std::endl; if(ydeg == -1) { os << com << " Zero Polynomial" << std::endl; return; } bool first = true; os << com; for (int i=0; i <= ydeg; i++){ if (!zeroP(coeffX[i])){ if (i % 3 == 0) os << std::endl << com2 ; // output 3 coefficients per line if (first) first = false; else os << " + "; os << "["; coeffX[i].filedump(os,"","",com2); // Note: first comment string is "" os << "]"; if (i > 0) os <<" * y^"<< i ; } } }//dump // dump(ofs, msg, com, com2) -- dump to file // /* template void BiPoly::dump(std::ofstream & ofs, std::string msg, std::string com, std::string com2) const { dump(ofs, msg, com, com2); } */ // dump(msg, com) -- dump to std output template void BiPoly::dump(std::string msg, std::string com, std::string com2) const { dump(std::cout, msg, com, com2); } /* *********************************************************** We want to substitute X or Y with a general Expression or BigFloat into a BiPoly. E.g., the following produces a Y-polynomial after replacing X by x: BiPoly yPolynomial(const Expr & x) { VecExpr vE; for (int i=0; i<= ydeg; i++) { vE.push_back(coeffX[i].eval(x)); } return Polynomial(vE); }//yPolynomial But this has many problems. Solution below is to have special yExprPolynomial(x). *********************************************************** */ template Polynomial BiPoly::yPolynomial(const NT & x) { NT coeffVec[ydeg+1]; int d=-1; for(int i=ydeg; i >= 0 ; i--){ coeffVec[i] = coeffX[i].eval(x); if ((d < 0) && (coeffVec[i] != 0)) d = i; } return Polynomial(d, coeffVec); } // Specialized version of yPolynomial for Expressions template Polynomial BiPoly::yExprPolynomial(const Expr & x) { Expr coeffVec[ydeg+1]; int d=-1; for(int i=ydeg; i >= 0 ; i--){ coeffVec[i] = coeffX[i].eval(x); if ((d < 0) && (coeffVec[i] != 0)) d = i; } return Polynomial(d, coeffVec); } // Specialized version of yPolynomial for BigFloat // ASSERTION: BigFloat x is exact template Polynomial BiPoly::yBFPolynomial(const BigFloat & x) { BigFloat coeffVec[ydeg+1]; int d=-1; for(int i=ydeg; i >= 0 ; i--){ coeffVec[i] = coeffX[i].eval(x); if ((d < 0) && (coeffVec[i] != 0)) d = i; } return Polynomial(d, coeffVec); } // xPolynomial(y) // returns the polynomial (in X) when we substitute Y=y // // N.B. May need the // Polynomial xExprPolynomial(Expr y) // version too... // template Polynomial BiPoly::xPolynomial(const NT & y) { Polynomial res = coeffX[0]; NT yPower(y); for(int i=1; i <= ydeg ; i++){ res += coeffX[i].mulScalar(yPower); yPower *= y; } return res; }//xPolynomial // getYdegree() template int BiPoly::getYdegree() const { return ydeg; } // getXdegree() template int BiPoly::getXdegree(){ int deg=-1; for(int i=0; i <=ydeg; i++) deg = max(deg, coeffX[i].getTrueDegree()); return deg; } // getTrueYdegree template int BiPoly::getTrueYdegree(){ for (int i=ydeg; i>=0; i--){ coeffX[i].contract(); if (!zeroP(coeffX[i])) return i; } return -1; // Zero polynomial }//getTrueYdegree //eval(x,y) template Expr BiPoly::eval(Expr x, Expr y){//Evaluate the polynomial at (x,y) Expr e = 0; for(int i=0; i <=ydeg; i++){ e += coeffX[i].eval(x)*pow(y,i); } return e; }//eval //////////////////////////////////////////////////////// // Polynomial arithmetic (these are all self-modifying) //////////////////////////////////////////////////////// // Expands the nominal y-degree to n; // Returns n if nominal y-degree is changed to n // Else returns -2 template int BiPoly::expand(int n) { if ((n <= ydeg)||(n < 0)) return -2; for(int i=ydeg+1; i <=n ;i++) coeffX.push_back(Polynomial::polyZero()); ydeg = n; return n; }//expand // contract() gets rid of leading zero polynomials // and returns the new (true) y-degree; // It returns -2 if this is a no-op template int BiPoly::contract() { int d = getTrueYdegree(); if (d == ydeg) return (-2); // nothing to do else{ for (int i = ydeg; i> d; i--) coeffX.pop_back(); ydeg = d; } return d; }//contract // Self-assignment template BiPoly & BiPoly::operator=( const BiPoly& P) { if (this == &P) return *this; // self-assignment ydeg = P.getYdegree(); coeffX = P.coeffX; return *this; }//operator= // Self-addition template BiPoly & BiPoly::operator+=( BiPoly& P) { // += int d = P.getYdegree(); if (d > ydeg) expand(d); for (int i = 0; i<=d; i++) coeffX[i] += P.coeffX[i]; return *this; }//operator+= // Self-subtraction template BiPoly & BiPoly::operator-=( BiPoly& P) { // -= int d = P.getYdegree(); if (d > ydeg) expand(d); for (int i = 0; i<=d; i++) coeffX[i] -= P.coeffX[i]; return *this; }//operator-= // Self-multiplication template BiPoly & BiPoly::operator*=( BiPoly& P) { // *= int d = ydeg + P.getYdegree(); std::vector > vP; Polynomial* c = new Polynomial [d + 1]; for(int i=0; i <=d; i++) c[i] = Polynomial(); for (int i = 0; i<=P.getYdegree(); i++) for (int j = 0; j<=ydeg; j++) { if(!zeroP(P.coeffX[i]) && !zeroP(coeffX[j])) c[i+j] += P.coeffX[i] * coeffX[j]; } for(int i=0; i <= d; i++) vP.push_back(c[i]); delete[] c; coeffX.clear(); coeffX = vP; ydeg = d; return *this; }//operator*= // Multiply by a polynomial in X template BiPoly & BiPoly::mulXpoly( Polynomial & p) { contract(); if (ydeg == -1) return *this; for (int i = 0; i<=ydeg ; i++) coeffX[i] *= p; return *this; }//mulXpoly //Multiply by a constant template BiPoly & BiPoly::mulScalar( NT & c) { for (int i = 0; i<=ydeg ; i++) coeffX[i].mulScalar(c); return *this; }//mulScalar // mulYpower: Multiply by Y^i (COULD be a divide if i<0) template BiPoly & BiPoly::mulYpower(int s) { // if s >= 0, then this is equivalent to // multiplying by Y^s; if s < 0, to dividing by Y^s if (s==0) return *this; int d = s+getTrueYdegree(); if (d < 0) { ydeg = -1; deleteCoeffX(); return *this; } std::vector > vP; if(s > 0){ for(int i=0; i < s; i ++) vP.push_back(Polynomial::polyZero()); for(int i=s; i<=d; i++) vP.push_back(coeffX[i-s]); } if (s < 0) { for (int j=-1*s; j <= d-s; j++) vP.push_back(coeffX[j]); } coeffX = vP; ydeg= d; return *this; }//mulYpower // Divide by a polynomial in X. // We replace the coeffX[i] by the pseudoQuotient(coeffX[i], P) template BiPoly & BiPoly::divXpoly( Polynomial & p) { contract(); if (ydeg == -1) return *this; for (int i = 0; i<=ydeg ; i++) coeffX[i] = coeffX[i].pseudoRemainder(p); return *this; }// divXpoly //Using the standard definition of pseudRemainder operation. // --No optimization! template BiPoly BiPoly::pseudoRemainderY (BiPoly & Q){ contract(); Q.contract(); int qdeg = Q.getYdegree(); Polynomial LC(Q.coeffX[qdeg]), temp1(LC), temp; BiPoly P(Q); std::vector > S;//The quotient in reverse order if(ydeg < qdeg){ return (*this); } (*this).mulXpoly(temp1.power(ydeg - qdeg +1)); while(ydeg >= qdeg){ temp1 = coeffX[ydeg]; temp = temp1.pseudoRemainder(LC); S.push_back(temp); P.mulXpoly(temp); P.mulYpower(ydeg - qdeg); *this -= P; contract(); P = Q;//P is used as a temporary since mulXpower and mulYpower are // self modifying } //Correct the order of S std::vector > vP; for(int i= S.size()-1; i>=0; i--) vP.push_back(S[i]); return BiPoly(vP); }//pseudoRemainder //Partial Differentiation //Partial Differentiation wrt Y template BiPoly & BiPoly::differentiateY() { if (ydeg >= 0) { for (int i=1; i<=ydeg; i++) coeffX[i-1] = coeffX[i].mulScalar(i); ydeg--; } return *this; }// differentiation wrt Y template BiPoly & BiPoly::differentiateX() { if (ydeg >= 0) for (int i=0; i<=ydeg; i++) coeffX[i].differentiate(); return *this; }// differentiation wrt X template BiPoly & BiPoly::differentiateXY(int m, int n) {//m times wrt X and n times wrt Y assert(i >=0); assert(j >=0); for(int i=1; i <=m; i++) (*this).differentiateX(); for(int i=1; i <=n; i++) (*this).differentiateY(); return *this; } //Represents the bivariate polynomial in (R[X])[Y] as a member //of (R[Y])[X]. //But since our polynomials in X can only have NT coeff's thus // to represent the above polynomial we switch X and Y once // the conversion has been done. //NOTE: This is different from replacing X by Y which was // done in the case of the constructor from a polynomial in X //Need to calculate resultant wrt X. template BiPoly & BiPoly::convertXpoly(){ getTrueYdegree(); if(ydeg == -1) return (*this); NT *cs = new NT[ydeg +1]; int xdeg = getXdegree(); std::vector > vP; for(int i=0; i<=xdeg; i++){ for(int j=0; j<=ydeg; j++){ cs[j] = coeffX[j].getCoeffi(i); } vP.push_back(Polynomial(ydeg, cs)); } delete[] cs; ydeg = xdeg; coeffX = vP; return (*this); } //Set Coeffecient to the polynomial passed as a parameter template bool BiPoly::setCoeff(int i, Polynomial p){ if(i < 0 || i > ydeg) return false; coeffX[i] = p; return true; } template void BiPoly::reverse() { Polynomial tmp; for (int i=0; i<= ydeg/2; i++) { tmp = coeffX[i]; coeffX[i] = coeffX[ydeg-i]; coeffX[ydeg-i] = tmp; } }//reverse //replaceYwithX() // used used when the coeffX in BiPoly are constants, // to get the corresponding univariate poly in X // E.g., Y^2+2*Y+9 will be converted to X^2+2*X+9 template Polynomial BiPoly::replaceYwithX(){ int m = getTrueYdegree(); NT *cs = new NT[m+1]; for(int i=0; i <= m ; i++) cs[i]=coeffX[i].getCoeffi(0); delete[] cs; return Polynomial(m,cs); }//replaceYwithX template BiPoly& BiPoly::pow(unsigned int n){ if (n == 0) { ydeg = 0; deleteCoeffX(); Polynomial unity(0); coeffX.push_back(unity); }else if(n == 1){ }else{ BiPoly x(*this); while ((n % 2) == 0) { // n is even x *= x; n >>= 1; } BiPoly u(x); while (true) { n >>= 1; if (n == 0){ (*this) = u; return (*this); } x *= x; if ((n % 2) == 1) // n is odd u *= x; } (*this) = u; } return (*this); }//pow //////////////////////////////////////////////////////// // Helper Functions //////////////////////////////////////////////////////// // isZeroPinY(P) // checks whether a Bi-polynomial is a zero Polynomial template bool isZeroPinY(BiPoly & P){ if(P.getTrueYdegree() == -1) return true; return false; } // gcd(P,Q) // This gcd is based upon the subresultant PRS to avoid // exponential coeffecient growth and gcd computations, both of which // are expensive since the coefficients are polynomials template BiPoly gcd( BiPoly& P ,BiPoly& Q){ int m = P.getTrueYdegree(); int n = Q.getTrueYdegree(); //If both Bi-Polys are zero then return zero if( m==-1 && n==-1){ return BiPoly();//Had to do this for the type of //return value o/w causes problem in } //assignment operation if(m < n) { return gcd(Q, P); } //If one of the Bi-Polys are zero then return the other if(n==-1) return P; //When the two BiPolys are just univariate Polynomials in X if(m==0 && n==0){ std::vector > vP; vP.push_back(gcd(P.coeffX[0], Q.coeffX[0])); return BiPoly(vP);//Had to do this for the type of //return value } int delta = m - n; Polynomial a(Q.coeffX[n]); std::vector vN; vN.push_back(pow(BigInt(-1),delta + 1)); Polynomial beta(vN); Polynomial phi(power(a, delta)), t; m = n; BiPoly temp; P.pseudoRemainderY(Q); while(!isZeroPinY(P)){ P.divXpoly(beta); n = P.getTrueYdegree(); delta = m - n; beta = power(phi, delta)*a.mulScalar(pow(BigInt(-1),delta+1)); a = P.coeffX[n]; t = power(phi, delta -1); phi = power(a,delta).pseudoRemainder(t); m = n; temp = Q;//Swapping the pseudo-remainder for the next step Q = P; P = temp; P.pseudoRemainderY(Q); } return Q; }//gcd // resY(P,Q): // Resultant of Bi-Polys P and Q w.r.t. Y. // So the resultant is a polynomial in X template Polynomial resY( BiPoly& P ,BiPoly& Q){ int m = P.getTrueYdegree(); int n = Q.getTrueYdegree(); //If either polynomial is zero, return zero if( m == -1 || n == -1) return Polynomial();//::polyZero(); if(n > m) return resY(Q, P); Polynomial b(Q.coeffX[n]); Polynomial lc(P.coeffX[m]), C, temp; BiPoly r; r = P.pseudoRemainderY(Q); C = b * r.coeffX[r.getTrueYdegree()]; C = C.pseudoRemainder(lc); if(isZeroPinY(P) && n > 0) return Polynomial();//::polyZero(); if(Q.getTrueYdegree() == 0 && isZeroPinY(P)) return power(Q.coeffX[0], m); int l = P.getTrueYdegree(); temp = power(b, m-l).mulScalar(pow(BigInt(-1),m*n))*resY(Q,P); temp = temp.pseudoRemainder(power(C,n)); return temp; }//resY // resX(P,Q): // Resultant of Bi-Polys P and Q w.r.t. X. // So the resultant is a polynomial in Y // We first convert P, Q to polynomials in X. Then // call resY and then turns it back into a polynomial in Y // QUESTION: is this last switch really necessary??? template BiPoly resX( BiPoly& P ,BiPoly& Q){ P.convertXpoly(); Q.convertXpoly(); // Polynomial p(resY(P,Q)); // return BiPoly(p); return(resY(P,Q)); // avoid the switch back }//resX //Equality operator for BiPoly template bool operator==(const BiPoly& P, const BiPoly& Q) { // == BiPoly P1(P); BiPoly Q1(Q); P1.contract(); Q1.contract(); if(P1.getYdegree() != Q1.getYdegree()) return false; else{ for(int i=0; i <= P1.getYdegree() ; i++){ if(P1.coeffX[i] != Q1.coeffX[i]) return false; } } return true; } // Addition P + Q template BiPoly operator+(const BiPoly& P, const BiPoly& Q ) { // + return BiPoly(P) += Q; } // Subtraction P - Q template BiPoly operator-(const BiPoly& P,const BiPoly& Q ) { // + return BiPoly(P) -= Q; } // Multiplication P * Q template BiPoly operator*(const BiPoly& P, const BiPoly& Q ) { // + return BiPoly(P) *= Q; } //////////////////////////////////////////////////////// //Curve Class // extends BiPoly Class //////////////////////////////////////////////////////// template < class NT > Curve::Curve(){} // zero polynomial //Curve(vp): // construct from a vector of polynomials template < class NT > Curve::Curve(std::vector > vp) : BiPoly(vp){ } //Curve(p): // Converts a polynomial p(X) to a BiPoly in one of two ways: // (1) if flag is false, the result is Y-p(X) // (2) if flag is true, the result is p(Y) // The default is (1) because we usually want to plot the // graph of the polynomial p(X) template < class NT > Curve::Curve(Polynomial p, bool flag) : BiPoly(p, flag){ } //Curve(deg, d[], C[]): // Takes in a list of list of coefficients. // Each cofficient list represents a polynomial in X // // deg - ydeg of the bipoly // d[] - array containing the degrees of each coefficient (i.e., X poly) // C[] - list of coefficients, we use array d to select the // coefficients template < class NT > Curve::Curve(int deg, int *d, NT *C) : BiPoly(deg, d, C){ } template < class NT > Curve::Curve(const BiPoly &P) : BiPoly(P){ } //Curve(n) template < class NT > Curve::Curve(int n) : BiPoly(n){// creates a Curve with nominal y-degree equal to n } //Creates a curve from a string (no parentheses, no *) template < class NT > Curve::Curve(const string & s, char myX, char myY) : BiPoly(s, myX, myY){ } template < class NT > Curve::Curve(const char * s, char myX, char myY) : BiPoly(s, myX, myY){ } // verticalIntersections(x, vecI, aprec=0): // // The list vecI is passed an isolating intervals for y's such that (x,y) // lies on the curve. // If aprec is non-zero (!), the intervals have with < 2^{-aprec}. // Return is -2 if curve equation does not depend on Y // -1 if infinitely roots at x, // 0 if no roots at x // 1 otherwise // // ASSERTION: x is an exact BigFloat template < class NT > int Curve::verticalIntersections(const BigFloat & x, BFVecInterval & vI, int aprec) { int d= Curve::getTrueYdegree(); if(d <= 0) return(-2); // This returns a NULL vI, which should be caught by caller Polynomial PY = this->yExprPolynomial(x); // should be replaced // Polynomial PY = yBFPolynomial(x); // unstable still d = PY.getTrueDegree(); if(d <= 0) return(d); Sturm SS(PY); // should be replaced by BigFloat version // Sturm SS(PY); // unstable still SS.isolateRoots(vI); int s = vI.size(); if ((aprec != 0) && (s>0)) SS.newtonRefineAllRoots(vI, aprec); return s; } // plot(eps, x1, y1, x2, y2) // // All parameters have defaults // // Gives the points on the curve at resolution "eps". Currently, // eps is viewed as delta-x step size (but it could change). // The display is done in the rectangale // defined by [(x1, y1), (x2, y2)]. // The output is written into a file in the format specified // by our drawcurve function (see COREPATH/ext/graphics). // // Heuristic: the open polygonal lines end when number of roots // changes... // // ASSERTION: all input BigFloats are exact // template < class NT > int Curve::plot( BigFloat eps, BigFloat x1, BigFloat y1, BigFloat x2, BigFloat y2, int fileNo){ const char* filename[] = {"data/input", "data/plot", "data/plot2"}; ofstream outFile; outFile.open(filename[fileNo]); // ought to check if open is successful! outFile << "########################################\n"; outFile << "# Curve equation: \n"; this->dump(outFile,"", "# "); outFile << std::endl; outFile << "# Plot parameters: step size (eps) = " << eps << std::endl; outFile << "# x1 = " << x1 << ",\t y1 = " << y1 << std::endl; outFile << "# x2 = " << x2 << ",\t y2 = " << y2 << std::endl; outFile << "########################################\n"; outFile << "# X-axis " << std::endl; outFile << "o 2" << std::endl; outFile << "0.99 \t 0.99 \t 0.99" << std::endl; outFile << x1 << "\t" << 0 << std::endl; outFile << x2 << "\t" << 0 << std::endl; outFile << "########################################\n"; outFile << "# Y-axis " << std::endl; outFile << "o 2" << std::endl; outFile << "0.99 \t 0.99 \t 0.99" << std::endl; outFile << 0 << "\t" << y1 << std::endl; outFile << 0 << "\t" << y2 << std::endl; // assert(eps>0) int aprec = -(eps.lMSB()).toLong(); // By definition, eps.lMSB() <= lg(eps) BigFloat xCurr = x1; BigFloat xLast = x1; unsigned int numRoots=0; unsigned int numPoints=0; BFVecInterval vI; cout <<"Current value of x " << xCurr << endl; //=================================================================== // FIRST locate the first x-value where there are roots for plotting //=================================================================== do { vI.clear(); if (verticalIntersections(xCurr, vI, aprec) > 0) { numRoots = vI.size(); cout <<"Number of roots at " << xCurr << " are " << numRoots< 0 then there exists a //valid point for plotting return -1; // nothing to plot! } int limit = ((x2 - xCurr + eps)/eps).intValue()+1; //std::cout << "Limit = " << limit << std::endl; machine_double plotCurves[this->getTrueYdegree()][limit];//plot buffer machine_double yval; for (unsigned int i=0; i< numRoots; i++) { yval = (vI[i].first + vI[i].second).doubleValue()/2; if (yval < y1) plotCurves[i][numPoints] = y1.doubleValue(); else if (yval > y2) plotCurves[i][numPoints] = y2.doubleValue(); else plotCurves[i][numPoints] = yval; } vI.clear(); xLast = xCurr - eps; // -eps to compensate for the forward value of xCurr numPoints = 1; //=================================================================== // Get all the curves in a main loop // -- dump the curves when an x-interval is discovered // We define an "x-interval" to be a maximal interval // where the number of curves is constant (this is a heuristic!) // Note that this includes the special case where number is 0. //=================================================================== BigFloat tmp; // used to step from xLast to xCurr in loops while (xCurr < x2) { //main loop //std::cout << "Doing verticalintersec at " << xCurr << std::endl; verticalIntersections(xCurr, vI, aprec); if (vI.size() != numRoots) { // an x-interval discovered! // write previous x-interval to output file outFile << "########################################\n"; outFile << "# New x-interval with " << numRoots << " roots\n"; for (unsigned int i=0; i< numRoots; i++) { outFile << "#=======================================\n"; outFile << "# Curve No. " << i+1 << std::endl; outFile << "o " << numPoints << std::endl; outFile << red_comp(i) << "\t" << green_comp(i) << "\t" << blue_comp(i) << std::endl; tmp = xLast; for (unsigned int j=0; j< numPoints; j++) { outFile << tmp << " \t\t" << plotCurves[i][j] << "\n"; tmp += eps; }//for j }//for i numPoints = 0; // reset numRoots = vI.size(); // reset xLast = xCurr; // reset }//if vI.size() != if (numRoots>0){ // record curr. vertical intersections if numRoots>0 for (unsigned int i=0; i< numRoots; i++) { yval = (vI[i].first + vI[i].second).doubleValue()/2; if (yval < y1) plotCurves[i][numPoints] = y1.doubleValue(); else if (yval > y2) plotCurves[i][numPoints] = y2.doubleValue(); else plotCurves[i][numPoints] = yval; }//for i vI.clear(); //Should clear the intersection points numPoints++; }//if xCurr += eps; if (!xCurr.isExact()) std::cout<<"xCurr has error! xCurr=" << xCurr << std::endl; }//main while loop // Need to flush out the final x-interval: if ((numRoots>0) && (numPoints >0)) { // write to output file outFile << "########################################\n"; outFile << "# New x-interval with " << numRoots << " roots\n"; for (unsigned int i=0; i< numRoots; i++) { outFile << "#=======================================\n"; outFile << "# Curve No. " << i+1 << std::endl; outFile << "o " << numPoints << std::endl; outFile << red_comp(i) << "\t" << green_comp(i) << "\t" << blue_comp(i) << std::endl; tmp = xLast; for (unsigned int j=0; j< numPoints; j++) { outFile << tmp << " \t\t" << plotCurves[i][j] << "\n"; tmp += eps; }//for j }//for i }//if // Put out the final frame (this hides the artificial cut-off of curves outFile << "########################################\n"; outFile << "# FRAME around our figure " << std::endl; outFile << "p 4" << std::endl; outFile << "0.99 \t 0.99 \t 0.99" << std::endl; outFile << x1 << "\t" << y1 << std::endl; outFile << x2 << "\t" << y1 << std::endl; outFile << x2 << "\t" << y2 << std::endl; outFile << x1 << "\t" << y2 << std::endl; outFile << "######### End of File ##################\n"; outFile.close(); return 0; }//plot // selfIntersections(): // this should be another member function that lists // all the self-intersections of a curve // // template // void selfIntersections(BFVecInterval &vI){ // ... // } //////////////////////////////////////////////////////// // Curve helper functions //////////////////////////////////////////////////////// //Xintersections(C, D, vI): // returns the list vI of x-ccordinates of possible intersection points. // Assumes that C & D are quasi-monic.(or generally aligned) template void Xintersections( Curve& P ,Curve& Q, BFVecInterval &vI){ Sturm SS(resY(P, Q)); SS.isolateRoots(vI); } //Yintersections(C, D, vI): // similar to Xintersections template void Yintersections( Curve& P ,Curve& Q, BFVecInterval &vI){ Sturm SS(resX(P, Q)); SS.isolateRoots(vI); } // Display Intervals // template //DO I NEED THIS OVERHERE AS WELL? void showIntervals(char* s, BFVecInterval &vI) { std::cout << s; for (unsigned int i=0; i< vI.size(); i++) { std::cout << "[ " << vI[i].first << ", " << vI[i].second << " ], " ; } std::cout << std::endl; } /*************************************************************************** */ // END /*************************************************************************** */ core++-1.7/inc/CORE/poly/Poly.h0100644000175000001440000003366410142766126015372 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: Poly.h * * Description: simple polynomial class * * REPRESENTATION: * --Each polynomial has a nominal "degree" (this * is an upper bound on the true degree, which * is determined by the first non-zero coefficient). * --coefficients are parametrized by some number type "NT". * --coefficients are stored in the "coeff" array of * length "degree + 1". * CONVENTION: coeff[i] is the coefficient of X^i. So, a * coefficient list begins with the constant term. * --IMPORTANT CONVENTION: * the zero polynomial has degree -1 * while nonzero constant polynomials have degree 0. * * FUNCTIONALITY: * --Polynomial Ring Operations (+,-,*) * --Power * --Evaluation * --Differentiation * --Remainder, Quotient * --GCD * --Resultant, Discriminant (planned) * --Polynomial Composition (planned) * --file I/O (planned) * * Author: Chee Yap * Date: May 28, 2002 * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/poly/Poly.h,v $ * $Revision: 1.36 $ $Date: 2004/11/05 21:10:46 $ ***************************************************************************/ #ifndef CORE_POLY_H #define CORE_POLY_H #include #include CORE_BEGIN_NAMESPACE using namespace std; class Expr; // ================================================== // Typedefs // ================================================== //typedef std::vector VecExpr; //typedef std::pair Interval; //typedef std::vector VecInterval; typedef std::pair BFInterval; // NOTE: an error condition is indicated by // the special interval (1, 0) typedef std::vector BFVecInterval; // ================================================== // Polynomial Class // ================================================== template class Polynomial { private: //The following are used in the constructor from strings. //For more details see the related constructor. public: typedef std::vector VecNT; int degree; // This is the nominal degree (an upper bound // on the true degree) NT * coeff; // coeff is an array of size degree+1; // This remark holds even when degree = -1. // Notes: // (1) coeff[i] is the coefficient of x^i // (2) The Zero Polynomial has degree -1 // (3) Nonzero Constant Polynomials has degree 0 // STATIC MEMBERS // static NT ccc_; // THIS IS A TEMPORARY HACK static int COEFF_PER_LINE; // pretty print parameters static const char * INDENT_SPACE; // pretty print parameters static const Polynomial & polyZero(); static const Polynomial & polyUnity(); static Polynomial polyWilkinson; // a sample polynomial static int NT_TYPE; // NT_TYPE = 1 if NT is integer type (int,long,BigInt) // NT_TYPE = 2 if NT is BigFloat // NT_TYPE = 3 if NT is BigRat // NT_TYPE = 4 if NT is Expr // Hack? NT_TYPE is needed for root bounds, etc. // Constructors: Polynomial(void); // the Zero Polynomial Polynomial(int n); // construct the Unit Polynomial of nominal deg n>=0 Polynomial(int n, NT * coef); Polynomial(const Polynomial &); Polynomial(const VecNT &); Polynomial(int n, const char* s[]); Polynomial(const string & s, char myX='x'); Polynomial(const char* s, char myX='x'); ~Polynomial(); private: void constructX(int n, Polynomial& P); void constructFromString(string & s, char myX='x'); int getnumber(const char* c, int i, unsigned int len, Polynomial & P); bool isint(char c); int getint(const char* c, int i, unsigned int len, int & n); int matchparen(const char* cstr, int start); int getbasicterm(string & s, Polynomial & P); int getterm(string & s, Polynomial & P); public: //Returns a Polynomial corresponding to s, which is supposed to //contain as place-holders the chars 'x' and 'y'. Polynomial getpoly(string & s); // Assignment: Polynomial & operator=(const Polynomial&); // Expand and Contract // -- they are semi-inverses: i.e., Contract(expand(p))=p int expand(int n); // Change the current degree to n // Helper function for polynomial arithmetic int contract(); // get rid of leading zeros // Polynomial arithmetic (these are all self-modifying): Polynomial & operator+=(const Polynomial&); // += Polynomial & operator-=(const Polynomial&); // -= Polynomial & operator*=(const Polynomial&); // *= Polynomial & operator-(); // unary minus Polynomial & power (unsigned int n) ; // power (*this is changed!) Polynomial & mulScalar (const NT & c); // return (*this) * (c) Polynomial & mulXpower(int i); // If i >= 0, then this is equivalent // to multiplying by X^i. // If i < 0 to dividing by X^i Polynomial pseudoRemainder (const Polynomial& B, NT& C); // C = return value Polynomial pseudoRemainder (const Polynomial& B); // no C version // The pseudo quotient of (*this) mod B // is returned, but (*this) is transformed // into the pseudo remainder. If the argument C is provided, // Then C*(*this) = B*pseudo-quotient + pseudo-remainder. Polynomial & negPseudoRemainder (const Polynomial& B); // negative remainder Polynomial reduceStep (const Polynomial& B ); //helper for pseudoRemainder // One step of pseudo remainder // What is returned is a special polynomial C + X*M (not "C+M") // telling us the initial constant C and // the quotient M of C*(THIS) divided by p. Polynomial testReduceStep(const Polynomial& A, const Polynomial& B); //helper // Get functions int getDegree() const; // nominal degree int getTrueDegree() const; // true degree NT getCoeffi(int i) const; const NT & getLeadCoeff() const; // get TRUE leading coefficient const NT & getTailCoeff() const; // get last non-zero coefficient NT** getCoeffs() ; // get all coefficients const NT& getCoeff(int i) const; // Get single coefficient of X^i // NULL pointer if invalid i // Set functions bool setCoeff(int i, const NT & cc); // Make cc the coefficient of X^i // Return FALSE if invalid i // !! User's responsibility to // delete the old coefficient if // necessary !! // Helper Functions void reverse(); // reverse the coefficients; useful when // input coefficients are in reversed Polynomial & negate(); // multiplication by -1; useful for Sturm int makeTailCoeffNonzero(); // Divide (*this) by X^k, so that the // the tail coeff is non-zero. Return k. // Evaluation //BigFloat eval(const BigFloat&) const; // evaluation BigFloat evalFilter(const BigFloat& f, bool& validFlag, const extLong& r=defRelPrec, const extLong& a=defAbsPrec) const; BigFloat evalExact(const Expr&) const; // evaluation template T eval(const T&) const; // evaluation // Bounds BigFloat CauchyUpperBound() const; // Cauchy Root Upper Bound BigFloat CauchyLowerBound() const; // Cauchy Root Lower Bound BigFloat sepBound() const; // separation bound (multiple roots allowed) BigFloat height() const; // height return type BigFloat BigFloat length() const; // length return type BigFloat // Differentiation Polynomial & differentiate() ; // self-differentiation Polynomial & differentiate(int n) ; // multi self-differentiation // Reductions of polynomials (NT must have gcd function) Polynomial sqFreePart(); // Square free part of P is P/gcd(P,P'). Return gcd Polynomial & primPart(); // Primitive Part of *this (which is changed) ////////////////////////////////////////////////////////////////// // Resultant and discriminant // NT & resultant() ; // resultant // NT & discriminant() ; // discriminant // Composition of Polynomials: // NOT yet implemented ////////////////////////////////////////////////////////////////// // Polynomial Dump void dump(std::ofstream & ofs, std::string msg="", std::string com="# ", std::string com2="# ") const; // dump to file void dump(std::string msg="", std::string com="# ", std::string com2="# ") const; // dump to cout void filedump(std::ostream & os, std::string msg="", std::string com="# ", std::string com2="# ") const; // dump workhorse (called by dump()) void mapleDump() const; // dump of maple code for Polynomial }; //Polynomial Class // template < class NT > // NT Polynomial::ccc_; // ================================================== // Static Constants // Does this belong here? // ================================================== template < class NT > CORE_INLINE const Polynomial & Polynomial::polyZero() { static Polynomial zeroP; return zeroP; } template < class NT > CORE_INLINE const Polynomial & Polynomial::polyUnity() { static NT c[] = {1}; static Polynomial unityP(0, c); return unityP; } // ================================================== // Useful functions for Polynomial class // ================================================== // polynomial arithmetic: template < class NT > Polynomial operator+(const Polynomial&, const Polynomial&);// + template < class NT > Polynomial operator-(const Polynomial&, const Polynomial&);// - template < class NT > Polynomial operator*(const Polynomial&, const Polynomial&);// * template < class NT > Polynomial power(const Polynomial&, int n); // power template < class NT > Polynomial differentiate(const Polynomial&); // differentiate template < class NT > Polynomial differentiate(const Polynomial&, int n); // multi-differ. //Content of a Polynomial template < class NT > NT content(const Polynomial& p); template bool isDivisible(Polynomial p, Polynomial q); // GCD of two polynomials template < class NT > Polynomial gcd(const Polynomial& p, const Polynomial& q); //Resultant of two polynomials template < class NT > NT res( Polynomial p, Polynomial q); //Principal Subresultant Coefficient (psc) of two polynomials template < class NT > NT psc(int i, Polynomial p, Polynomial q); //Returns the polynomial which contains only the real roots //of P which have multiplicity d template < class NT > Polynomial factorI(Polynomial p, int d); // comparisons template < class NT > bool operator==(const Polynomial&, const Polynomial&); // == template < class NT > bool operator!=(const Polynomial&, const Polynomial&); // != template < class NT > bool zeroP(const Polynomial &); // =Zero Poly? template < class NT > bool unitP(const Polynomial &); // =Unit Poly? // stream i/o template < class NT > std::ostream& operator<<(std::ostream&, const Polynomial&); template < class NT > std::istream& operator>>(std::istream&, Polynomial&); // ================================================== // Inline Functions // ================================================== // friend polynomial arithmetic: template < class NT > CORE_INLINE Polynomial operator+(const Polynomial& p1, const Polynomial& p2) { // + return Polynomial(p1) += p2; } template < class NT > CORE_INLINE Polynomial operator-(const Polynomial& p1, const Polynomial& p2) { // - return Polynomial(p1) -= p2; } template < class NT > CORE_INLINE Polynomial operator*(const Polynomial& p1, const Polynomial& p2) { // * return Polynomial (p1) *= p2; } template < class NT > CORE_INLINE Polynomial power(const Polynomial& p, int n) { // power return Polynomial(p).power(n); } // equal to zero poly? template < class NT > CORE_INLINE bool zeroP(const Polynomial & p) { // =Zero Poly? return (p.getTrueDegree()== -1); } template < class NT > CORE_INLINE bool unitP(const Polynomial & p) { // =Unit Poly? int d = p.getTrueDegree(); return ((d == 0) && p.coeff[0]==1 ); } // get functions template < class NT > CORE_INLINE int Polynomial::getDegree() const { return degree; } // get TRUE leading coefficient template < class NT > CORE_INLINE const NT & Polynomial::getLeadCoeff() const { return getCoeff(getTrueDegree()); } // get last non-zero coefficient template < class NT > CORE_INLINE const NT & Polynomial::getTailCoeff() const { for (int i = 0; i<= getTrueDegree(); i++) if (coeff[i] != 0) return coeff[i]; // This ought to be an error (user should check this) : NT * zero = new NT(0); return *zero; } template < class NT > CORE_INLINE NT** Polynomial::getCoeffs() { return &coeff; } template < class NT > CORE_INLINE const NT& Polynomial::getCoeff(int i) const { //if (i > degree) return NULL; assert(i <= degree); return coeff[i]; } // set functions template < class NT > CORE_INLINE bool Polynomial::setCoeff(int i, const NT & cc) { if ((i<0) || (i > degree)) return false; coeff[i] = cc; return true; } // IMPLEMENTATIONS ARE FOUND IN //#include // // We include this file from CORE/Expr.h, AFTER the definition // of class Expr, because otherwise VC++.net2003 can'y compile Expr.cpp CORE_END_NAMESPACE #endif core++-1.7/inc/CORE/poly/Poly.tcc0100644000175000001440000011756510143053556015714 0ustar joachimusers/* * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: Poly.tcc * Purpose: * Template implementations of the functions * of the Polynomial class (found in Poly.h) * * OVERVIEW: * Each polynomial has a nominal "degree" (this * is an upper bound on the true degree, which * is determined by the first non-zero coefficient). * Coefficients are parametrized by some number type "NT". * Coefficients are stored in the "coeff" array of * length "degree + 1". * IMPORTANT CONVENTION: the zero polynomial has degree -1 * while nonzero constant polynomials have degree 0. * * Bugs: * Currently, coefficient number type NT only accept * NT=BigInt and NT=int * * To see where NT=Expr will give trouble, * look for NOTE_EXPR below. * * Author: Chee Yap, Sylvain Pion and Vikram Sharma * Date: May 28, 2002 * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/inc/CORE/poly/Poly.tcc,v $ * $Revision: 1.54 $ $Date: 2004/11/06 04:47:42 $ ***************************************************************************/ template int Polynomial::COEFF_PER_LINE = 4; // pretty print parameters template const char* Polynomial::INDENT_SPACE =" "; // pretty print parameters // ================================================== // Polynomial Constructors // ================================================== template Polynomial::Polynomial(void) { degree = -1; // this is the zero polynomial! coeff = NULL; } //Creates a polynomial with nominal degree n template Polynomial::Polynomial(int n) { assert(n>= -1); degree = n; if (n == -1) return; // return the zero polynomial! if (n>=0) coeff = new NT[n+1]; coeff[0]=1; // otherwise, return the unity polynomial for (int i=1; i<=n; i++) coeff[i]=0; } template Polynomial::Polynomial(int n, NT * c) { assert("array c has n+1 elements"); degree = n; if (n >= 0) { coeff = new NT[n+1]; for (int i = 0; i <= n; i++) coeff[i] = c[i]; } } // // Constructor from a vector of NT's /////////////////////////////////////// template Polynomial::Polynomial(const VecNT & vN) { degree = vN.size()-1; if (degree >= 0) { coeff = new NT[degree+1]; for (int i = 0; i <= degree; i++) coeff[i] = vN[i]; } } template Polynomial::Polynomial(const Polynomial & p) { coeff = NULL;//WHY? *this = p; // reduce to assignment operator= } // Constructor from a Character string of coefficients /////////////////////////////////////// template Polynomial::Polynomial(int n, const char * s[]) { assert("array s has n+1 elements"); degree = n; if (n >= 0) { coeff = new NT[n+1]; for (int i = 0; i <= n; i++) coeff[i] = s[i]; } } //The BNF syntax is the following:- // [poly] -> [term]| [term] '+/-' [poly] | // '-' [term] | '-' [term] '+/-' [poly] // [term] -> [basic term] | [basic term] [term] | [basic term]*[term] // [basic term] -> [number] | 'x' | [basic term] '^' [number] // | '(' [poly] ')' //COMMENT: // [number] is assumed to be a BigInt; in the future, we probably // want to generalize this to BigFloat, etc. // template Polynomial::Polynomial(const string & s, char myX) { string ss(s); constructFromString(ss, myX); } template Polynomial::Polynomial(const char * s, char myX) { string ss(s); constructFromString(ss, myX); } template void Polynomial::constructFromString(string & s, char myX) { if(myX != 'x' || myX != 'X'){ //Replace myX with 'x'. unsigned int loc = s.find(myX, 0); while(loc != string::npos){ s.replace(loc,1,1,'x'); loc = s.find(myX, loc+1); } } coeff = NULL;//Did this to ape the constructor from polynomial above *this = getpoly(s); } template Polynomial::~Polynomial() { if(degree >= 0) delete[] coeff; } //////////////////////////////////////////////////////// // METHODS USED BY STRING CONSTRUCTOR ABOVE //////////////////////////////////////////////////////// //Sets the input Polynomial to X^n template void Polynomial::constructX(int n, Polynomial& P){ Polynomial q(n);//Nominal degree n q.setCoeff(n,NT(1)); if (n>0) q.setCoeff(0,NT(0)); P = q; } //Returns in P the coeffecient starting from start template int Polynomial::getnumber(const char* c, int start, unsigned int len, Polynomial & P){ int j=0; char *temp = new char[len]; while(isint(c[j+start])){ temp[j]=c[j+start];j++; } temp[j] = '\0'; NT cf = NT(temp); Polynomial q(0); q.setCoeff(0, cf); P = q; delete[] temp; return (j-1+start);//Exactly the length of the number } template bool Polynomial::isint(char c){ if(c == '0' || c == '1' || c == '2' || c == '3' || c == '4' || c == '5' || c == '6' || c == '7' || c == '8' || c == '9') return true; else return false; } //Returns as integer the number starting from start in c template int Polynomial::getint(const char* c, int start, unsigned int len, int & n){ int j=0; char *temp = new char[len]; while(isint(c[j+start])){ temp[j]=c[j+start];j++; } temp[j] = '\n'; n = atoi(temp); delete[] temp; return (j-1+start);//Exactly the length of the number } //Given a string starting with an open parentheses returns the place // which marks the end of the corresponding closing parentheses. //Strings of the form (A). template int Polynomial::matchparen(const char* cstr, int start){ int count = 0; int j=start; do{ if(cstr[j] == '('){ count++; } if(cstr[j] == ')'){ count--; } j++; }while(count != 0 );//j is one more than the matching ')' return j-1; } template int Polynomial::getbasicterm(string & s, Polynomial & P){ const char * cstr = s.c_str(); unsigned int len = s.length(); int i=0; //Polynomial * temp = new Polynomial(); if(isint(cstr[i])){ i = getnumber(cstr, i, len, P); }else if(cstr[i] == 'x'||cstr[i] == 'X'){ constructX(1, P); }else if(cstr[i] =='('){ int oldi = i; i = matchparen(cstr, i); string t = s.substr(oldi+1, i -oldi -1); P = getpoly(t); }else{ std::cout <<"ERROR IN PARSING BASIC TERM" << std::endl; } //i+1 points to the beginning of next syntactic object in the string. if(cstr[i+1] == '^'){ int n; i = getint(cstr, i+2, len, n); P.power(n); } return i; } template int Polynomial::getterm(string & s, Polynomial & P){ unsigned int len = s.length(); if(len == 0){// Zero Polynomial P=Polynomial(); return 0; } unsigned int ind, oind; const char* cstr =s.c_str(); string t; //P will be used to accumulate the product of basic terms. ind = getbasicterm(s, P); while(ind != len-1 && cstr[ind + 1]!='+' && cstr[ind + 1]!='-' ){ //Recursively get the basic terms till we reach the end or see // a '+' or '-' sign. if(cstr[ind + 1] == '*'){ t = s.substr(ind + 2, len - ind -2); oind = ind + 2; }else{ t = s.substr(ind + 1, len -ind -1); oind = ind + 1; } Polynomial R; ind = oind + getbasicterm(t, R);//Because the second term is the offset in //t P *= R; } return ind; } template Polynomial Polynomial::getpoly(string & s){ //Remove white spaces from the string unsigned int cnt=s.find(' ',0); while(cnt != string::npos){ s.erase(cnt, 1); cnt = s.find(' ', cnt); } unsigned int len = s.length(); if(len <= 0){//Zero Polynomial return Polynomial(); } //To handle the case when there is one '=' sign //Suppose s is of the form s1 = s2. Then we assign s to //s1 + (-1)(s2) and reset len unsigned int loc; if((loc=s.find('=',0)) != string::npos){ s.replace(loc,1,1,'+'); string s3 = "(-1)("; s.insert(loc+1, s3); len = s.length(); s.insert(len, 1, ')'); } len = s.length(); const char *cstr = s.c_str(); string t; Polynomial P; // P will be the polynomial in which we accumulate the //sum and difference of the different terms. unsigned int ind; if(cstr[0] == '-'){ t = s.substr(1, len); ind = getterm(t,P) + 1; P.negate(); }else{ ind = getterm(s, P); } unsigned int oind =0;//the string between oind and ind is a term while(ind != len -1){ Polynomial R; t = s.substr(ind + 2, len -ind -2); oind = ind; ind = oind + 2 + getterm(t, R); if(cstr[oind + 1] == '+') P += R; else if(cstr[oind + 1] == '-') P -= R; else std::cout << "ERROR IN PARSING POLY! " << std::endl; } return (P); } //////////////////////////////////////////////////////// // METHODS //////////////////////////////////////////////////////// // assignment: template Polynomial & Polynomial::operator=(const Polynomial& p) { if (this == &p) return *this; // self-assignment degree = p.getDegree(); delete[] coeff; coeff = new NT[degree +1]; for (int i = 0; i <= degree; i++) coeff[i] = p.coeff[i]; return *this; } // getTrueDegree template int Polynomial::getTrueDegree() const { for (int i=degree; i>=0; i--) if (sign(coeff[i]) != 0) return i; return -1; // Zero polynomial } //get i'th Coeff. We check whether i is not greater than the // true degree and if not then return coeff[i] o/w 0 template NT Polynomial::getCoeffi(int i) const { int deg = getTrueDegree(); if(i > deg) return NT(0); return coeff[i]; } // ================================================== // polynomial arithmetic // ================================================== // Expands the nominal degree to n; // Returns n if nominal degree is changed to n // Else returns -2 template int Polynomial::expand(int n) { if ((n <= degree)||(n < 0)) return -2; int i; NT * c = coeff; coeff = new NT[n+1]; for (i = 0; i<= degree; i++) coeff[i] = c[i]; for (i = degree+1; i<=n; i++) coeff[i] = 0; delete[] c; degree = n; return n; } // contract() gets rid of leading zero coefficients // and returns the new (true) degree; // It returns -2 if this is a no-op template int Polynomial::contract() { int d = getTrueDegree(); if (d == degree) return (-2); // nothing to do else degree = d; NT * c = coeff; coeff = new NT[d+1]; for (int i = 0; i<= d; i++) coeff[i] = c[i]; delete[] c; return d; } template Polynomial & Polynomial::operator+=(const Polynomial& p) { // += int d = p.getDegree(); if (d > degree) expand(d); for (int i = 0; i<=d; i++) coeff[i] += p.coeff[i]; return *this; } template Polynomial & Polynomial::operator-=(const Polynomial& p) { // -= int d = p.getDegree(); if (d > degree) expand(d); for (int i = 0; i<=d; i++) coeff[i] -= p.coeff[i]; return *this; } // SELF-MULTIPLICATION // This is quadratic time multiplication! template Polynomial & Polynomial::operator*=(const Polynomial& p) { // *= int d = degree + p.getDegree(); NT * c = new NT[d+1]; for (int i = 0; i<=d; i++) c[i] = 0; for (int i = 0; i<=p.getDegree(); i++) for (int j = 0; j<=degree; j++) { c[i+j] += p.coeff[i] * coeff[j]; } degree = d; delete[] coeff; coeff = c; return *this; } // Multiply by a scalar template Polynomial & Polynomial::mulScalar( const NT & c) { for (int i = 0; i<=degree ; i++) coeff[i] *= c; return *this; } // mulXpower: Multiply by X^i (COULD be a divide if i<0) template Polynomial & Polynomial::mulXpower(int s) { // if s >= 0, then this is equivalent to // multiplying by X^s; if s < 0, to dividing by X^s if (s==0) return *this; int d = s+getTrueDegree(); if (d < 0) { degree = -1; delete[] coeff; coeff = NULL; return *this; } NT * c = new NT[d+1]; if (s>0) for (int j=0; j <= d; j++) { if (j <= degree) c[d-j] = coeff[d-s-j]; else c[d-j] = 0; } if (s<0) { for (int j=0; j <= d; j++) c[d-j] = coeff[d-s-j]; // since s<0, (d-s-j) > (d-j) !! } delete[] coeff; coeff = c; degree = d; return *this; }//mulXpower // REDUCE STEP (helper for PSEUDO-REMAINDER function) // Let THIS=(*this) be the current polynomial, and P be the input // argument for reduceStep. Let R be returned polynomial. // R has the special form as a binomial, // R = C + X*M // where C is a constant and M a monomial (= coeff * some power of X). // Moreover, THIS is transformed to a new polynomial, THAT, which // is given by // (C * THIS) = M * P + THAT // MOREOVER: deg(THAT) < deg(THIS) unless deg(P)>deg(Q). // Basically, C is a power of the leading coefficient of P. // REMARK: R is NOT defined as C+M, because in case M is // a constant, then we cannot separate C from M. // Furthermore, R.mulScalar(-1) gives us M. template Polynomial Polynomial::reduceStep ( const Polynomial& p) { // Chee: Omit the next 2 contractions as unnecessary // since reduceStep() is only called by pseudoRemainder(). // Also, reduceStep() already does a contraction before returning. // p.contract(); // contract(); // first contract both polynomials Polynomial q(p); // q is initially a copy of p // but is eventually M*P int pDeg = q.degree; int myDeg = degree; if (pDeg == -1) return *(new Polynomial()); // Zero Polynomial // NOTE: pDeg=-1 (i.e., p=0) is really an error condition! if (myDeg < pDeg) return *(new Polynomial(0)); // Unity Polynomial // i.e., C=1, M=0. // Now (myDeg >= pDeg). Start to form the Return Polynomial R=C+X*M Polynomial R(myDeg - pDeg + 1); // deg(M)= myDeg - pDeg q.mulXpower(myDeg - pDeg); // q is going to become M*P NT myLC = coeff[myDeg]; // LC means "leading coefficient" NT qLC = q.coeff[myDeg]; // p also has degree "myDeg" (qLC non-zero) NT LC; // NT must support // isDivisible(x,y), gcd(x,y), div_exact(x,y) in the following: // ============================================================ if (isDivisible(myLC, qLC)) { // myLC is divisible by qLC LC = div_exact(myLC, qLC); R.setCoeff(0, 1); // C = 1, R.setCoeff(R.degree, LC); // M = LC * X^(myDeg-pDeg) q.mulScalar(LC); // q = M*P. } else if (isDivisible(qLC, myLC)) { // qLC is divisible by myLC LC = div_exact(qLC, myLC); // if ((LC != 1) && (LC != -1)) { // IMPORTANT: unlike the previous // case, we need an additional condition // that LC != -1. THis is because // if (LC = -1), then we have qLC and // myLC are mutually divisible, and // we would be updating R twice! R.setCoeff(0, LC); // C = LC, R.setCoeff(R.degree, 1); // M = X^(myDeg-pDeg)(THIS WAS NOT DONE) mulScalar(LC); // THIS => THIS * LC } } else { // myLC and qLC are not mutually divisible NT g = gcd(qLC, myLC); // This ASSUMES gcd is defined in NT !! //NT g = 1; // In case no gcd is available if (g == 1) { R.setCoeff(0, qLC); // C = qLC R.setCoeff(R.degree, myLC); // M = (myLC) * X^{myDeg-pDeg} mulScalar(qLC); // forming C * THIS q.mulScalar(myLC); // forming M * P } else { NT qLC1= div_exact(qLC,g); NT myLC1= div_exact(myLC,g); R.setCoeff(0, qLC1); // C = qLC/g R.setCoeff(R.degree, myLC1); // M = (myLC/g) * X^{myDeg-pDeg} mulScalar(qLC1); // forming C * THIS q.mulScalar(myLC1); // forming M * P } } (*this) -= q; // THAT = (C * THIS) - (M * P) contract(); return R; // Returns R = C + X*M }// reduceStep // For internal use only: // Checks that c*A = B*m + AA // where A=(*oldthis) and AA=(*newthis) template Polynomial Polynomial::testReduceStep(const Polynomial& A, const Polynomial& B) { std::cout << "+++++++++++++++++++++TEST REDUCE STEP+++++++++++++++++++++\n"; Polynomial cA(A); Polynomial AA(A); Polynomial quo; quo = AA.reduceStep(B); // quo = c + X*m (m is monomial, c const) // where c*A = B*m + (*newthis) std::cout << "A = " << A << std::endl; std::cout << "B = " << B << std::endl; cA.mulScalar(quo.coeff[0]); // A -> c*A Polynomial m(quo); m.mulXpower(-1); // m's value is now m std::cout << "c = " << quo.coeff[0] << std::endl; std::cout << "c + xm = " << quo << std::endl; std::cout << "c*A = " << cA << std::endl; std::cout << "AA = " << AA << std::endl; std::cout << "B*m = " << B*m << std::endl; std::cout << "B*m + AA = " << B*m + AA << std::endl; if (cA == (B*m + AA)) std::cout << "CORRECT inside testReduceStep" << std::endl; else std::cout << "ERROR inside testReduceStep" << std::endl; std::cout << "+++++++++++++++++END TEST REDUCE STEP+++++++++++++++++++++\n"; return quo; } // PSEUDO-REMAINDER and PSEUDO-QUOTIENT: // Let A = (*this) and B be the argument polynomial. // Let Quo be the returned polynomial, // and let the final value of (*this) be Rem. // Also, C is the constant that we maintain. // We are computing A divided by B. The relation we guarantee is // (C * A) = (Quo * B) + Rem // where deg(Rem) < deg(B). So Rem is the Pseudo-Remainder // and Quo is the Pseudo-Quotient. // Moreover, C is uniquely determined (we won't spell it out) // except to note that // C divides D = (LC)^{deg(A)-deg(B)+1} // where LC is the leading coefficient of B. // NOTE: 1. Normally, Pseudo-Remainder is defined so that C = D // So be careful when using our algorithm. // 2. We provide a version of pseudoRemainder which does not // require C as argument. [For efficiency, we should provide this // version directly, instead of calling the other version!] template Polynomial Polynomial::pseudoRemainder ( const Polynomial& B) { NT temp; // dummy argument to be discarded return pseudoRemainder(B, temp); }//pseudoRemainder template Polynomial Polynomial::pseudoRemainder ( const Polynomial& B, NT & C) { contract(); // Let A = (*this). Contract A. Polynomial tmpB(B); tmpB.contract(); // local copy of B C = *(new NT(1)); // Initialized to C=1. if (B.degree == -1) { std::cout << "ERROR in Polynomial::pseudoRemainder :\n" << " -- divide by zero polynomial" << std::endl; return Polynomial(0); // Unit Polynomial (arbitrary!) } if (B.degree > degree) { return Polynomial(); // Zero Polynomial // CHECK: 1*THIS = 0*B + THAT, deg(THAT) < deg(B) } Polynomial Quo; // accumulate the return polynomial, Quo Polynomial tmpQuo; while (degree >= B.degree) { // INVARIANT: C*A = B*Quo + (*this) tmpQuo = reduceStep(tmpB); // Let (*this) be (*oldthis), which // is transformed into (*newthis). Then, // c*(*oldthis) = B*m + (*newthis) // where tmpQuo = c + X*m // Hence, C*A = B*Quo + (*oldthis) -- the old invariant // c*C*A = c*B*Quo + c*(*oldthis) // = c*B*Quo + (B*m + (*newthis)) // = B*(c*Quo + m) + (*newthis) // i.e, to update invariant, we do C->c*C, Quo --> c*Quo + m. C *= tmpQuo.coeff[0]; // C = c*C Quo.mulScalar(tmpQuo.coeff[0]); // Quo -> c*Quo tmpQuo.mulXpower(-1); // tmpQuo is now equal to m Quo += tmpQuo; // Quo -> Quo + m } return Quo; // Quo is the pseudo-quotient }//pseudoRemainder // Returns the negative of the pseudo-remainder // (self-modification) template Polynomial & Polynomial::negPseudoRemainder ( const Polynomial& B) { NT temp; // dummy argument to be discarded pseudoRemainder(B, temp); if (temp < 0) return (*this); return negate(); } template Polynomial & Polynomial::operator-() { // unary minus for (int i=0; i<=degree; i++) coeff[i] *= -1; return *this; } template Polynomial & Polynomial::power(unsigned int n) { // self-power if (n == 0) { degree = 0; delete [] coeff; coeff = new NT[1]; coeff[0] = 1; } else { Polynomial p = *this; for (unsigned int i=1; i BigFloat Polynomial::eval(const BigFloat& f) const { // evaluation if (degree == -1) return BigFloat(0); if (degree == 0) return BigFloat(coeff[0]); BigFloat val(0); for (int i=degree; i>=0; i--) { val *= f; val += BigFloat(coeff[i]); } return val; }//eval */ // Evaluation Function (generic version) // // NOTE: to call this method, a constructor of the form T(NT) must // be available. Here NT is the type of the coefficients. // // ASSERT: // Type T must be >= Type NT // // E.g., if NT is BigRat, then T be either BigRat or Expr, but NOT BigFloat. // // E.g., if NT is BigFloat, it is assumed that the BigFloat has // no error. Thus, T can be BigFloat, BigRat or Expr in this case. template template T Polynomial::eval(const T& f) const { // evaluation if (degree == -1) return T(0); if (degree == 0) return T(coeff[0]); T val(0); for (int i=degree; i>=0; i--) { val *= f; val += T(coeff[i]); } return val; }//eval // Evaluation Filter function: // // ASSERT: NT = BigRat or Expr // template BigFloat Polynomial::evalFilter(const BigFloat& f, bool& validFlag, const extLong& r, const extLong& a) const { // evaluation if (degree == -1) return BigFloat(0); if (degree == 0) return BigFloat(coeff[0], r, a); BigFloat fErrFree(f), val(0), valErrFree(0), c; fErrFree.makeExact(); for (int i=degree; i>=0; i--) { c = BigFloat(coeff[i], r, a); val *= f; val += c; valErrFree *= fErrFree; valErrFree += c.makeExact(); } validFlag = !val.isZeroIn(); return valErrFree; }//evalFilter template <> CORE_INLINE BigFloat Polynomial::evalFilter(const BigFloat& f, bool& validFlag, const extLong& r, const extLong& a) const { // evaluation assert(0); return BigFloat(0); } template BigFloat Polynomial::evalExact(const Expr& e) const { Expr eVal = eval(e); eVal.approx(); return eVal.BigFloatValue(); } //============================================================ // Bounds //============================================================ // Cauchy Upper Bound on Roots // -- ASSERTION: NT is an integer type template < class NT > BigFloat Polynomial::CauchyUpperBound() const { if (zeroP(*this)) return BigFloat(0); NT mx = 0; int deg = getTrueDegree(); for (int i = 0; i < deg; ++i) { mx = core_max(mx, abs(coeff[i])); } Expr e = mx; e /= Expr(abs(coeff[deg])); e.approx(CORE_INFTY, 2); // get an absolute approximate value with error < 1/4 return (e.BigFloatValue().makeExact() + 2); } // Cauchy Lower Bound on Roots // -- ASSERTION: NT is an integer type template < class NT > BigFloat Polynomial::CauchyLowerBound() const { if ((zeroP(*this)) || coeff[0] == 0) return BigFloat(0); NT mx = 0; int deg = getTrueDegree(); for (int i = 1; i <= deg; ++i) { mx = core_max(mx, abs(coeff[i])); } Expr e = Expr(abs(coeff[0]))/ Expr(abs(coeff[0]) + mx); e.approx(2, CORE_INFTY); // get an relative approximate value with error < 1/4 return (e.BigFloatValue().makeExact().div2()); } // Separation bound for polynomials that may have multiple roots. // We use the Rump-Schwartz bound. // // ASSERT(the return value is an exact BigFloat and a Lower Bound) // template < class NT > BigFloat Polynomial::sepBound() const { BigInt d; BigFloat e; int deg = getTrueDegree(); CORE::power(d, BigInt(deg), ((deg)+4)/2); e = CORE::power(height()+1, deg); e.makeCeilExact(); // see NOTE below return (1/(e*2*d)).makeFloorExact(); // BUG fix: ``return 1/e*2*d'' was wrong // NOTE: the relative error in this division (1/(e*2*d)) // is defBFdivRelPrec (a global variable), but // since this is always positive, we are OK. // But to ensure that defBFdivRelPrec is used, // we must make sure that e and d are exact. // Finally, using "makeFloorExact()" is OK because // the mantissa minus error (i.e., m-err) will remain positive // as long as the relative error (defBFdivRelPrec) is >1. } // height function template < class NT > BigFloat Polynomial::height() const { if (zeroP(*this)) return NT(0); int deg = getTrueDegree(); NT ht = 0; for (int i = 0; i< deg; i++) if (ht < abs(coeff[i])) ht = abs(coeff[i]); return BigFloat(ht); } // length function template < class NT > BigFloat Polynomial::length() const { if (zeroP(*this)) return NT(0); int deg = getTrueDegree(); NT length = 0; for (int i = 0; i< deg; i++) length += abs(coeff[i]*coeff[i]); return sqrt(BigFloat(length)); } //============================================================ // differentiation //============================================================ template Polynomial & Polynomial::differentiate() { // self-differentiation if (degree >= 0) { NT * c = new NT[degree]; for (int i=1; i<=degree; i++) c[i-1] = coeff[i] * i; degree--; delete[] coeff; coeff = c; } return *this; }// differentiation // multi-differentiate template Polynomial & Polynomial::differentiate(int n) { assert(n >= 0); for (int i=1; i<=n; i++) this->differentiate(); return *this; } // multi-differentiate // ================================================== // GCD, content, primitive and square-free parts // ================================================== /// divisibility predicate for polynomials // isDivisible(P,Q) returns true iff Q divides P // To FIX: the predicate name is consistent with Expr.h but not with BigInt.h template bool isDivisible(Polynomial p, Polynomial q) { if(zeroP(p)) return true; if(zeroP(q)) return false; // We should really return error! if(p.getTrueDegree() < q.getTrueDegree()) return false; p.pseudoRemainder(q); if(zeroP(p)) return true; else return false; }//isDivisible //Content of a polynomial P // -- content(P) is just the gcd of all the coefficients // -- REMARK: by definition, content(P) is non-negative // We rely on the fact that NT::gcd always // return a non-negative value!!! template NT content(const Polynomial& p) { if(zeroP(p)) return 0; int d = p.getTrueDegree(); if(d == 0){ if(p.coeff[0] > 0) return p.coeff[0]; else return -p.coeff[0]; } NT content = p.coeff[d]; for (int i=d-1; i>=0; i--) { content = gcd(content, p.coeff[i]); if(content == 1) break; // remark: gcd is non-negative, by definition } //if (p.coeff[0] < 0) return -content;(BUG!) return content; }//content // Primitive Part: (*this) is transformed to primPart and returned // -- primPart(P) is just P/content(P) // -- Should we return content(P) instead? [SHOULD IMPLEMENT THIS] // IMPORTANT: we require that content(P)>0, hence // the coefficients of primPart(P) does // not change sign; this is vital for use in Sturm sequences template Polynomial & Polynomial::primPart() { // ASSERT: GCD must be provided by NT int d = getTrueDegree(); assert (d >= 0); if (d == 0) { if (coeff[0] > 0) coeff[0] = 1; else coeff[0] = -1; return *this; } NT g = content(*this); if (g == 1 && coeff[d] > 0) return (*this); for (int i=0; i<=d; i++) { coeff[i] = coeff[i]/g; } return *this; }// primPart //GCD of two polynomials. // --Assumes that the coeffecient ring NT has a gcd function // --Returns the gcd with a positive leading coefficient (*) // otherwise division by gcd causes a change of sign affecting // Sturm sequences. // --To Check: would a non-recursive version be much better? template Polynomial gcd(const Polynomial& p, const Polynomial& q) { // If the first polynomial has a smaller degree then the second, // then change the order of calling if(p.getTrueDegree() < q.getTrueDegree()) return gcd(q,p); // If any polynomial is zero then the gcd is the other polynomial if(zeroP(q)){ if(zeroP(p)) return p; else{ if(p.getCoeffi(p.getTrueDegree()) < 0){ return Polynomial(p).negate(); }else return p; // If q<>0, then we know p<>0 } } Polynomial temp0(p); Polynomial temp1(q); // We want to compute: // gcd(p,q) = gcd(content(p),content(q)) * gcd(primPart(p), primPart(q)) NT cont0 = content(p); // why is this temporary needed? NT cont1 = content(q); NT cont = gcd(cont0,cont1); temp0.primPart(); temp1.primPart(); temp0.pseudoRemainder(temp1); return (gcd(temp1, temp0).mulScalar(cont)); }//gcd // sqFreePart() // -- this is a self-modifying operator! // -- Let P =(*this) and Q=square-free part of P. // -- (*this) is transformed into P, and gcd(P,P') is returned // NOTE: The square-free part of P is defined to be P/gcd(P, P') template Polynomial Polynomial::sqFreePart() { int d = getTrueDegree(); if(d <= 1) // linear polynomials and constants are square-free return *this; Polynomial temp(*this); Polynomial R = gcd(*this, temp.differentiate()); // R = gcd(P, P') // If P and P' have a constant gcd, then P is squarefree if(R.getTrueDegree() == 0) return (Polynomial(0)); // returns the unit polynomial as gcd (*this)=pseudoRemainder(R); // (*this) is transformed to P/R, the sqfree part //Note: This is up to multiplication by units return (R); // return the gcd }//sqFreePart() // ================================================== // Useful member functions // ================================================== // reverse: // reverses the list of coefficients template void Polynomial::reverse() { NT tmp; for (int i=0; i<= degree/2; i++) { tmp = coeff[i]; coeff[i] = coeff[degree-i]; coeff[degree-i] = tmp; } }//reverse // negate: // multiplies the polynomial by -1 // Chee: 4/29/04 -- added negate() to support negPseudoRemainder(B) template Polynomial & Polynomial::negate() { for (int i=0; i<= degree; i++) coeff[i] *= -1; // every NT must be able to construct from -1 return *this; }//negate // makeTailCoeffNonzero // Divide (*this) by X^k, so that the tail coeff becomes non-zero. // The value k is returned. In case (*this) is 0, return k=-1. // Otherwise, if (*this) is unchanged, return k=0. template int Polynomial::makeTailCoeffNonzero() { int k=-1; for (int i=0; i <= degree; i++) { if (coeff[i] != 0) { k=i; break; } } if (k <= 0) return k; // return either 0 or -1 degree -=k; // new (lowered) degree NT * c = new NT[1+degree]; for (int i=0; i<=degree; i++) c[i] = coeff[i+k]; delete[] coeff; coeff = c; return k; }// // filedump(string msg, ostream os, string com, string com2): // Dumps polynomial to output stream os // msg is any message // NOTE: Default is com="#", which is placed at start of each // output line. template void Polynomial::filedump(std::ostream & os, std::string msg, std::string commentString, std::string commentString2) const { int d= getTrueDegree(); if (msg != "") os << commentString << msg << std::endl; int i=0; if (d == -1) { // if zero polynomial os << commentString << "0"; return; } for (; i<=d; ++i) // get to the first non-zero coeff if (coeff[i] != 0) break; int termsInLine = 1; // OUTPUT the first nonzero term os << commentString; if (coeff[i] == 1) { // special cases when coeff[i] is if (i>1) os << "x^" << i; // either 1 or -1 else if (i==1) os << "x" ; else os << "1"; } else if (coeff[i] == -1) { if (i>1) os << "-x^" << i; else if (i==1) os << "-x" ; else os << "-1"; } else { // non-zero coeff os << coeff[i]; if (i>1) os << "*x^" << i; else if (i==1) os << "x" ; } // OUTPUT the remaining nonzero terms for (i++ ; i<= getTrueDegree(); ++i) { if (coeff[i] == 0) continue; termsInLine++; if (termsInLine % Polynomial::COEFF_PER_LINE == 0) { os << std::endl; os << commentString2; } if (coeff[i] == 1) { // special when coeff[i] = 1 if (i==1) os << " + x"; else os << " + x^" << i; } else if (coeff[i] == -1) { // special when coeff[i] = -1 if (i==1) os << " - x"; else os << " -x^" << i; } else { // general case if(coeff[i] > 0){ os << " + "; os << coeff[i]; }else os << coeff[i]; if (i==1) os << "*x"; else os << "*x^" << i; } } }//filedump // dump(message, ofstream, commentString) -- dump to file template void Polynomial::dump(std::ofstream & ofs, std::string msg, std::string commentString, std::string commentString2) const { filedump(ofs, msg, commentString, commentString2); } // dump(message) -- to std output template void Polynomial::dump(std::string msg, std::string com, std::string com2) const { filedump(std::cout, msg, com, com2); } // Dump of Maple Code for Polynomial template void Polynomial::mapleDump() const { if (zeroP(*this)) { std::cout << 0 << std::endl; return; } std::cout << coeff[0]; for (int i = 1; i<= getTrueDegree(); ++i) { std::cout << " + (" << coeff[i] << ")"; std::cout << "*x^" << i; } std::cout << std::endl; }//mapleDump // ================================================== // Useful friend functions for Polynomial class // ================================================== // friend differentiation template Polynomial differentiate(const Polynomial & p) { // differentiate Polynomial q(p); return q.differentiate(); } // friend multi-differentiation template Polynomial differentiate(const Polynomial & p, int n) {//multi-differentiate Polynomial q(p); assert(n >= 0); for (int i=1; i<=n; i++) q.differentiate(); return q; } // friend equality comparison template bool operator==(const Polynomial& p, const Polynomial& q) { // == int d, D; Polynomial P(p); P.contract(); Polynomial Q(q); Q.contract(); if (P.degree < Q.degree) { d = P.degree; D = Q.degree; for (int i = d+1; i<=D; i++) if (Q.coeff[i] != 0) return false; // return false } else { D = P.degree; d = Q.degree; for (int i = d+1; i<=D; i++) if (P.coeff[i] != 0) return false; // return false } for (int i = 0; i <= d; i++) if (P.coeff[i] != Q.coeff[i]) return false; // return false return true; // return true } // friend non-equality comparison template bool operator!=(const Polynomial& p, const Polynomial& q) { // != return (!(p == q)); } // stream i/o template std::ostream& operator<<(std::ostream& o, const Polynomial& p) { o << "Polynomial ( deg = " << p.degree ; if (p.degree >= 0) { o << "," << std::endl; o << "> coeff c0,c1,... = " << p.coeff[0]; for (int i=1; i<= p.degree; i++) o << ", " << p.coeff[i] ; } o << ")" << std::endl; return o; } // fragile version... template std::istream& operator>>(std::istream& is, Polynomial& p) { is >> p.degree; // Don't you need to first do "delete[] p.coeff;" ?? p.coeff = new NT[p.degree+1]; for (int i=0; i<= p.degree; i++) is >> p.coeff[i]; return is; } // ================================================== // Simple test of poly // ================================================== template bool testPoly() { int c[] = {1, 2, 3}; Polynomial p(2, c); std::cout << p; Polynomial zeroP; std::cout << "zeroP : " << zeroP << std::endl; Polynomial P5(5); std::cout << "Poly 5 : " << P5 << std::endl; return 0; } //Resultant of two polynomials. //Since we use pseudoRemainder we have to modify the original algorithm. //If C * P = Q * R + S, where C is a constant and S = prem(P,Q), m=deg(P), // n=deg(Q) and l = deg(S). //Then res(P,Q) = (-1)^(mn) b^(m-l) res(Q,S)/C^(n) //The base case being res(P,Q) = Q^(deg(P)) if Q is a constant, zero otherwise template NT res(Polynomial p, Polynomial q) { int m, n; m = p.getTrueDegree(); n = q.getTrueDegree(); if(m == -1 || n == -1) return 0; // this definition is not certified if(m == 0 && n == 0) return 1; // this definition is at variance from // Yap's book (but is OK for purposes of // checking the vanishing of resultants if(n > m) return (res(q, p)); NT b = q.coeff[n];//Leading coefficient of Q NT lc = p.coeff[m], C; p.pseudoRemainder(q, C); if(zeroP(p) && n ==0) return (pow(q.coeff[0], m)); int l = p.getTrueDegree(); return(pow(NT(-1), m*n)*pow(b,m-l)*res(q,p)/pow(C,n)); } //i^th Principal Subresultant Coefficient (psc) of two polynomials. template NT psc(int i,Polynomial p, Polynomial q) { assert(i >= 0); if(i == 0) return res(p,q); int m = p.getTrueDegree(); int n = q.getTrueDegree(); if(m == -1 || n == -1) return 0; if(m < n) return psc(i, q, p); if ( i == n) //This case occurs when i > degree of gcd return pow(q.coeff[n], m - n); if(n < i && i <= m) return 0; NT b = q.coeff[n];//Leading coefficient of Q NT lc = p.coeff[m], C; p.pseudoRemainder(q, C); if(zeroP(p) && i < n)//This case occurs when i < deg(gcd) return 0; if(zeroP(p) && i == n)//This case occurs when i=deg(gcd) might be constant return pow(q.coeff[n], m - n); int l = p.getTrueDegree(); return pow(NT(-1),(m-i)*(n-i))*pow(b,m-l)*psc(i,q,p)/pow(C, n-i); } //factorI(p,m) // computes the polynomial q which containing all roots // of multiplicity m of a given polynomial P // Used to determine the nature of intersection of two algebraic curves // The algorithm is given in Wolperts Thesis template Polynomial factorI(Polynomial p, int m){ int d=p.getTrueDegree(); Polynomial *w = new Polynomial[d+1]; w[0] = p; Polynomial temp; for(int i = 1; i <=d ; i ++){ temp = w[i-1]; w[i] = gcd(w[i-1],temp.differentiate()); } Polynomial *u = new Polynomial[d+1]; u[d] = w[d-1]; for(int i = d-1; i >=m; i--){ temp = power(u[i+1],2); for(int j=i+2; j <=d; j++){ temp *= power(u[j],j-i+1); } u[i] = w[i-1].pseudoRemainder(temp);//i-1 since the array starts at 0 } delete[] w; return u[m]; } // ================================================== // End of Polynomial // ================================================== core++-1.7/inc/CORE/poly/Sturm.h0100644000175000001440000011502410144470703015543 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: Sturm.h * * Description: * The templated class Sturm implements Sturm sequences. * Basic capabilities include: * counting number of roots in an interval, * isolating all roots in an interval * isolating the i-th largest (or smallest) root in interval * It is based on the Polynomial class. * * BigFloat intervals are used for this (new) version. * It is very important that the BigFloats used in these intervals * have no error at the beginning, and this is maintained * by refinement. Note that if x, y are error-free BigFloats, * then (x+y)/2 may not be error-free (in current implementaion. * We have to call a special "exact divide by 2" method, * (x+y).div2() for this purpose. * * CONVENTION: an interval defined by a pair of BigFloats x, y * has this interpretation: * (1) if x>y, it represents an invalid interval. * (2) if x=y, it represents a unique point x. * (3) if x class Sturm { public: int len; // len is 1 less than number of non-zero entries in array seq. // I.e., len + 1 = length of the Sturm Sequence // N.B. When len = -1 or len = 0 are special, // the array seq is not used! // Hence, one must test these special cases Polynomial * seq; // array of polynomials of length "len+1" Polynomial g;//GCD of input polynomial P and it's derivative P' NT cont;//Content of the square-free part of input polynomial P //Thus P = g * cont * seq[0] static int N_STOP_ITER; // Stop IterE after this many iterations. This // is initialized below, outside the Newton class bool NEWTON_DIV_BY_ZERO; // This is set to true when there is divide by // zero in Newton iteration (at critical value) // User is responsible to check this and to reset. typedef Polynomial PolyNT; // =============================================================== // CONSTRUCTORS // =============================================================== // Null Constructor Sturm() : len(0), NEWTON_DIV_BY_ZERO(false) {} // Constructor from a polynomial Sturm(Polynomial pp) : NEWTON_DIV_BY_ZERO(false) { len = pp.getTrueDegree(); if (len <= 0) return; // hence, seq is not defined in these cases seq = new Polynomial [len+1]; seq[0] = pp; g = seq[0].sqFreePart(); cont = content(seq[0]); seq[0].primPart(); seq[1] = differentiate(seq[0]); int i; for (i=2; i <= len; i++) { seq[i] = seq[i-2]; seq[i].negPseudoRemainder(seq[i-1]); if (zeroP(seq[i])){ len = i; break; } seq[i].primPart(); // Primitive part is important to speed // up large polynomials! However, for first 2 polymials, // we MUST NOT take primitive part, because we // want to use them in Newton Iteration } } // Chee: 7/31/04 // We need BigFloat version of Sturm(Polynomialpp) because // of curve verticalIntersection() ... . We also introduce // various support methods in BigFloat.h (exact_div, gcd, etc). // Constructor from a BigFloat polynomial // Need the fake argument to avoid compiler overloading errors Sturm(Polynomial pp, bool fake) : NEWTON_DIV_BY_ZERO(false) { len = pp.getTrueDegree(); if (len <= 0) return; // hence, seq is not defined in these cases seq = new Polynomial [len+1]; seq[0] = pp; g = seq[0].sqFreePart(); cont = content(seq[0]); seq[0].primPart(); seq[1] = differentiate(seq[0]); int i; for (i=2; i <= len; i++) { seq[i] = seq[i-2]; seq[i].negPseudoRemainder(seq[i-1]); if (zeroP(seq[i])){ len = i; break; } seq[i].primPart(); // Primitive part is important to speed // up large polynomials! However, for first 2 polymials, // we DO NOT take primitive part, because we // want to use them in Newton Iteration } } // Constructor from an array of NT's // -- this code is identical to constructing from a polynomial... Sturm(int n, NT * c) : NEWTON_DIV_BY_ZERO(false) { Polynomial pp(n, c); // create the polynomial pp first and call the (*this) = Sturm(pp);//constructor from a polynomial } // copy constructor Sturm(const Sturm&s) : len(s.len), NEWTON_DIV_BY_ZERO(s.NEWTON_DIV_BY_ZERO) { if (len <= 0) return; seq = new Polynomial [len]; for (int i=0; i 0) delete[] seq; NEWTON_DIV_BY_ZERO = o.NEWTON_DIV_BY_ZERO; len = o.len; if (len > 0) { seq = new Polynomial[len]; for (int i=0; i 0 int signVariations(const BigFloat & x, int sx) const { assert((sx != 0) && (len >0)); int cnt = 0; int last_sign = sx; for (int i=1; i<=len; i++) {// Chee (4/29/04): Bug fix, // should start iteration at i=1, not i=0. Potential error // if seq[0].eval(x)=0 (though not in our usage). int sgn = sign(seq[i].eval(x)); if (sgn*last_sign < 0) { cnt++; last_sign *= -1; } } return cnt; } // signVariations(x) // --the first polynomial eval is not yet done // --special return value of -1, indicating x is root! int signVariations(const BigFloat & x) const { if (len <= 0) return len; int signx = sign(seq[0].eval(x)); if (signx == 0) return (-1); // THIS indicates that x is a root... // REMARK: in our usage, this case does not arise return signVariations(x, signx); }//signVariations(x) // signVariation at +Infinity int signVariationsAtPosInfty() const { if (len <= 0) return len; int cnt = 0; int last_sign = sign(seq[0].coeff[seq[0].getTrueDegree()]); assert(last_sign != 0); for (int i=1; i= 0) /////////////////////////////////////////// int numberOfRootsAbove(const BigFloat &x = 0) const { if (len <= 0) return len; // return of -1 means infinity of roots! int signx = sign(seq[0].eval(x)); if (signx != 0) return signVariations(x, signx) - signVariationsAtPosInfty(); BigFloat newx = x - (seq[0].sepBound()).div2(); return signVariations(newx, sign(seq[0].eval(newx))) - signVariationsAtPosInfty(); } // numberOfRoots below x: // Default value x=0 (i.e., number of negative roots) // assert(len >= 0) /////////////////////////////////////////// int numberOfRootsBelow(const BigFloat &x = 0) const { if (len <= 0) return len; // return of -1 means infinity of roots! int signx = sign(seq[0].eval(x)); if (signx != 0) return signVariationsAtNegInfty() - signVariations(x, signx); BigFloat newx = x + (seq[0].sepBound()).div2(); return signVariationsAtNegInfty() - signVariations(newx, sign(seq[0].eval(newx))); } /// isolateRoots(x, y, v) /// Assertion(x, y are exact BigFloats) /// isolates all the roots in [x,y] and returns them in v. /** v is a list of intervals * [x,y] is the initial interval to be isolated * * Properties we guarantee in the return values: * * (0) All the intervals have exact BigFloats as endpoints * (1) If 0 is a root, the corresponding isolating interval will be * exact, i.e., we return [0,0]. * (2) If an interval is [0,x], it contains a positive root * (3) If an interval is [y,0], it contains a negative root */ void isolateRoots(const BigFloat &x, const BigFloat &y, BFVecInterval &v) const { assert(x<=y); int n = numberOfRoots(x,y); if (n == 0) return; if (n == 1) { if ((x > 0) || (y < 0)) // usual case: 0 is not in interval v.push_back(std::make_pair(x, y)); else { // if 0 is inside our interval (this extra // service is not strictly necessary!) if (seq[0].coeff[0] == 0) v.push_back(std::make_pair(BigFloat(0), BigFloat(0))); else if (numberOfRoots(0,y) == 0) v.push_back(std::make_pair(x, BigFloat(0))); else v.push_back(std::make_pair(BigFloat(0), y)); } } else { // n > 1 BigFloat mid = (x+y).div2(); // So mid is exact. if (sign(seq[0].eval(mid)) != 0) { // usual case: mid is non-root isolateRoots(x, mid, v); isolateRoots(mid, y, v); } else { // special case: mid is a root BigFloat tmpEps = (seq[0].sepBound()).div2(); // this is exact! if(mid-tmpEps > x )//Since otherwise there are no roots in (x,mid) isolateRoots(x, (mid-tmpEps).makeCeilExact(), v); v.push_back(std::make_pair(mid, mid)); if(mid+tmpEps < y)//Since otherwise there are no roots in (mid,y) isolateRoots((mid+tmpEps).makeFloorExact(), y, v); } } }//isolateRoots(x,y,v) // isolateRoots(v) /// isolates all roots and returns them in v /** v is a vector of isolated intervals */ void isolateRoots(BFVecInterval &v) const { if (len <= 0) { v.clear(); return; } BigFloat bd = seq[0].CauchyUpperBound(); // Note: bd is an exact BigFloat (this is important) isolateRoots(-bd, bd, v); } // isolateRoot(i) /// Isolates the i-th smallest root /// If i<0, isolate the (-i)-th largest root /// Defaults to i=0 (i.e., the smallest positive root a.k.a. main root) BFInterval isolateRoot(int i = 0) const { if (len <= 0) return BFInterval(1,0); // ERROR CONDITION if (i == 0) return mainRoot(); BigFloat bd = seq[0].CauchyUpperBound(); return isolateRoot(i, -bd, bd); } // isolateRoot(i, x, y) /// isolates the i-th smallest root in [x,y] /** If i is negative, then we want the i-th largest root in [x,y] * We assume i is not zero. */ BFInterval isolateRoot(int i, BigFloat x, BigFloat y) const { int n = numberOfRoots(x,y); if (i < 0) {//then we want the n-i+1 root i += n+1; if (i <= 0) return BFInterval(1,0); // ERROR CONDITION } if (n < i) return BFInterval(1,0); // ERROR CONDITION INDICATED //Now 0< i <= n if (n == 1) { if ((x>0) || (y<0)) return BFInterval(x, y); if (seq[0].coeff[0] == NT(0)) return BFInterval(0,0); if (numberOfRoots(0, y)==0) return BFInterval(x,0); return BFInterval(0,y); } BigFloat m = (x+y).div2(); n = numberOfRoots(x, m); if (n >= i) return isolateRoot(i, x, m); // Now (n < i) but we have to be careful if m is a root if (sign(seq[0].eval(m)) != 0) // usual case return isolateRoot(i-n, m, y); else return isolateRoot(i-n+1, m, y); } // same as isolateRoot(i). BFInterval diamond(int i) const { return isolateRoot(i); } // First root above BFInterval firstRootAbove(const BigFloat &e) const { if (len <= 0) return BFInterval(1,0); // ERROR CONDITION return isolateRoot(1, e, seq[0].CauchyUpperBound()); } // Main root (i.e., first root above 0) BFInterval mainRoot() const { if (len <= 0) return BFInterval(1,0); // ERROR CONDITION return isolateRoot(1, 0, seq[0].CauchyUpperBound()); } // First root below BFInterval firstRootBelow(const BigFloat &e) const { if (len <= 0) return BFInterval(1,0); // ERROR CONDITION BigFloat bd = seq[0].CauchyUpperBound(); // bd is exact int n = numberOfRoots(-bd, e); if (n <= 0) return BFInterval(1,0); BigFloat bdBF = BigFloat(ceil(bd)); if (n == 1) return BFInterval(-bdBF, e); return isolateRoot(n, -bdBF, e); } // Refine an interval I to absolute precision 2^{-aprec} // THIS USES bisection only! Use only for debugging (it is too slow) // BFInterval refine(const BFInterval& I, int aprec) const { // assert( There is a unique root in I ) // We repeat binary search till the following holds // width/2^n <= eps (eps = 2^(-aprec)) // => log(width/eps) <= n // => n = ceil(log(width/eps)) this many steps of binary search // will work. // At each step we verify // seq[0].eval(J.first) * seq[0].eval(J.second) < 0 BigFloat width = I.second - I.first; if (width <= 0) return I; // Nothing to do if the // interval I is exact or inconsistent BigFloat eps = BigFloat::exp2(-aprec); // eps = 2^{-aprec} extLong n = width.uMSB() + (extLong)aprec; BFInterval J = I; // Return value is the Interval J BigFloat midpoint; while(n >= 0) { midpoint = (J.second + J.first).div2(); BigFloat m = seq[0].eval(midpoint); if (m == 0) { J.first = J.second = midpoint; return J; } if (seq[0].eval(J.first) * m < 0) { J.second = midpoint; } else { J.first = midpoint; } n--; } return J; }//End Refine // Refine First root above BFInterval refinefirstRootAbove(const BigFloat &e, int aprec) const { BFInterval I = firstRootAbove(e); return refine(I,aprec); } // Refine First root below BFInterval refinefirstRootBelow(const BigFloat &e, int aprec) const { BFInterval I = firstRootBelow(e); return refine(I,aprec); } // refineAllRoots(v, aprec) // will modify v so that v is a list of isolating intervals for // the roots of the polynomial in *this. The size of these intervals // are at most 2^{-aprec}. // If v is non-null, we assume it is a list of initial isolating intervals. // If v is null, we will first call isolateRoots(v) to set this up. void refineAllRoots( BFVecInterval &v, int aprec) { BFVecInterval v1; BFInterval J; if (v.empty()) isolateRoots(v); for (BFVecInterval::const_iterator it = v.begin(); it != v.end(); ++it) { // Iterate through all the intervals //refine them to the given precision aprec J = refine(BFInterval(it->first, it->second), aprec); v1.push_back(std::make_pair(J.first, J.second)); } v.swap(v1); }//End of refineAllRoots // This is the new version of "refineAllRoots" // based on Newton iteration // It should be used instead of refineAllRoots! void newtonRefineAllRoots( BFVecInterval &v, int aprec) { BFVecInterval v1; BFInterval J; if (v.empty()) isolateRoots(v); for (BFVecInterval::iterator it = v.begin(); it != v.end(); ++it) { // Iterate through all the intervals //refine them to the given precision aprec J = newtonRefine(*it, aprec); if (NEWTON_DIV_BY_ZERO) { J.first = 1; J.second = 0; // indicating divide by zero } v1.push_back(std::make_pair(J.first, J.second)); } v.swap(v1); }//End of newtonRefineAllRoots /* Evaluation of BigRat or Expr polynomial at BigFloat value using Filter. * We will evaluate this polynomial approximately using BigFloats. * However, we guarantee the sign of this evaluation * We use the following heuristic estimates of precision for coefficients: r = 1 + lg(|P|_\infty) + lg(d+1) if f <= 1 r = 1 + lg(|P|_\infty) + lg(d+1) + d*lg|f| if f > 1 if the filter fails, then we use Expr to do evaluation. */ BigFloat evalExactSign(const Polynomial& p, const BigFloat& val, const extLong& oldMSB) const { assert(val.isExact()); if (p.getTrueDegree() == -1) return BigFloat(0); extLong r; r = 1 + BigFloat(p.height()).uMSB() + clLg(long(p.getTrueDegree()+1)); if (val > 1) r += p.getTrueDegree() * val.uMSB(); r += core_max(extLong(0), -oldMSB); bool validFlag; BigFloat rVal = p.evalFilter(val, validFlag, r); if (validFlag) return rVal; else { return p.evalExact(Expr(val)); } }//evalExactSign BigFloat evalPoly(const Polynomial& p, const BigFloat& val, const extLong& r) { //if (NT::hasExactDivision()){// only BigRat and Expr if (hasExactDivision()){// only BigRat and Expr return evalExactSign(p, val, r); }else return p.eval(val); } // val = newtonIterN(n, bf, del, err) // // val is the root after n iterations of Newton // starting from initial value of bf and is exact. // Return by reference, "del" (difference between returned val and value // in the previous Newton iteration) // // Also, "err" is returned by reference and bounds the error in "del". // // IMPORTANT: we assume that when x is an exact BigFloat, // then Polynomial::eval(x) will be exact! // BigFloat newtonIterN(long n, const BigFloat& bf, BigFloat& del, unsigned long & err, extLong& fuMSB, extLong& ffuMSB) { if (len <= 0) return bf; // Nothing to do! User must // check this possibility! BigFloat val = bf; // val.makeExact(); // val is exact // newton iteration for (int i=0; i= -prec) && (count >0))) ; if (count == 0) core_error("newtonIterE: reached count=0", __FILE__, __LINE__, true); del = BigFloat(core_abs(del.m()), err, del.exp() ); del.makeCeilExact(); return val; } //Another version of newtonIterE which avoids passing the uMSB's. BigFloat newtonIterE(int prec, const BigFloat& bf, BigFloat& del){ extLong fuMSB=0, ffuMSB=0; return newtonIterE(prec, bf, del, fuMSB, ffuMSB); } // A Smale bound which is an \'a posteriori condition. Applying // Newton iteration to any point z satisfying this condition we are // sure to converge to the nearest root in a certain interval of z. // The condition is for all k >= 2, // | \frac{p^(k)(z)}{k!p'(z)} |^{1\(k-1)} < 1/8 * |\frac{p'(z)}{p(z)}| // Note: code below has been streamlined (Chee) /* bool smaleBound(const Polynomial * p, BigFloat z){ int deg = p[0].getTrueDegree(); BigFloat max, temp, temp1, temp2; temp2 = p[1].eval(z); temp = core_abs(temp2/p[0].eval(z))/8; BigInt fact_k = 2; for(int k = 2; k <= deg; k++){ temp1 = core_abs(p[k].eval(z)/(fact_k*temp2)); if(k-1 == 2) temp1 = sqrt(temp1); else temp1 = root(temp1, k-1); if(temp1 >= temp) return false; } return true; } */ //An easily computable Smale's point estimate for Newton as compared to the //one above. The criterion is // // ||f||_{\infty} * \frac{|f(z)|}{|f'(z)|^2} // * \frac{\phi'(|z|)^2}{\phi(|z|)} < 0.03 // where // \phi(r) = \sum_{i=0}{m}r^i, // m = deg(f) // //It is given as Theorem B in [Smale86]. //Reference:- Chapter 8 in Complexity and Real Computation, by // Blum, Cucker, Shub and Smale // //For our implementation we calculate an upper bound on //the second fraction in the inequality above. For r>0, // // \phi'(r)^2 m^2 (r^m + 1)^2 // --------- < ------------------- (1) // \phi(r) (r-1) (r^{m+1} - 1) // // Alternatively, we have // // \phi'(r)^2 (mr^{m+1} + 1)^2 // --------- < ------------------- (2) // \phi(r) (r-1)^3 (r^{m+1} - 1) // // The first bound is better when r > 1. // The second bound is better when r << 1. // Both bounds (1) and (2) assumes r is not equal to 1. // When r=1, the exact value is // // \phi'(r)^2 m^2 (m + 1) // --------- = ----------- (3) // \phi(r) 4 // bool smaleBoundTest(const BigFloat& z){ assert(z.isExact()); // the bound only makes sense for exact z #ifdef CORE_DEBUG std::cout <<"Computing Smale's bound = " << std::endl; #endif if(seq[0].eval(z) == 0)// Reached the exact root. return true; BigFloat fprime = seq[1].eval(z); if (fprime == 0) return false; // z is a critical value! BigFloat temp = // assume eval(z) return exact values! (seq[0].eval(z)/power(fprime, 2)).makeCeilExact(); temp = core_abs(temp)*seq[0].height(); // remains exact //Thus, temp >= ||f||_{\infty} |\frac{f(z)}{f'(z)^2}| int m = seq[0].getTrueDegree(); BigFloat x = core_abs(z); if (x==1) // special case, using (3) return (temp * BigFloat(m*m*(m+1)).div2().div2() < 0.03); BigFloat temp1; if (x>1) { // use formula (1) temp1 = power(m* (power(x, m)+1), 2); // m^2*(x^m + 1)^2 temp1 /= ((x - 1)*(power(x, m+1) - 1)); // formula (1) } else { // use formula (2) temp1 = power(m*(power(x, m+1) +1), 2); // (m*x^{m+1} + 1)^2 temp1 /= (power(x - 1,3)*(power(x, m+1) -1)); // formula (2) } #ifdef CORE_DEBUG std::cout <<"Value returned by Smale bound = " << temp * temp1.makeCeilExact() << std::endl; #endif if(temp * temp1.makeCeilExact() < 0.03) // make temp1 exact! return true; else return false; }//smaleBoundTest // yapsBound(p) // returns a bound on size of isolating interval of polynomial p // which is guaranteed to be in the Newton Zone. // N.B. p MUST be square-free // // Reference: Theorem 6.37, p.184 of Yap's book // [Fundamental Problems of Algorithmic Algebra] BigFloat yapsBound(const Polynomial & p) const { int deg = p.getTrueDegree(); return 1/(1 + pow(BigFloat(deg), 3*deg+9) *pow(BigFloat(2+p.height()),6*deg)); } //newtonRefine(J, a) // // ASSERT(J is an isolating interval for some root x^*) // // ASSERT(J.first and J.second are exact BigFloats) // // Otherwise, the boundaries of the interval are not well defined. // We will return a refined interval with exact endpoints, // still called J, containing x^* and // // |J| < 2^{-a}. // // TO DO: write a version of newtonRefine(J, a, sign) where // sign=J.first.sign(), since you may already know the sign // of J.first. This will skip the preliminary stuff in the // current version. // BFInterval newtonRefine(BFInterval &J, int aprec) { #ifdef CORE_DEBUG_NEWTON std::cout << "In newtonRefine, input J=" << J.first << ", " << J.second << " precision = " << aprec << std::endl; #endif if (len <= 0) return J; // Nothing to do! User must // check this possibility! if((J.second - J.first).uMSB() < -aprec){ return (J); } int xSign, leftSign, rightSign; leftSign = sign(seq[0].eval(J.first)); if (leftSign == 0) { J.second = J.first; return J; } rightSign = sign(seq[0].eval(J.second)); if (rightSign == 0) { J.first = J.second; return J; } assert( leftSign * rightSign < 0 ); //N is number of times Newton is called without checking // whether the result is still in the interval or not #define NO_STEPS 1 int N = NO_STEPS; BigFloat x, del, olddel, temp; unsigned long err; BigFloat yap = yapsBound(seq[0]); x = (J.second + J.first).div2(); // initial estimate for the evaluation of filter extLong fuMSB=0, ffuMSB=0; //MAIN WHILE LOOP. We always make sure that J contains the root while ( !smaleBoundTest(x) && (J.second - J.first) > yap && (J.second - J.first).uMSB() >= -aprec) { x = newtonIterN(N, x, del, err, fuMSB, ffuMSB); if ((del == 0)&&(NEWTON_DIV_BY_ZERO == false)) { // reached exact root! J.first = J.second = x; return J; } BigFloat left(x), right(x); if (del>0) { left -= del; right += del; } else { left += del; right -= del; } //left and right are exact, since x is exact. if (( (J.first <= x && x <= J.second) && (J.first < left || right < J.second )) && (NEWTON_DIV_BY_ZERO == false) ) { // we can get a better root: if (left > J.first) { int lSign = sign(seq[0].eval(left)); if (lSign == leftSign) // leftSign=sign of J.first J.first = left; else if (lSign == 0) { J.first = J.second = left; return J; } } if (right < J.second) { int rSign = sign(seq[0].eval(right)); if (rSign == rightSign) J.second = right; else if (rSign == 0) { J.first = J.second = right; return J; } } // No, it is not necessary to update x to // the midpoint of the new interval J. // REASON: basically, it is hard to be smarter than Newton's method! // Newton might bring x very close to one endpoint, but it can be // because the root is near there! In any case, // by setting x to the center of J, you only gain at most // one bit of accuracy, but you stand to loose an // arbitrary amount of bits of accuracy if you are unlucky! // So I will comment out the next line. --Chee (Aug 9, 2004). // // x = (J.second + J.first).div2(); N ++; // be more confident or aggressive // (perhaps we should double N) // } else {// Either NEWTON_DIV_BY_ZERO=true // Or Newton took us out of interval J: so we need to backup x = (J.second + J.first).div2();//Reset x to midpoint since it was the //value from a failed Newton step xSign = sign(seq[0].eval(x)); if (xSign == rightSign) { J.second = x; } else if (xSign == leftSign) { J.first = x; } else { // xSign must be 0 J.first = J.second = x; return J; } x = (J.second + J.first).div2(); // reduce value of N: N = core_max(N-1, NO_STEPS); // N must be at least NO_STEPS } }//MAIN WHILE LOOP if((J.second - J.first).uMSB() >= -aprec){ // The interval J //still hasn't reached the required precision. //But we know the current value of x (call it x_0) //is in the strong Newton basin of the //root x^* (because it passes Smale's bound) ////////////////////////////////////////////////////////////////// //Both x_0 and the root x^* are in the interval J. //Let NB(x^*) be the strong Newton basin of x^*. By definition, //x_0 is in NB(x^*) means that: // // x_0 is in NB(x^*) iff |x_n-x^*| \le 2^{-2^{n}+1} |x_0-x^*| // // where x_n is the n-th iterate of Newton. // // LEMMA 1: if x_0 \in NB(x^*) then // |x_0 - x^*| <= 2|del| (*) // and // |x_1 - x^*| <= |del| (**) // // where del = -f(x_0)/f'(x_0) and x_1 = x_0 + del //Proof: //Since x_0 is in the strong Newton basin, we have // |x_1-x^*| <= |x_0-x^*|/2. (***) //The bound (*) is equivalent to // |x_0-x^*|/2 <= |del|. //This is equivalent to // |x_0-x^*| - |del| <= |x_0-x^*|/2, //which follows from // |x_0-x^* + del| <= |x_0-x^*|/2, //which is equivalent to (***). //The bound (**) follows from (*) and (***). //QED // // COMMENT: the above derivation refers to the exact values, // but what we compute is X_1 where X_1 is an approximation to // x_1. However, let us write X_1 = x_0 - DEL, where DEL is // an approximation to del. // // LEMMA 2: If |DEL| >= |del|, // then (**) holds with X_1 and DEL in place of x_1 and del. // #ifdef CORE_DEBUG std::cout << "Inside Newton Refine: Refining Part " << std::endl; if((J.second - J.first) > yap) std::cout << "Smales Bound satisfied " << std::endl; else std::cout << "Chees Bound satisfied " << std::endl; #endif xSign = sign(seq[0].eval(x)); if(xSign == 0){ J.first = J.second = x; return J; // missing before! } //int k = clLg((-(J.second - J.first).lMSB() + aprec).asLong()); x = newtonIterE(aprec, x, del, fuMSB, ffuMSB); xSign = sign(seq[0].eval(x)); if(xSign == leftSign){//Root is greater than x J.first = x; J.second = x + del; // justified by Lemma 2 above }else if(xSign == rightSign){//Root is less than x J.first = x - del; // justified by Lemma 2 above J.second = x ; }else{//x is the root J.first = J.second = x; } } #ifdef CORE_DEBUG std::cout << " Returning from Newton Refine: J.first = " << J.first << " J.second = " << J.second << " aprec = " << aprec << " Sign at the interval endpoints = " << sign(seq[0].eval(J.first)) << " : " << sign(seq[0].eval(J.second)) << " Err at starting = " << J.first.err() << " Err at end = " << J.second.err() << std::endl; #endif if(seq[0].eval(J.first) * seq[0].eval(J.second) > 0) std::cout <<" ERROR! Root is not in the Interval " << std::endl; #ifdef CORE_DEBUG_NEWTON if(J.second - J.first > BigFloat(1).exp2(-aprec)) std::cout << "ERROR! Newton Refine failed to achieve the desired precision" << std::endl; #endif return(J); }//End of newton refine };// Sturm class // ================================================== // Static initialization // ================================================== template int Sturm:: N_STOP_ITER = 10000; // stop IterE after this many loops // Reset this as needed // ================================================== // Helper Functions // ================================================== // isZeroIn(I): // returns true iff 0 is in the closed interval I CORE_INLINE bool isZeroIn(BFInterval I) { return ((I.first <= 0.0) && (I.second >= 0.0)); } ///////////////////////////////////////////////////////////////// // DIAGNOSTIC TOOLS ///////////////////////////////////////////////////////////////// // Polynomial tester: P is polynomial to be tested // prec is the bit precision for root isolation // n is the number of roots predicted template CORE_INLINE void testSturm(const Polynomial&P, int prec, int n = -1) { Sturm SS (P); BFVecInterval v; SS.refineAllRoots(v, prec); std::cout << " Number of roots is " << v.size() <= 0) & (v.size() == (unsigned)n)) std::cout << " (CORRECT!)" << std::endl; else std::cout << " (ERROR!) " << std::endl; int i = 0; for (BFVecInterval::const_iterator it = v.begin(); it != v.end(); ++it) { std::cout << ++i << "th Root is in [" << it->first << " ; " << it->second << "]" << std::endl; } }// testSturm // testNewtonSturm( Poly, aprec, n) // will run the Newton-Sturm refinement to isolate the roots of Poly // until absolute precision aprec. // n is the predicated number of roots // (will print an error message if n is wrong) template CORE_INLINE void testNewtonSturm(const Polynomial&P, int prec, int n = -1) { Sturm SS (P); BFVecInterval v; SS.newtonRefineAllRoots(v, prec); std::cout << " Number of roots is " << v.size(); if ((n >= 0) & (v.size() == (unsigned)n)) std::cout << " (CORRECT!)" << std::endl; else std::cout << " (ERROR!) " << std::endl; int i = 0; for (BFVecInterval::iterator it = v.begin(); it != v.end(); ++it) { std::cout << ++i << "th Root is in [" << it->first << " ; " << it->second << "]" << std::endl; if(it->second - it->first <= (1/power(BigFloat(2), prec))) std::cout << " (CORRECT!) Precision attained" << std::endl; else std::cout << " (ERROR!) Precision not attained" << std::endl; } }// testNewtonSturm CORE_END_NAMESPACE #endif core++-1.7/lib/0040755000175000001440000000000010147210064012535 5ustar joachimuserscore++-1.7/lib/Makefile0100644000175000001440000000060007524537514014207 0ustar joachimusers# file: Makefile (for lib) # CORE Library version 1.4 # $Id: Makefile,v 1.3 2002/08/08 18:58:20 exact Exp $ # ============================================================= # PATHS ======================================================= # ============================================================= CORE_PATH=.. clean: -@-test -z "*.a *.so" || rm -f *.a *.so veryclean: clean core++-1.7/progs/0040755000175000001440000000000010147210064013121 5ustar joachimuserscore++-1.7/progs/Make.options0100644000175000001440000000100010144727347015415 0ustar joachimusers# file: Make.options # This file in included by all the makefiles # below this subdirectory ifndef CORE_PATH CORE_PATH=../.. endif include $(CORE_PATH)/Make.config CORE_INC=-I. -I$(CORE_PATH)/inc -I$(CORE_PATH)/gmp/include CORE_LIB=-L$(CORE_PATH)/lib -L$(CORE_PATH)/gmp/lib -lcore++$(VAR) -lgmp -lm # This works for GCC 3.x, but not for 2.9x, so I removed it # The user have to set LD_LIBRARY_PATH environment variable. #ifeq (${LINKAGE}, shared) # LDFLAGS+=-R${CORE_PATH}/lib -R${CORE_PATH}/gmp/lib #endif core++-1.7/progs/Makefile0100644000175000001440000000534610144501622014566 0ustar joachimusers# Makefile for all examples in ${CORE}/progs ############################################################ ############################################################ # variables ############################################################ ### The programs in basicprogs will be automatically tested ### on ALL platforms when you do ### "make test" or "make time": basicprogs=bareiss \ chull \ compare \ demos \ fileIO \ fortune \ generic \ kahan \ pi \ poly \ sumOfSqrts \ testIdent \ tutorial ### The programs in moreprogs will be automatically tested ### on ALL unix-type platforms (sun, sgi, cyg, gnu) when you do ### "make test" or "make time": moreprogs= \ chullGraham \ curves \ delaunay \ ieee \ gaussian \ geom2d \ geom3d \ heron \ hypergeom \ nestedSqrt \ pentagon \ prover \ radical \ testFilter \ testIO \ tests ### The programs in extraprogs are not automatically testd on ### any platforms. You will have to run it yourself: extraprogs=cgal \ determinant \ continuedFrac \ constants \ allprogs= ${basicprogs} ${moreprogs} ${extraprogs} ############################################################ # targets ############################################################ default: makebasic makebasic: @for p in ${basicprogs}; do \ if test -d "$$p"; then echo $$p; ${MAKE} -C $$p; echo ""; fi; \ done test testbasic: @for p in ${basicprogs}; do \ if test -d "$$p"; then echo $$p; ${MAKE} -C $$p test; echo ""; fi; \ done ############################################################ makemoreprogs: @for p in ${moreprogs}; do \ if test -d "$$p"; then echo $$p; ${MAKE} -C $$p; echo ""; fi; \ done moretest: makemoreprogs @for p in ${moreprogs}; do \ if test -d "$$p"; then echo $$p; ${MAKE} -C $$p moretest test; echo ""; fi; \ done @for p in ${basicprogs}; do \ if test -d "$$p"; then echo $$p; ${MAKE} -C $$p moretest; echo ""; fi; \ done ############################################################ makeall: makeprogs @for p in ${extraprogs}; do \ if test -d "$$p"; then echo $$p; ${MAKE} -C $$p; echo ""; fi; \ done ############################################################ # Housekeeping ############################################################ clean: cleanbasicprogs @for p in ${moreprogs}; do \ if test -d "$$p"; then echo $$p; ${MAKE} -C $$p clean; echo ""; fi; \ done cleanbasicprogs: @for p in ${basicprogs}; do \ if test -d "$$p"; then echo $$p; ${MAKE} -C $$p clean; echo ""; fi; \ done veryclean: verycleanbasicprogs @for p in ${moreprogs}; do \ if test -d "$$p"; then echo $$p; ${MAKE} -C $$p veryclean; echo ""; fi\ done verycleanbasicprogs: @for p in ${basicprogs}; do \ if test -d "$$p"; then echo $$p; ${MAKE} -C $$p veryclean; echo ""; fi\ done core++-1.7/progs/README0100644000175000001440000000755410130300433014001 0ustar joachimusers************************************************************ file: README for $(CORE_PATH)/progs $Id: README,v 1.11 2004/10/04 16:58:03 exact Exp $ ************************************************************ Files in this subdirectory, $(CORE_PATH)/progs: README -- this file Makefile -- to make all examples Make.sh -- shell script called by Makefile Subdirectories in $(CORE_PATH)/progs contain sample programs that use the Core library, testing and illustrating usage and features of our library. If you want to compile and build your own CORE programs, take a look at the sample files in the "generic" subdirectory. bareiss/ -- implementation of Bareiss's algorithm for determinants cgal/ -- sample CGAL program based on Core numbers chull/ -- O'Rourke's 3D convex hull program chullGraham/ -- O'Rourke's implementation of Graham scan compare/ -- compares some identities involving sqrts demos/ -- basic demos for Core Library delaunay/ -- O'Rourke's delaunay triangulation programs fileIO/ -- file I/O for numerical constants (BigInt, BigFloat, BigRat) fortune/ -- Fortune's implementation of his sweepline algorithm for the Voronoi diagram of a set of points in the plane gaussian/ -- simple gaussian elimination without pivoting generic/ -- contains generic files (mainly, Makefile) to illustrate how to compile and build your own CORE programs geom2d/ -- exercises the 2D geometry COREX geom3d/ -- exercises the 3D geometry COREX heron/ -- a simple CORE program to compute the area of a triangle using Heron's formula. Results are compared to a table from W.Kahan who has a special method for this computation. hypergeom/ -- implementation of hypergeometric series, with automatic error analysis, parameter processing, argument reduction and precomputed constants. kahan/ -- A challenge for Core Library by W.Kahan nestedSqrt/ -- example of BFMS to compares two (very nearly equal) nested sqrt expressions pentagon/ -- The IN/OUT family of identity operations on pentagons. Any fixed precision arithmetic implementation will be severely challenged by this (taken from Dobkin and Silver) pi/ -- computes Pi and sqrt(Pi) to any number of digits. The computed values are automatically valided to 250 and 100 digits, resp. poly/ -- univariate polynomial class, with application classes such as Sturm and Newton for real root finding prover/ -- probabilistic geometric theorem proving for ruler-and- compass constructions, based on a generalization of Schwartz's Lemma for polynomial zero testing. sumOfSqrts/ -- examples of Graham and O'Rourke comparing sums of sqrts testFilter/ -- testing our filter implementation testIdent/ -- various identity tests of arithmetic expressions testIO/ -- tests a critical function of CORE: the various numerical input and output routines as well as precision mechanism tutorial/ -- programs used in the Core Library Tutorial Standards for these directories: ================================ Basically, the Makefile found in each directory tells you how to compile and run the programs. The following targets are always supported: % make all -- default make for the directory % make -- MUST be equivalent to "make all" % make test -- tests the programs compiled by "make all" % make clean -- remove the object files % make veryclean -- includes make clean, and removes executables The following are sometimes available: % make moretest -- optional extra tests The output often contains results of self-validation, and according to the outcome, the words "CORRECT" or "ERROR" will be displayed. ================================ We welcome your contributions or improvements to this list. -- Chee Yap (yap@cs.nyu.edu) Chen Li (chenli@cs.nyu.edu) Sylvain (pion@cs.nyu.edu) Zilin Du (zilin@cs.nyu.edu) Vikram Sharma (sharma@cs.nyu.edu) core++-1.7/progs/convert.sh0100755000175000001440000000017207437361200015144 0ustar joachimusers#! /usr/bin/bash echo -e "convert old Makefile into new Makefile..." sed "s/bareiss/$1/g" ../bareiss/Makefile > Makefile core++-1.7/progs/bareiss/0040755000175000001440000000000010147210064014551 5ustar joachimuserscore++-1.7/progs/bareiss/Makefile0100644000175000001440000000174207670164365016235 0ustar joachimusers# Makefile for bareiss # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.5 2003/06/06 19:18:13 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= bareiss all: $(TARGETS) test: $(TARGETS) ./bareiss bareiss: bareiss.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/bareiss/README0100644000175000001440000000033207437361200015433 0ustar joachimusersREADME for bareiss Implementation of the Bareiss algorithm for computing determinants of matrices. This version performs pivoting (compare Gaussian.cc in ${CORE}/progs/gaussian). The input matrices are hard-coded. core++-1.7/progs/bareiss/bareiss.cpp0100644000175000001440000000641707673707334016737 0ustar joachimusers/* ************************************** File: bareiss.cpp Purpose: Implementation of the Bareiss algorithm for computing determinants of matrices. This version performs pivoting (cf. Gaussian.cc in ${CORE}/progs/gaussian) The book "Fundamental Problems of Algorithmic Algebra", by C.Yap (Oxford U.Press, 2000) treats this algorithm. The input matrix is hard-coded. Usage: % bareiss CORE Library, $Id: bareiss.cpp,v 1.9 2003/06/17 21:57:48 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE.h" class Matrix { private: int n; double* _rep; public: Matrix(int d) : n(d) { _rep = new double [n*n]; } Matrix(int d, double M[]); Matrix(int d, int M[]); Matrix(const Matrix&); const Matrix& operator=(const Matrix&); ~Matrix() { delete [] _rep; } const double& operator()(int r, int c) const { return _rep[r * n + c]; } double& operator()(int r, int c) { return _rep[r * n + c]; } double determinant() const; friend std::ostream& operator<<(std::ostream&, const Matrix&); }; Matrix::Matrix(int d, double M[]) : n(d) { int i, j; _rep = new double [n*n]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M[i * n + j]; } Matrix::Matrix(int d, int M[]) : n(d) { int i, j; _rep = new double [n*n]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M[i * n + j]; } Matrix::Matrix(const Matrix& M) : n(M.n) { int i, j; _rep = new double [n*n]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M._rep[i * n + j]; } const Matrix& Matrix::operator=(const Matrix& M) { int i, j; if (n != M.n) { delete [] _rep; n = M.n; _rep = new double [n*n]; } for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M._rep[i * n + j]; return *this; } double Matrix::determinant() const { Matrix A = *this; double det; int i, j, k; for (i = 0; i < n-1; i++) { // assert(a(i, i) == 0); for (j = i + 1; j < n; j++) for (k = i + 1; k < n; k++) { A(j,k) = (A(j,k)*A(i,i)-A(j,i)*A(i,k)); if (i) A(j, k) /= A(i-1,i-1); } } return A(n-1,n-1); } std::ostream& operator<<(std::ostream& o, const Matrix& M) { int i, j; for (i = 0; i < M.n; i++) { for (j = 0; j < M.n; j++) { double d = M(i,j); o << M(i, j) << " "; o << d << std::endl; } o << std::endl; } return o; } int main( int argc, char *argv[] ) { double e, f; double A[] = { 512.0, 512.0, 512.0, 1.0, 512.0, -512.0, -512.0, 1.0, -512.0, 512.0, -512.0, 1.0, -512.0, -512.0, 512.0, 1.0 }; Matrix m(4, A); e = m.determinant(); std::cout << "Determinant of A = " << e << std::endl ; std::cout << " Note: Determinant of A will overflow in CORE_LEVEL 1 \n\n"; double B[] = { 3.0, 0.0, 0.0, 1.0, 0.0, 3.0, 0.0, 1.0, 0.0, 0.0, 3.0, 1.0, 1.0, 1.0, 1.0, 1.0 }; Matrix n(4, B); f = n.determinant(); std::cout << "Determinant of B = " << f << std::endl ; std::cout << " Note: Determinant of B should be 0, but shows non-zero in CORE_LEVEL 1\n\n"; return 0; } core++-1.7/progs/bezier/0040755000175000001440000000000010147210064014401 5ustar joachimuserscore++-1.7/progs/bezier/Bezier.h0100644000175000001440000005113510130276475016006 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: Bezier.h * * Description: * * This defines the following classes: * Point -- 2d points based on BigFloat * CHull -- Convex hull of Point * Bezier -- Bezier curve * * IMPORTANT: You should make sure that all the points * have exact BigFloat values (if unsure, call "makeExact()" * to clear error bits). * * Author: Chee Yap * Date: August 1, 2004 * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/progs/bezier/Bezier.h,v $ * $Revision: 1.7 $ $Date: 2004/10/04 16:41:33 $ ***************************************************************************/ #ifndef CORE_BEZIER_H #define CORE_BEZIER_H // #define CORE_LEVEL 4 #include #include // #include "CORE/geometry2d.h" #include "CORE/poly/Poly.h" using namespace std; CORE_BEGIN_NAMESPACE // ================================================== // Curve Class // ================================================== //typedef BigInt NT; //typedef Expr NT; //typedef Polynomial PolyNT; //typedef std::vector VecExpr; //typedef std::vector VecBigInt; //typedef std::vector VecNT; //typedef std::vector > VecPoly; class Point; typedef std::vector VecPoint; //////////////////////////////////////////////////////// // Generic Dump Functions: // provide only static functions, so any class can call them // //////////////////////////////////////////////////////// class Dump { public: // dumpObject() -- should be implemented in each subclass static void dumpObject(std::ostream &os, std::string com) { os << "Generic dumpObject Function -- "; os << " replaced by your class specific version"; os << std::endl; } // dump(ofs, msg, com, fcnPtr) -- dump to a file // The main dump routine: the 4th argument is a pointer // to a dump function from subclass static void filedump(std::ostream & os, std::string msg, std::string com, void (* dumpFcnPtr)(std::ostream, std::string) ){ // message: if (msg != "") os << msg << std::endl; // comment character: os << com; // class specific action: (* dumpFncPtr)(os,com); // apply class specific dump function } // dump(ofs, msg, com, fncPtr) -- dump to file static void dump(std::ofstream & ofs, std::string msg, std::string com, void (* dumpFcnPtr)(std::ostream, std::string) ){ std::ostream * osp = & ofs; // convert ofstream to ostream filedump((*osp), msg, com, dumpFcnPtr); } // dump(msg, com, fncPtr) -- dump to std output static void dump(std::string msg, std::string com void (* dumpFcnPtr)(std::ostream, std::string) ){ filedump(std::cout, msg, com, dumpFcnPtr); } // dump(msg, fncPtr) -- dump to std output static void dump(char * msg, void (* dumpFcnPtr)(std::ostream, std::string) ){ filedump(std::cout, msg, "", dumpFcnPtr); } };//Dump class /************************************************************ * POINT CLASS ************************************************************/ class Point { public: BigFloat x, y; public: // CONSTRUCTORS: Point(): x(0.0), y(0,0) {} Point(const BigFloat a, const BigFloat b) : x(a), y(b) { x.makeExact(); y.makeExact(); } Point(double a, double b) : x(BigFloat(a)), y(BigFloat(b)) {} Point(int a, int b) : x(BigFloat(a)), y(BigFloat(b)) {} Point(const Point & p) : x(p.x), y(p.y) {} // METHODS: // DISTANCES // -- may want a precision argument... BigFloat distance(const Point & p) const { return sqrt(((p.x - x)*(p.x - x) + (p.y - y)*(p.y - y))); } // LENGTH BigFloat length() const { return distance(Point(0, 0)); } //VECTOR OPERATIONS Point operator-(const Point & p) const { return Point(x-p.x, y-p.y); } Point operator+(const Point & p) const { return Point(x+p.x, y+p.y); } Point operator*(const BigFloat & c) const { return Point(c*x, c*y); } //COMPARISONS bool operator==(const Point & p) const { return ((x == p.x) && (y == p.y)); } bool operator!=(const Point & p) const { return !operator==(p); } //TOWARDS Point towards(Point target, BigFloat t) const { if (t==0.5) return Point( (x + target.x).div2(), (y + target.y).div2()); return Point( (1-t)*x + t* target.x, (1-t)*y + t* target.y); } //HALFWAY Point halfway(Point target) const { return Point( (x + target.x).div2(), (y + target.y).div2()); } //LEXICAL COMPARISON // compare_lex(p) is the most general version: // returns -1 if *this < p // +1 if *this > p // 0 if *this = p int compare_lex(Point p) { if (x< p.x) return -1; if (x> p.x) return +1; if (y< p.y) return -1; if (y> p.y) return +1; return 0; } // less_lex(p) -- returns true iff *this < p bool less_lex(Point p) { return (compare_lex(p) < 0); } // less_eq_lex(p) -- returns true iff *this <= p bool less_eq_lex(Point p) { return (compare_lex(p) <= 0); } //INPUT-OUTPUT friend std::ostream& operator<< (std::ostream&, const Point&); // write point p to output stream // The format is, e.g., Point(1.0, 23) };// Point Class /* orientation: computes the orientation of points a, b, and c as the sign of the determinant | ax ay 1 | | bx by 1 | | cx cy 1 | i.e., it returns +1 if point c lies left of the directed line through a and b, 0 if a,b,and c are collinear, and -1 otherwise. */ int orientation2d(const Point& a, const Point& b, const Point& c) { BigFloat d1 = (a.x - b.x) * (a.y - c.y); BigFloat d2 = (a.y - b.y) * (a.x - c.x); if (d1 == d2) return 0; else return (d1 > d2) ? +1 : -1; } bool leftTurn(const Point& a, const Point& b, const Point& c) { return (orientation2d(a,b,c)>0); } bool rightTurn(const Point& a, const Point& b, const Point& c) { return (orientation2d(a,b,c)<0); } bool betweenVar(const Point& a, const Point& b, const Point& c) { return (((a.x-b.x)*(c.x-b.x) + (a.y-b.y)*(c.y-b.y))<0); // if (a,b,c) are collinear, this implies b is strictly between a and c } // Friend of Point class std::ostream &operator<<(std::ostream &out, const Point &p) { out << "Point(" << p.x << "," << p.y << ")"; return out; } /************************************************************ * CONVEX HULL CLASS ************************************************************/ class CHull { public: int n; //number of points VecPoint vp; bool isConvex; // isConvex=true iff vp is really convex BigFloat diam; // if diam=0, then bounding box unknown BigFloat xmin, xmax, ymin, ymax; public: // CONSTRUCTORS: CHull(): n(0), vp(0), isConvex(false), diam(0) {} CHull(std::vector & v): n(v.size()), vp(v), isConvex(false), diam(0) {;} CHull(const CHull& ch) : n(ch.n), vp(ch.vp), isConvex(ch.isConvex), diam(ch.diam) {;} // METHODS: // convexify() runs the giftwrap algorithm // and replace vp by the true convex hull; // the isConvex flag is set to true. int convexify(){ Point* hull = new Point[n+1]; // one extra position for sentinel! Point currPoint = vp[0]; // Initialize convex hull to the lex-smallest point for (int i=1; ihull[next].y) next=i; if (next == n) { // did not find second hull point } else { // set up hull[0] and hull[n-1] to hold hold points hull[0] = hull[next]; // hull[0] was not assigned earlier hull[next] = hull[1]; // empty hull[1] for next hull point size = 1; // current hull has 2 points now! } Point sentinel = hull[n]; // sentinel variable makes code clearer do { // Giftwrapping! hull[size] = currPoint; // invariant: hull[size] is empty size++; // after this step, size IS the size of current hull! next = size; for (int i=size+1; i<=n; i++){ // loop to find next hull point int o = orientation2d(currPoint, hull[next], hull[i]); if ((o<0) || // rightturn, or (o==0 && betweenVar(hull[next],currPoint,hull[i]))) next = i; // hull[next] strict.between currPoint & hull[i] } currPoint = hull[next]; // Empty hull[size] for next round hull[next] = hull[size]; // N.B. Even if next=n, this is OK! } while (sentinel != currPoint); // The convex hull is counter clockwise in hull[0,1,...,size-1] vp.clear(); // cleanup for (int i=0; i ./tBezier Author: Chee Yap (yap@cs.nyu.edu) Date: Aug 2, 2004 Since Core Library Version 1.7 $Id: tBezier.cpp,v 1.6 2004/10/04 16:58:10 exact Exp $ ************************************** */ #define CORE_LEVEL 4 #include #include #include "Bezier.h" // #include "BernsteinPoly.h" using namespace std; typedef BigFloat NT; typedef pair NTInterval; typedef vector NTVecInterval; int main(int argc, char** argv) { // SET INTERNAL PRECISION setDefaultRelPrecision(CORE_posInfty); // This puts defAbsPrec in control int prec = 100; // Do refinement till delta at most 2^{-prec} if (argc >= 2) prec = atoi(argv[1]); // if user specifies setDefaultAbsPrecision(prec); // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(prec/3); // convert prec bits into prec/3 digits cout << "------------------------------------------------------------\n"; cout << "Relative Precision is " << defRelPrec << endl; cout << "Print Digits is " << cout.precision() << endl; cout << "Iteration Stops when delta < " << BigFloat::exp2(-prec) << endl; cout << "------------------------------------------------------------\n"; cout <<"=============================================================\n" << "TEST 0 : Control Polygon (0,0), (1,0), (0.5, -0.5), (0.5, 0.5) \n" << "=============================================================" << endl; /* VecPoint vp; vp.push_back(Point(0,0)); vp.push_back(Point(0,1)); vp.push_back(Point(1,2)); vp.push_back(Point(3,-2)); vp.push_back(Point(0,3)); vp.push_back(Point(-2,1)); vp.push_back(Point(2,2)); vp.push_back(Point(-1,-1)); vp.push_back(Point(3,1)); vp.push_back(Point(1,-1)); CHull ch(vp); ch.diameter(); ch.plothull(); ch.convexify(); ch.plothull(2); */ VecPoint vp2; // vp2.push_back(Point(0,0)); // vp2.push_back(Point(1,0)); // vp2.push_back(Point(0.5,-0.5)); // vp2.push_back(Point(0.5,0.5)); vp2.push_back(Point(0,0)); vp2.push_back(Point(1,0)); vp2.push_back(Point(0,1)); Bezier bc(vp2); Point myp = bc.getPoint(0.5); bc.mydump("Bezier Curve"); cout << "getPoint(0.5) = " << myp << endl; // Bezier L, R; // bc.subdivision(0.5, L, R); // //bc.plothull(); // L.plot(5,1); // R.plot(5,2); // bc.plot(5); cout << "End of Bezier test" << endl; return 0; } core++-1.7/progs/cgal/0040755000175000001440000000000010147210064014027 5ustar joachimuserscore++-1.7/progs/cgal/README0100644000175000001440000000031007524275571014721 0ustar joachimusersThis directory contains example programs of how to use CORE with CGAL. You need to have CGAL installed, and to have the environment variable CGAL_MAKEFILE set appropriately. Then just type "make". core++-1.7/progs/cgal/example.C0100644000175000001440000000144407524275571015611 0ustar joachimusers #include #include // From CORE #include typedef CORE::Expr NT; typedef CGAL::Cartesian Kernel; typedef Kernel::Point_2 Point_2; int main() { Point_2 A(NT("0.1"), NT("0.2")); // We use strings to ensure exact Point_2 B(NT("1.1"), NT("3.2")); // decimal representation. Point_2 C(NT("3.1"), NT("5.4")); // Compute the circumcenter of A, B, C. Point_2 D = CGAL::circumcenter(A, B, C); // Verify that D is at the same distance from A, B and C. NT AD = CGAL::squared_distance(A, D); NT BD = CGAL::squared_distance(B, D); NT CD = CGAL::squared_distance(C, D); if (AD != BD || AD != CD) std::cerr << "Not supposed to happen." << std::endl; else std::cout << "Exact computation." << std::endl; return 0; } core++-1.7/progs/cgal/makefile0100644000175000001440000000340510144727356015544 0ustar joachimusers# Created by the script create_makefile # This is the makefile for compiling a CGAL application. #---------------------------------------------------------------------# # include platform specific settings #---------------------------------------------------------------------# # Choose the right include file from the /make directory. # CGAL_MAKEFILE = ENTER_YOUR_INCLUDE_MAKEFILE_HERE include $(CGAL_MAKEFILE) #---------------------------------------------------------------------# # compiler flags #---------------------------------------------------------------------# CXXFLAGS = \ $(CGAL_CXXFLAGS) \ $(LONG_NAME_PROBLEM_CXXFLAGS) \ $(DEBUG_OPT) \ -I../../inc # added for CORE #---------------------------------------------------------------------# # linker flags #---------------------------------------------------------------------# LIBPATH = \ $(CGAL_LIBPATH) \ -L../../lib # added for CORE LDFLAGS = \ $(LONG_NAME_PROBLEM_LDFLAGS) \ $(CGAL_LDFLAGS) \ -lcore++ # added for CORE #---------------------------------------------------------------------# # target entries #---------------------------------------------------------------------# all: \ example$(EXE_EXT) example$(EXE_EXT): example$(OBJ_EXT) $(CGAL_CXX) $(LIBPATH) $(EXE_OPT)example example$(OBJ_EXT) $(LDFLAGS) clean: \ example.clean #---------------------------------------------------------------------# # suffix rules #---------------------------------------------------------------------# .C$(OBJ_EXT): $(CGAL_CXX) $(CXXFLAGS) $(OBJ_OPT) $< core++-1.7/progs/chull/0040755000175000001440000000000010147210064014230 5ustar joachimuserscore++-1.7/progs/chull/Makefile0100644000175000001440000000400210103167042015660 0ustar joachimusers# Makefile for chull # # Core Library, $Id: Makefile,v 1.10 2004/08/01 13:20:34 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= chull_level3 chull_level1 \ chull4_level3 chull4_level1 all: $(TARGETS) default: ./chull_level3 < inputs/i4 > outputs/i4.ps ./chull_level3 -l < inputs/i4 > outputs/i4.leda test: $(TARGETS) ./chull_level3 < inputs/points > outputs/points.3.ps ./chull_level1 < inputs/points > outputs/points.1.ps moretest: $(TARGETS) ./chull_level3 < inputs/cube > outputs/cube.ps ./chull_level1 -l < inputs/cube > outputs/cube.leda ./chull_level3 < inputs/points1 > outputs/points1.ps ./chull4_level3 < inputs/points1 > outputs/points1-4.ps bigtest: $(TARGETS) ./chull_level1 < inputs/para1000 > outputs/para1000.ps ./chull4_level3 -l < inputs/line1000 > outputs/line1000.leda ./chull4_level1 < inputs/cube1000 > outputs/cube1000.ps ./chull4_level3 < inputs/ball1000 > outputs/ball1000.ps orig: chull-orig.o $(CXX) -o chull-orig chull-orig.o chull2: chull2.o ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ %_level1: %_level1.o ${CXX} $(LDFLAGS) $? $(CORE_LIB) -o $@ %_level3: %_level3.o ${CXX} $(LDFLAGS) $? $(CORE_LIB) -o $@ #================================================= # Rules for CORE_LEVEL 1 and CORE_LEVEL 3 #================================================= %_level1.o: %.cpp ${CXX} -c -DCORE_LEVEL=1 $(CXXFLAGS) $(CORE_INC) $< -o $@ %_level3.o: %.cpp ${CXX} -c -DCORE_LEVEL=3 $(CXXFLAGS) $(CORE_INC) $< -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/chull/README0100644000175000001440000000130507437361200015113 0ustar joachimusersREADME file for CHULL The following files and subdirectories are in the chull directory: README This file. Makefile To compile and test programs inputs/ subdirectory containing sample input files (see README file in this subdirectory) outputs/ subdirectory for output chull.cc CORE-ized version of O'Rourke's chull.c Input and output are 3-D points (non-homogeneous coordinates) chull4.cc Similar to chull.cc, but with different input format. Input and output are integer points in homogenous coordinates. chull-orig.c O'Rourke's original C source code Input are integer 3D points. Read leading comments there. macros.h Include file for O'Rourke's original program. core++-1.7/progs/chull/chull-orig.cpp0100644000175000001440000007227407437361200017021 0ustar joachimusers/* This code is described in "Computational Geometry in C" (Second Edition), Chapter 4. It is not written to be comprehensible without the explanation in that book. Input: 3n integer coordinates for the points. Output: the 3D convex hull, in postscript with embedded comments showing the vertices and faces. Compile: gcc -o chull chull.c Written by Joseph O'Rourke, with contributions by Kristy Anderson, John Kutcher, Catherine Schevon, Susan Weller. Last modified: March 1998 Questions to orourke@cs.smith.edu. -------------------------------------------------------------------- This code is Copyright 1998 by Joseph O'Rourke. It may be freely redistributed in its entirety provided that this copyright notice is not removed. -------------------------------------------------------------------- */ #include #include /*Define Boolean type */ typedef enum { FALSE, TRUE } bool; /* Define vertex indices. */ #define X 0 #define Y 1 #define Z 2 /* Define structures for vertices, edges and faces */ typedef struct tVertexStructure tsVertex; typedef tsVertex *tVertex; typedef struct tEdgeStructure tsEdge; typedef tsEdge *tEdge; typedef struct tFaceStructure tsFace; typedef tsFace *tFace; struct tVertexStructure { int v[3]; int vnum; tEdge duplicate; /* pointer to incident cone edge (or NULL) */ bool onhull; /* T iff point on hull. */ bool mark; /* T iff point already processed. */ tVertex next, prev; }; struct tEdgeStructure { tFace adjface[2]; tVertex endpts[2]; tFace newface; /* pointer to incident cone face. */ bool delete; /* T iff edge should be delete. */ tEdge next, prev; }; struct tFaceStructure { tEdge edge[3]; tVertex vertex[3]; bool visible; /* T iff face visible from new point. */ tFace next, prev; }; /* Define flags */ #define ONHULL TRUE #define REMOVED TRUE #define VISIBLE TRUE #define PROCESSED TRUE #define SAFE 1000000 /* Range of safe coord values. */ /* Global variable definitions */ tVertex vertices = NULL; tEdge edges = NULL; tFace faces = NULL; bool debug = FALSE; bool check = FALSE; /* Function declarations */ tVertex MakeNullVertex( void ); void ReadVertices( void ); void Print( void ); void SubVec( int a[3], int b[3], int c[3]); void DoubleTriangle( void ); void ConstructHull( void ); bool AddOne( tVertex p ); int VolumeSign(tFace f, tVertex p); int Volumei( tFace f, tVertex p ); tFace MakeConeFace( tEdge e, tVertex p ); void MakeCcw( tFace f, tEdge e, tVertex p ); tEdge MakeNullEdge( void ); tFace MakeNullFace( void ); tFace MakeFace( tVertex v0, tVertex v1, tVertex v2, tFace f ); void CleanUp( void ); void CleanEdges( void ); void CleanFaces( void ); void CleanVertices( void ); bool Collinear( tVertex a, tVertex b, tVertex c ); void CheckEuler(int V, int E, int F ); void PrintPoint( tVertex p ); void Checks( void ); void Consistency( void ); void Convexity( void ); void PrintOut( tVertex v ); void PrintVertices( void ); void PrintEdges( void ); void PrintFaces( void ); #include "macros.h" /*-------------------------------------------------------------------*/ main( int argc, char *argv[] ) { if ( argc > 1 && argv[1][0] == '-' ) { if( argv[1][1] == 'd' ) { debug = TRUE; check = TRUE; fprintf( stderr, "Debug and check mode\n"); } if( argv[1][1] == 'c' ) { check = TRUE; fprintf( stderr, "Check mode\n"); } } else if ( argc > 1 && argv[1][0] != '-' ) { printf ("Usage: %s -d[ebug] c[heck]\n", *argv ); printf ("x y z coords of vertices from stdin\n"); exit(1); } ReadVertices(); DoubleTriangle(); ConstructHull(); Print(); } /*--------------------------------------------------------------------- MakeNullVertex: Makes a vertex, nulls out fields. ---------------------------------------------------------------------*/ tVertex MakeNullVertex( void ) { tVertex v; NEW( v, tsVertex ); v->duplicate = NULL; v->onhull = !ONHULL; v->mark = !PROCESSED; ADD( vertices, v ); return v; } /*--------------------------------------------------------------------- ReadVertices: Reads in the vertices, and links them into a circular list with MakeNullVertex. There is no need for the # of vertices to be the first line: the function looks for EOF instead. Sets the global variable vertices via the ADD macro. ---------------------------------------------------------------------*/ void ReadVertices( void ) { tVertex v; int x, y, z; int vnum = 0; while ( scanf ("%d %d %d", &x, &y, &z ) != EOF ) { v = MakeNullVertex(); v->v[X] = x; v->v[Y] = y; v->v[Z] = z; v->vnum = vnum++; if ( ( abs(x) > SAFE ) || ( abs(y) > SAFE ) || ( abs(z) > SAFE ) ) { printf("Coordinate of vertex below might be too large: run with -c flag\n"); PrintPoint(v); } } } /*--------------------------------------------------------------------- Print: Prints out the vertices and the faces. Uses the vnum indices corresponding to the order in which the vertices were input. Output is in PostScript format. ---------------------------------------------------------------------*/ void Print( void ) { /* Pointers to vertices, edges, faces. */ tVertex v; tEdge e; tFace f; int xmin, ymin, xmax, ymax; int a[3], b[3]; /* used to compute normal vector */ /* Counters for Euler's formula. */ int V = 0, E = 0 , F = 0; /* Note: lowercase==pointer, uppercase==counter. */ /*-- find X min & max --*/ v = vertices; xmin = xmax = v->v[X]; do { if( v->v[X] > xmax ) xmax = v->v[X]; else if( v->v[X] < xmin ) xmin = v->v[X]; v = v->next; } while ( v != vertices ); /*-- find Y min & max --*/ v = vertices; ymin = ymax = v->v[Y]; do { if( v->v[Y] > ymax ) ymax = v->v[Y]; else if( v->v[Y] < ymin ) ymin = v->v[Y]; v = v->next; } while ( v != vertices ); /* PostScript header */ printf("%%!PS\n"); printf("%%%%BoundingBox: %d %d %d %d\n", xmin, ymin, xmax, ymax); printf(".00 .00 setlinewidth\n"); printf("%d %d translate\n", -xmin+72, -ymin+72 ); /* The +72 shifts the figure one inch from the lower left corner */ /* Vertices. */ v = vertices; do { if( v->mark ) V++; v = v->next; } while ( v != vertices ); printf("\n%%%% Vertices:\tV = %d\n", V); printf("%%%% index:\tx\ty\tz\n"); do { printf( "%%%% %5d:\t%d\t%d\t%d\n", v->vnum, v->v[X], v->v[Y], v->v[Z] ); v = v->next; } while ( v != vertices ); /* Faces. */ /* visible faces are printed as PS output */ f = faces; do { ++F; f = f ->next; } while ( f != faces ); printf("\n%%%% Faces:\tF = %d\n", F ); printf("%%%% Visible faces only: \n"); do { /* Print face only if it is visible: if normal vector >= 0 */ SubVec( f->vertex[1]->v, f->vertex[0]->v, a ); SubVec( f->vertex[2]->v, f->vertex[1]->v, b ); if(( a[0] * b[1] - a[1] * b[0] ) >= 0 ) { printf("%%%% vnums: %d %d %d\n", f->vertex[0]->vnum, f->vertex[1]->vnum, f->vertex[2]->vnum); printf("newpath\n"); printf("%d\t%d\tmoveto\n", f->vertex[0]->v[X], f->vertex[0]->v[Y] ); printf("%d\t%d\tlineto\n", f->vertex[1]->v[X], f->vertex[1]->v[Y] ); printf("%d\t%d\tlineto\n", f->vertex[2]->v[X], f->vertex[2]->v[Y] ); printf("closepath stroke\n\n"); } f = f->next; } while ( f != faces ); /* prints a list of all faces */ printf("%%%% List of all faces: \n"); printf("%%%%\tv0\tv1\tv2\t(vertex indices)\n"); do { printf("%%%%\t%d\t%d\t%d\n", f->vertex[0]->vnum, f->vertex[1]->vnum, f->vertex[2]->vnum ); f = f->next; } while ( f != faces ); /* Edges. */ e = edges; do { E++; e = e->next; } while ( e != edges ); printf("\n%%%% Edges:\tE = %d\n", E ); /* Edges not printed out (but easily added). */ printf("\nshowpage\n\n"); check = TRUE; CheckEuler( V, E, F ); } /*--------------------------------------------------------------------- SubVec: Computes a - b and puts it into c. ---------------------------------------------------------------------*/ void SubVec( int a[3], int b[3], int c[3]) { int i; for( i=0; i < 2; i++ ) c[i] = a[i] - b[i]; } /*--------------------------------------------------------------------- DoubleTriangle builds the initial double triangle. It first finds 3 noncollinear points and makes two faces out of them, in opposite order. It then finds a fourth point that is not coplanar with that face. The vertices are stored in the face structure in counterclockwise order so that the volume between the face and the point is negative. Lastly, the 3 newfaces to the fourth point are constructed and the data structures are cleaned up. ---------------------------------------------------------------------*/ void DoubleTriangle( void ) { tVertex v0, v1, v2, v3, t; tFace f0, f1 = NULL; tEdge e0, e1, e2, s; int vol; /* Find 3 noncollinear points. */ v0 = vertices; while ( Collinear( v0, v0->next, v0->next->next ) ) if ( ( v0 = v0->next ) == vertices ) printf("DoubleTriangle: All points are Collinear!\n"), exit(0); v1 = v0->next; v2 = v1->next; /* Mark the vertices as processed. */ v0->mark = PROCESSED; v1->mark = PROCESSED; v2->mark = PROCESSED; /* Create the two "twin" faces. */ f0 = MakeFace( v0, v1, v2, f1 ); f1 = MakeFace( v2, v1, v0, f0 ); /* Link adjacent face fields. */ f0->edge[0]->adjface[1] = f1; f0->edge[1]->adjface[1] = f1; f0->edge[2]->adjface[1] = f1; f1->edge[0]->adjface[1] = f0; f1->edge[1]->adjface[1] = f0; f1->edge[2]->adjface[1] = f0; /* Find a fourth, noncoplanar point to form tetrahedron. */ v3 = v2->next; vol = VolumeSign( f0, v3 ); while ( !vol ) { if ( ( v3 = v3->next ) == v0 ) printf("DoubleTriangle: All points are coplanar!\n"), exit(0); vol = VolumeSign( f0, v3 ); } /* Insure that v3 will be the first added. */ vertices = v3; if ( debug ) { fprintf(stderr, "DoubleTriangle: finished. Head repositioned at v3.\n"); PrintOut( vertices ); } } /*--------------------------------------------------------------------- ConstructHull adds the vertices to the hull one at a time. The hull vertices are those in the list marked as onhull. ---------------------------------------------------------------------*/ void ConstructHull( void ) { tVertex v, vnext; int vol; bool changed; /* T if addition changes hull; not used. */ v = vertices; do { vnext = v->next; if ( !v->mark ) { v->mark = PROCESSED; changed = AddOne( v ); CleanUp(); if ( check ) { fprintf(stderr,"ConstructHull: After Add of %d & Cleanup:\n", v->vnum); Checks(); } if ( debug ) PrintOut( v ); } v = vnext; } while ( v != vertices ); } /*--------------------------------------------------------------------- AddOne is passed a vertex. It first determines all faces visible from that point. If none are visible then the point is marked as not onhull. Next is a loop over edges. If both faces adjacent to an edge are visible, then the edge is marked for deletion. If just one of the adjacent faces is visible then a new face is constructed. ---------------------------------------------------------------------*/ bool AddOne( tVertex p ) { tFace f; tEdge e, temp; int vol; bool vis = FALSE; if ( debug ) { fprintf(stderr, "AddOne: starting to add v%d.\n", p->vnum); PrintOut( vertices ); } /* Mark faces visible from p. */ f = faces; do { vol = VolumeSign( f, p ); if (debug) fprintf(stderr, "faddr: %6x paddr: %6x Vol = %d\n", f,p,vol); if ( vol < 0 ) { f->visible = VISIBLE; vis = TRUE; } f = f->next; } while ( f != faces ); /* If no faces are visible from p, then p is inside the hull. */ if ( !vis ) { p->onhull = !ONHULL; return FALSE; } /* Mark edges in interior of visible region for deletion. Erect a newface based on each border edge. */ e = edges; do { temp = e->next; if ( e->adjface[0]->visible && e->adjface[1]->visible ) /* e interior: mark for deletion. */ e->delete = REMOVED; else if ( e->adjface[0]->visible || e->adjface[1]->visible ) /* e border: make a new face. */ e->newface = MakeConeFace( e, p ); e = temp; } while ( e != edges ); return TRUE; } /*--------------------------------------------------------------------- VolumeSign returns the sign of the volume of the tetrahedron determined by f and p. VolumeSign is +1 iff p is on the negative side of f, where the positive side is determined by the rh-rule. So the volume is positive if the ccw normal to f points outside the tetrahedron. The final fewer-multiplications form is due to Bob Williamson. ---------------------------------------------------------------------*/ int VolumeSign( tFace f, tVertex p ) { double vol; int voli; double ax, ay, az, bx, by, bz, cx, cy, cz; ax = f->vertex[0]->v[X] - p->v[X]; ay = f->vertex[0]->v[Y] - p->v[Y]; az = f->vertex[0]->v[Z] - p->v[Z]; bx = f->vertex[1]->v[X] - p->v[X]; by = f->vertex[1]->v[Y] - p->v[Y]; bz = f->vertex[1]->v[Z] - p->v[Z]; cx = f->vertex[2]->v[X] - p->v[X]; cy = f->vertex[2]->v[Y] - p->v[Y]; cz = f->vertex[2]->v[Z] - p->v[Z]; vol = ax * (by*cz - bz*cy) + ay * (bz*cx - bx*cz) + az * (bx*cy - by*cx); if ( debug ) fprintf(stderr,"Face=%6x; Vertex=%d: vol(int) = %d, vol(double) = %lf\n", f,p->vnum,voli,vol); /* The volume should be an integer. */ if ( vol > 0.5 ) return 1; else if ( vol < -0.5 ) return -1; else return 0; } /*---------------------------------------------------------------------*/ int Volumei( tFace f, tVertex p ) { double vol; int voli; double ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz; ax = f->vertex[0]->v[X] - p->v[X]; ay = f->vertex[0]->v[Y] - p->v[Y]; az = f->vertex[0]->v[Z] - p->v[Z]; bx = f->vertex[1]->v[X] - p->v[X]; by = f->vertex[1]->v[Y] - p->v[Y]; bz = f->vertex[1]->v[Z] - p->v[Z]; cx = f->vertex[2]->v[X] - p->v[X]; cy = f->vertex[2]->v[Y] - p->v[Y]; cz = f->vertex[2]->v[Z] - p->v[Z]; vol = (ax * (by*cz - bz*cy) + ay * (bz*cx - bx*cz) + az * (bx*cy - by*cx)); if ( debug ) fprintf(stderr,"Face=%6x; Vertex=%d: vol(int) = %d, vol(double) = %lf\n", f,p->vnum,voli,vol); /* The volume should be an integer. */ if ( vol > 0.5 ) return 1; else if ( vol < -0.5 ) return -1; else return 0; } /*-------------------------------------------------------------------*/ void PrintPoint( tVertex p ) { int i; for ( i = 0; i < 3; i++ ) printf("\t%d", p->v[i]); putchar('\n'); } /*--------------------------------------------------------------------- MakeConeFace makes a new face and two new edges between the edge and the point that are passed to it. It returns a pointer to the new face. ---------------------------------------------------------------------*/ tFace MakeConeFace( tEdge e, tVertex p ) { tEdge new_edge[2]; tFace new_face; int i, j; /* Make two new edges (if don't already exist). */ for ( i=0; i < 2; ++i ) /* If the edge exists, copy it into new_edge. */ if ( !( new_edge[i] = e->endpts[i]->duplicate) ) { /* Otherwise (duplicate is NULL), MakeNullEdge. */ new_edge[i] = MakeNullEdge(); new_edge[i]->endpts[0] = e->endpts[i]; new_edge[i]->endpts[1] = p; e->endpts[i]->duplicate = new_edge[i]; } /* Make the new face. */ new_face = MakeNullFace(); new_face->edge[0] = e; new_face->edge[1] = new_edge[0]; new_face->edge[2] = new_edge[1]; MakeCcw( new_face, e, p ); /* Set the adjacent face pointers. */ for ( i=0; i < 2; ++i ) for ( j=0; j < 2; ++j ) /* Only one NULL link should be set to new_face. */ if ( !new_edge[i]->adjface[j] ) { new_edge[i]->adjface[j] = new_face; break; } return new_face; } /*--------------------------------------------------------------------- MakeCcw puts the vertices in the face structure in counterclock wise order. We want to store the vertices in the same order as in the visible face. The third vertex is always p. ---------------------------------------------------------------------*/ void MakeCcw( tFace f, tEdge e, tVertex p ) { tFace fv; /* The visible face adjacent to e */ int i; /* Index of e->endpoint[0] in fv. */ tEdge s; /* Temporary, for swapping */ if ( e->adjface[0]->visible ) fv = e->adjface[0]; else fv = e->adjface[1]; /* Set vertex[0] & [1] of f to have the same orientation as do the corresponding vertices of fv. */ for ( i=0; fv->vertex[i] != e->endpts[0]; ++i ) ; /* Orient f the same as fv. */ if ( fv->vertex[ (i+1) % 3 ] != e->endpts[1] ) { f->vertex[0] = e->endpts[1]; f->vertex[1] = e->endpts[0]; } else { f->vertex[0] = e->endpts[0]; f->vertex[1] = e->endpts[1]; SWAP( s, f->edge[1], f->edge[2] ); } /* This swap is tricky. e is edge[0]. edge[1] is based on endpt[0], edge[2] on endpt[1]. So if e is oriented "forwards," we need to move edge[1] to follow [0], because it precedes. */ f->vertex[2] = p; } /*--------------------------------------------------------------------- MakeNullEdge creates a new cell and initializes all pointers to NULL and sets all flags to off. It returns a pointer to the empty cell. ---------------------------------------------------------------------*/ tEdge MakeNullEdge( void ) { tEdge e; NEW( e, tsEdge ); e->adjface[0] = e->adjface[1] = e->newface = NULL; e->endpts[0] = e->endpts[1] = NULL; e->delete = !REMOVED; ADD( edges, e ); return e; } /*-------------------------------------------------------------------- MakeNullFace creates a new face structure and initializes all of its flags to NULL and sets all the flags to off. It returns a pointer to the empty cell. ---------------------------------------------------------------------*/ tFace MakeNullFace( void ) { tFace f; int i; NEW( f, tsFace); for ( i=0; i < 3; ++i ) { f->edge[i] = NULL; f->vertex[i] = NULL; } f->visible = !VISIBLE; ADD( faces, f ); return f; } /*--------------------------------------------------------------------- MakeFace creates a new face structure from three vertices (in ccw order). It returns a pointer to the face. ---------------------------------------------------------------------*/ tFace MakeFace( tVertex v0, tVertex v1, tVertex v2, tFace fold ) { tFace f; tEdge e0, e1, e2; /* Create edges of the initial triangle. */ if( !fold ) { e0 = MakeNullEdge(); e1 = MakeNullEdge(); e2 = MakeNullEdge(); } else { /* Copy from fold, in reverse order. */ e0 = fold->edge[2]; e1 = fold->edge[1]; e2 = fold->edge[0]; } e0->endpts[0] = v0; e0->endpts[1] = v1; e1->endpts[0] = v1; e1->endpts[1] = v2; e2->endpts[0] = v2; e2->endpts[1] = v0; /* Create face for triangle. */ f = MakeNullFace(); f->edge[0] = e0; f->edge[1] = e1; f->edge[2] = e2; f->vertex[0] = v0; f->vertex[1] = v1; f->vertex[2] = v2; /* Link edges to face. */ e0->adjface[0] = e1->adjface[0] = e2->adjface[0] = f; return f; } /*--------------------------------------------------------------------- CleanUp goes through each data structure list and clears all flags and NULLs out some pointers. The order of processing (edges, faces, vertices) is important. ---------------------------------------------------------------------*/ void CleanUp( void ) { CleanEdges(); CleanFaces(); CleanVertices(); } /*--------------------------------------------------------------------- CleanEdges runs through the edge list and cleans up the structure. If there is a newface then it will put that face in place of the visible face and NULL out newface. It also deletes so marked edges. ---------------------------------------------------------------------*/ void CleanEdges( void ) { tEdge e; /* Primary index into edge list. */ tEdge t; /* Temporary edge pointer. */ /* Integrate the newface's into the data structure. */ /* Check every edge. */ e = edges; do { if ( e->newface ) { if ( e->adjface[0]->visible ) e->adjface[0] = e->newface; else e->adjface[1] = e->newface; e->newface = NULL; } e = e->next; } while ( e != edges ); /* Delete any edges marked for deletion. */ while ( edges && edges->delete ) { e = edges; DELETE( edges, e ); } e = edges->next; do { if ( e->delete ) { t = e; e = e->next; DELETE( edges, t ); } else e = e->next; } while ( e != edges ); } /*--------------------------------------------------------------------- CleanFaces runs through the face list and deletes any face marked visible. ---------------------------------------------------------------------*/ void CleanFaces( void ) { tFace f; /* Primary pointer into face list. */ tFace t; /* Temporary pointer, for deleting. */ while ( faces && faces->visible ) { f = faces; DELETE( faces, f ); } f = faces->next; do { if ( f->visible ) { t = f; f = f->next; DELETE( faces, t ); } else f = f->next; } while ( f != faces ); } /*--------------------------------------------------------------------- CleanVertices runs through the vertex list and deletes the vertices that are marked as processed but are not incident to any undeleted edges. ---------------------------------------------------------------------*/ void CleanVertices( void ) { tEdge e; tVertex v, t; /* Mark all vertices incident to some undeleted edge as on the hull. */ e = edges; do { e->endpts[0]->onhull = e->endpts[1]->onhull = ONHULL; e = e->next; } while (e != edges); /* Delete all vertices that have been processed but are not on the hull. */ while ( vertices && vertices->mark && !vertices->onhull ) { v = vertices; DELETE( vertices, v ); } v = vertices->next; do { if ( v->mark && !v->onhull ) { t = v; v = v->next; DELETE( vertices, t ) } else v = v->next; } while ( v != vertices ); /* Reset flags. */ v = vertices; do { v->duplicate = NULL; v->onhull = !ONHULL; v = v->next; } while ( v != vertices ); } /*--------------------------------------------------------------------- Collinear checks to see if the three points given are collinear, by checking to see if each element of the cross product is zero. ---------------------------------------------------------------------*/ bool Collinear( tVertex a, tVertex b, tVertex c ) { return ( c->v[Z] - a->v[Z] ) * ( b->v[Y] - a->v[Y] ) - ( b->v[Z] - a->v[Z] ) * ( c->v[Y] - a->v[Y] ) == 0 && ( b->v[Z] - a->v[Z] ) * ( c->v[X] - a->v[X] ) - ( b->v[X] - a->v[X] ) * ( c->v[Z] - a->v[Z] ) == 0 && ( b->v[X] - a->v[X] ) * ( c->v[Y] - a->v[Y] ) - ( b->v[Y] - a->v[Y] ) * ( c->v[X] - a->v[X] ) == 0 ; } /*--------------------------------------------------------------------- Consistency runs through the edge list and checks that all adjacent faces have their endpoints in opposite order. This verifies that the vertices are in counterclockwise order. ---------------------------------------------------------------------*/ void Consistency( void ) { register tEdge e; register int i, j; e = edges; do { /* find index of endpoint[0] in adjacent face[0] */ for ( i = 0; e->adjface[0]->vertex[i] != e->endpts[0]; ++i ) ; /* find index of endpoint[0] in adjacent face[1] */ for ( j = 0; e->adjface[1]->vertex[j] != e->endpts[0]; ++j ) ; /* check if the endpoints occur in opposite order */ if ( !( e->adjface[0]->vertex[ (i+1) % 3 ] == e->adjface[1]->vertex[ (j+2) % 3 ] || e->adjface[0]->vertex[ (i+2) % 3 ] == e->adjface[1]->vertex[ (j+1) % 3 ] ) ) break; e = e->next; } while ( e != edges ); if ( e != edges ) fprintf( stderr, "Checks: edges are NOT consistent.\n"); else fprintf( stderr, "Checks: edges consistent.\n"); } /*--------------------------------------------------------------------- Convexity checks that the volume between every face and every point is negative. This shows that each point is inside every face and therefore the hull is convex. ---------------------------------------------------------------------*/ void Convexity( void ) { register tFace f; register tVertex v; int vol; f = faces; do { v = vertices; do { if ( v->mark ) { vol = VolumeSign( f, v ); if ( vol < 0 ) break; } v = v->next; } while ( v != vertices ); f = f->next; } while ( f != faces ); if ( f != faces ) fprintf( stderr, "Checks: NOT convex.\n"); else if ( check ) fprintf( stderr, "Checks: convex.\n"); } /*--------------------------------------------------------------------- CheckEuler checks Euler's relation, as well as its implications when all faces are known to be triangles. Only prints positive information when debug is true, but always prints negative information. ---------------------------------------------------------------------*/ void CheckEuler( int V, int E, int F ) { if ( check ) fprintf( stderr, "Checks: V, E, F = %d %d %d:\t", V, E, F); if ( (V - E + F) != 2 ) fprintf( stderr, "Checks: V-E+F != 2\n"); else if ( check ) fprintf( stderr, "V-E+F = 2\t"); if ( F != (2 * V - 4) ) fprintf( stderr, "Checks: F=%d != 2V-4=%d; V=%d\n", F, 2*V-4, V); else if ( check ) fprintf( stderr, "F = 2V-4\t"); if ( (2 * E) != (3 * F) ) fprintf( stderr, "Checks: 2E=%d != 3F=%d; E=%d, F=%d\n", 2*E, 3*F, E, F ); else if ( check ) fprintf( stderr, "2E = 3F\n"); } /*-------------------------------------------------------------------*/ void Checks( void ) { tVertex v; tEdge e; tFace f; int V = 0, E = 0 , F = 0; Consistency(); Convexity(); if ( v = vertices ) do { if (v->mark) V++; v = v->next; } while ( v != vertices ); if ( e = edges ) do { E++; e = e->next; } while ( e != edges ); if ( f = faces ) do { F++; f = f ->next; } while ( f != faces ); CheckEuler( V, E, F ); } /*=================================================================== These functions are used whenever the debug flag is set. They print out the entire contents of each data structure. Printing is to standard error. To grab the output in a file in the csh, use this: chull < i.file >&! o.file =====================================================================*/ /*-------------------------------------------------------------------*/ void PrintOut( tVertex v ) { fprintf( stderr, "\nHead vertex %d = %6x :\n", v->vnum, v ); PrintVertices(); PrintEdges(); PrintFaces(); } /*-------------------------------------------------------------------*/ void PrintVertices( void ) { tVertex temp; temp = vertices; fprintf (stderr, "Vertex List\n"); if (vertices) do { fprintf(stderr," addr %6x\t", vertices ); fprintf(stderr," vnum %4d", vertices->vnum ); fprintf(stderr," (%6d,%6d,%6d)",vertices->v[X], vertices->v[Y], vertices->v[Z] ); fprintf(stderr," active:%3d", vertices->onhull ); fprintf(stderr," dup:%5x", vertices->duplicate ); fprintf(stderr," mark:%2d\n", vertices->mark ); vertices = vertices->next; } while ( vertices != temp ); } /*-------------------------------------------------------------------*/ void PrintEdges( void ) { tEdge temp; int i; temp = edges; fprintf (stderr, "Edge List\n"); if (edges) do { fprintf( stderr, " addr: %6x\t", edges ); fprintf( stderr, "adj: "); for (i=0; i<2; ++i) fprintf( stderr, "%6x", edges->adjface[i] ); fprintf( stderr, " endpts:"); for (i=0; i<2; ++i) fprintf( stderr, "%4d", edges->endpts[i]->vnum); fprintf( stderr, " del:%3d\n", edges->delete ); edges = edges->next; } while (edges != temp ); } /*-------------------------------------------------------------------*/ void PrintFaces( void ) { int i; tFace temp; temp = faces; fprintf (stderr, "Face List\n"); if (faces) do { fprintf(stderr, " addr: %6x\t", faces ); fprintf(stderr, " edges:"); for( i=0; i<3; ++i ) fprintf(stderr, "%6x", faces->edge[i] ); fprintf(stderr, " vert:"); for ( i=0; i<3; ++i) fprintf(stderr, "%4d", faces->vertex[i]->vnum ); fprintf(stderr, " vis: %d\n", faces->visible ); faces= faces->next; } while ( faces != temp ); } core++-1.7/progs/chull/chull.cpp0100644000175000001440000010500507735775711016071 0ustar joachimusers/***************************************************************** File: chull.ccp Purpose: To compute the convex hull of an input set of 3D points. It can run in level 1 or 3 of the Core Library. This is a CORE-ized version of O'Rourke's program (see comments below). Changes to O'Rourke's program: -- all printf and scanf are converted to std::cout and std::cin -- input numbers are assumed to be double instead of int -- input points are in homogeneous coordinates (x,y,z,w) Usage: % chull [-l | -s] < input_file >! output_file If the optional switch (-l or -s) are not given, then chull output a postscript file to draw a projection of the convex hull. The switches modifies this behavior: -l This forces chull to output the convex hull in a form suitable for display using LEDA's window sytem -s This forcess chull to output a list of vertices, edges and faces in the convex hull. Caveat: Most of O'Rourke's original comments are intact, but some of them no longer make sense. Author: Hui Jin (hj228@cs.nyu.edu), August 1999. ****************************************************************** O'Rourke's Original Comments: ****************************************************************** This code is described in "Computational Geometry in C" (Second Edition), Chapter 4. It is not written to be comprehensible without the explanation in that book. Input: 3n integer coordinates for the points. Output: the 3D convex hull, in postscript with embedded comments showing the vertices and faces. Compile: gcc -o chull chull.c Written by Joseph O'Rourke, with contributions by Kristy Anderson, John Kutcher, Catherine Schevon, Susan Weller. Last modified: March 1998 Questions to orourke@cs.smith.edu. -------------------------------------------------------------------- This code is Copyright 1998 by Joseph O'Rourke. It may be freely redistributed in its entirety provided that this copyright notice is not removed. -------------------------------------------------------------------- */ #ifndef CORE_LEVEL #define CORE_LEVEL 3 #endif #include "CORE.h" /* Define vertex indices. */ #define X 0 #define Y 1 #define Z 2 /* Define structures for vertices, edges and faces */ typedef struct tVertexStructure tsVertex; typedef tsVertex *tVertex; typedef struct tEdgeStructure tsEdge; typedef tsEdge *tEdge; typedef struct tFaceStructure tsFace; typedef tsFace *tFace; struct tVertexStructure { double v[3]; int vNum; tEdge duplicate; /* pointer to incident cone edge (or NULL) */ bool onhull; /* T iff point on hull. */ bool mark; /* T iff point already processed. */ tVertex next, prev; }; struct tEdgeStructure { int eNum; tFace adjface[2]; tVertex endpts[2]; tFace newface; /* pointer to incident cone face. */ bool delete_bit; /* T iff edge should be delete. */ tEdge next, prev; }; struct tFaceStructure { int fNum; tEdge edge[3]; tVertex vertex[3]; bool visible; /* T iff face visible from new point. */ tFace next, prev; }; /* Define flags */ #define ONHULL true #define REMOVED true #define VISIBLE true #define PROCESSED true #define SAFE 1000000 /* Range of safe coord values. */ /* Global variable definitions */ tVertex vertices = NULL; tEdge edges = NULL; tFace faces = NULL; bool debug = false; bool check = false; bool toSimpleFormat = false; // if true, output is easy to be read bool toLeda = false; // if true, output for Leda int ecount = 0; int fcount = 0; const int HOMOGENIZING_FACTOR = 1; /* Function declarations */ tVertex MakeNullVertex( void ); void ReadVertices( void ); void Print( void ); //void SubVec( int a[3], int b[3], int c[3]); void SubVec( double a[3], double b[3], double c[3]); void DoubleTriangle( void ); void ConstructHull( void ); bool AddOne( tVertex p ); int VolumeSign(tFace f, tVertex p); int Volumei( tFace f, tVertex p ); tFace MakeConeFace( tEdge e, tVertex p ); void MakeCcw( tFace f, tEdge e, tVertex p ); tEdge MakeNullEdge( void ); tFace MakeNullFace( void ); tFace MakeFace( tVertex v0, tVertex v1, tVertex v2, tFace f ); void CleanUp( void ); void CleanEdges( void ); void CleanFaces( void ); void CleanVertices( void ); bool Collinear( tVertex a, tVertex b, tVertex c ); void CheckEuler(int V, int E, int F ); void PrintPoint( tVertex p ); void Checks( void ); void Consistency( void ); void Convexity( void ); void PrintOut( tVertex v ); void PrintVertices( void ); void PrintEdges( void ); void PrintFaces( void ); void PrintVerticesToLeda( void ); void PrintVerticesToSimpleFormat( void ); void PrintEdgesToSimpleFormat( void ); void PrintFacesToSimpleFormat( void ); #include "macros.h" /*-------------------------------------------------------------------*/ int main( int argc, char *argv[] ) { if ( argc > 1 && argv[1][0] == '-' ) { if( argv[1][1] == 'd' ) { debug = true; check = true; std::cerr << "Debug and check mode\n"; } if( argv[1][1] == 'c' ) { check = true; std::cerr << "Check mode\n" ; } if( argv[1][1] == 'l' ) { toLeda = true; std::cerr << "Output for LEDA\n" ; } if( argv[1][1] == 's' ) { toSimpleFormat = true; std::cerr << "Output in simple format\n" ; } } else if ( argc > 1 && argv[1][0] != '-' ) { std::cout << "Usage: %s -d[ebug] c[heck]\n" << *argv ; std::cout << "x y z coords of vertices from stdin\n" ; exit(1); } ReadVertices(); DoubleTriangle(); ConstructHull(); if (toLeda) // output for Leda { PrintVerticesToLeda(); } else if(toSimpleFormat) // output in simple format { PrintVerticesToSimpleFormat(); PrintEdgesToSimpleFormat(); PrintFacesToSimpleFormat(); } else // output postscript file { Print(); } return 0; } /*--------------------------------------------------------------------- MakeNullVertex: Makes a vertex, nulls out fields. ---------------------------------------------------------------------*/ tVertex MakeNullVertex( void ) { tVertex v; // NEW( v, tsVertex ); v = new tsVertex ; v->vNum = -1; v->duplicate = NULL; v->onhull = !ONHULL; v->mark = !PROCESSED; ADD( vertices, v ); return v; } /*--------------------------------------------------------------------- ReadVertices: Reads in the vertices, and links them into a circular list with MakeNullVertex. There is no need for the # of vertices to be the first line: the function looks for EOF instead. Sets the global variable vertices via the ADD macro. ---------------------------------------------------------------------*/ void ReadVertices( void ) { tVertex v; //int x, y, z; double x, y, z; int vNum = 0; while( std::cin ) { std::cin >> x >> y >> z; v = MakeNullVertex(); v->v[X] = x; v->v[Y] = y; v->v[Z] = z; v->vNum = vNum++; if ( ( fabs(x) > SAFE ) || ( fabs(y) > SAFE ) || ( fabs(z) > SAFE ) ) { std::cout << "Coordinate of vertex below might be too large: run with -c flag\n" ; PrintPoint(v); } } } /*--------------------------------------------------------------------- Print: Prints out the vertices and the faces. Uses the vNum indices corresponding to the order in which the vertices were input. Output is in PostScript format. ---------------------------------------------------------------------*/ void Print( void ) { /* Pointers to vertices, edges, faces. */ tVertex v; tEdge e; tFace f; //int xmin, ymin, xmax, ymax; double xmin, ymin, xmax, ymax; //int a[3], b[3]; /* used to compute normal vector */ double a[3], b[3]; /* used to compute normal vector */ /* Counters for Euler's formula. */ int V = 0, E = 0 , F = 0; /* Note: lowercase==pointer, uppercase==counter. */ /*-- find X min & max --*/ v = vertices; xmin = xmax = v->v[X]; do { if( v->v[X] > xmax ) xmax = v->v[X]; else if( v->v[X] < xmin ) xmin = v->v[X]; v = v->next; } while ( v != vertices ); /*-- find Y min & max --*/ v = vertices; ymin = ymax = v->v[Y]; do { if( v->v[Y] > ymax ) ymax = v->v[Y]; else if( v->v[Y] < ymin ) ymin = v->v[Y]; v = v->next; } while ( v != vertices ); /* PostScript header */ std::cout << "%%!PS\n" ; std::cout << "%%%%BoundingBox: " << xmin << " " << ymin << " " << xmax << " " << ymax << std::endl; std::cout << ".00 .00 setlinewidth\n" ; double scale = 500.0 / ((ymax-ymin) >= (xmax - xmin) ? ymax - ymin: xmax - xmin); std::cout << -xmin*scale+72 << " " << -ymin*scale+120 << " translate\n" ; /* The +72 shifts the figure one inch from the lower left corner */ std::cout << scale << " " << scale << " scale" << std::endl; /* Vertices. */ v = vertices; do { if( v->mark ) V++; v = v->next; } while ( v != vertices ); std::cout << "\n%%%% Vertices:\tV = " << V << std::endl ; std::cout << "%%%% index:\tx\ty\tz\n" ; do { // v->vNum, v->v[X], v->v[Y], v->v[Z] ); std::cout << "%%%% " << v->vNum << ":\t" << v->v[X] << "\t" << v->v[Y] << "\t" << v->v[Z] << std::endl ; v = v->next; } while ( v != vertices ); /* Faces. */ /* visible faces are printed as PS output */ f = faces; do { ++F; f = f ->next; } while ( f != faces ); std::cout << "\n%%%% Faces:\tF = " << F << std::endl; std::cout << "%%%% Visible faces only: \n" ; do { /* Print face only if it is visible: if normal vector >= 0 */ SubVec( f->vertex[1]->v, f->vertex[0]->v, a ); SubVec( f->vertex[2]->v, f->vertex[1]->v, b ); if(( a[0] * b[1] - a[1] * b[0] ) >= 0 ) { std::cout << "%%%% vNums: " << f->vertex[0]->vNum << " " << f->vertex[1]->vNum << " " << f->vertex[2]->vNum << std::endl; std::cout << "newpath\n" ; std::cout << f->vertex[0]->v[X] << "\t" << f->vertex[0]->v[Y] << "\tmoveto\n" ; std::cout << f->vertex[1]->v[X] << "\t" << f->vertex[1]->v[Y] << "\tlineto\n" ; std::cout << f->vertex[2]->v[X] << "\t" << f->vertex[2]->v[Y] << "\tlineto\n" ; std::cout << "closepath stroke\n\n" ; } f = f->next; } while ( f != faces ); /* prints a list of all faces */ std::cout << "%%%% List of all faces: \n" ; std::cout << "%%%%\tv0\tv1\tv2\t(vertex indices)\n" ; do { std::cout << "%%%%\t" << f->vertex[0]->vNum << "\t" << f->vertex[1]->vNum << "\t" << f->vertex[2]->vNum << std::endl; f = f->next; } while ( f != faces ); /* Edges. */ e = edges; do { E++; e = e->next; } while ( e != edges ); std::cout << "\n%%%% Edges:\tE = " << E << std::endl; /* Edges not printed out (but easily added). */ std::cout << "\nshowpage\n\n" ; check = true; CheckEuler( V, E, F ); } /*--------------------------------------------------------------------- SubVec: Computes a - b and puts it into c. ---------------------------------------------------------------------*/ /* void SubVec( int a[3], int b[3], int c[3]) { int i; for( i=0; i < 2; i++ ) c[i] = a[i] - b[i]; } */ void SubVec( double a[3], double b[3], double c[3]) { int i; for( i=0; i < 2; i++ ) c[i] = a[i] - b[i]; } /*--------------------------------------------------------------------- DoubleTriangle builds the initial double triangle. It first finds 3 noncollinear points and makes two faces out of them, in opposite order. It then finds a fourth point that is not coplanar with that face. The vertices are stored in the face structure in counterclockwise order so that the volume between the face and the point is negative. Lastly, the 3 newfaces to the fourth point are constructed and the data structures are cleaned up. ---------------------------------------------------------------------*/ void DoubleTriangle( void ) { tVertex v0, v1, v2, v3; tFace f0, f1 = NULL; int vol; /* Find 3 noncollinear points. */ v0 = vertices; while ( Collinear( v0, v0->next, v0->next->next ) ) if ( ( v0 = v0->next ) == vertices ) { std::cout << "DoubleTriangle: All points are Collinear!\n" ; exit(0); } v1 = v0->next; v2 = v1->next; /* Mark the vertices as processed. */ v0->mark = PROCESSED; v1->mark = PROCESSED; v2->mark = PROCESSED; /* Create the two "twin" faces. */ f0 = MakeFace( v0, v1, v2, f1 ); f1 = MakeFace( v2, v1, v0, f0 ); f0->fNum = fcount++; f1->fNum = f0->fNum; /* Link adjacent face fields. */ f0->edge[0]->adjface[1] = f1; f0->edge[1]->adjface[1] = f1; f0->edge[2]->adjface[1] = f1; f1->edge[0]->adjface[1] = f0; f1->edge[1]->adjface[1] = f0; f1->edge[2]->adjface[1] = f0; /* Find a fourth, noncoplanar point to form tetrahedron. */ v3 = v2->next; vol = VolumeSign( f0, v3 ); // while ( !vol ) { // THIS IS A BUG!! Chee (July 2003) while (vol == 0) { if ( ( v3 = v3->next ) == v0 ) { std::cout << "DoubleTriangle: All points are coplanar!\n"; exit(0); } vol = VolumeSign( f0, v3 ); } /* Insure that v3 will be the first added. */ vertices = v3; if ( debug ) { std::cerr << "DoubleTriangle: finished. Head repositioned at v3.\n" ; PrintOut( vertices ); } } /*--------------------------------------------------------------------- ConstructHull adds the vertices to the hull one at a time. The hull vertices are those in the list marked as onhull. ---------------------------------------------------------------------*/ void ConstructHull( void ) { tVertex v, vnext; bool changed; /* T if addition changes hull; not used. */ v = vertices; do { vnext = v->next; if ( !v->mark ) { v->mark = PROCESSED; changed = AddOne( v ); CleanUp(); if ( check ) { std::cerr << "ConstructHull: After Add of " << v->vNum << " & Cleanup:\n" ; Checks(); } if ( debug ) PrintOut( v ); } v = vnext; } while ( v != vertices ); } /*--------------------------------------------------------------------- AddOne is passed a vertex. It first determines all faces visible from that point. If none are visible then the point is marked as not onhull. Next is a loop over edges. If both faces adjacent to an edge are visible, then the edge is marked for deletion. If just one of the adjacent faces is visible then a new face is constructed. ---------------------------------------------------------------------*/ bool AddOne( tVertex p ) { tFace f; tEdge e, temp; int vol; bool vis = false; if ( debug ) { std::cerr << "AddOne: starting to add v " << p->vNum << ".\n"; PrintOut( vertices ); } /* Mark faces visible from p. */ f = faces; do { vol = VolumeSign( f, p ); if (debug) std::cerr << "faddr: " << f << " paddr: " << p << " Vol = " << vol << std::endl ; if ( vol < 0 ) { f->visible = VISIBLE; vis = true; } f = f->next; } while ( f != faces ); /* If no faces are visible from p, then p is inside the hull. */ if ( !vis ) { p->onhull = !ONHULL; return false; } /* Mark edges in interior of visible region for deletion. Erect a newface based on each border edge. */ e = edges; do { temp = e->next; if ( e->adjface[0]->visible && e->adjface[1]->visible ) { /* e interior: mark for deletion. */ e->delete_bit = REMOVED; } else if ( e->adjface[0]->visible || e->adjface[1]->visible ) { e->eNum = ecount++; /* e border: make a new face. */ e->newface = MakeConeFace( e, p ); } e = temp; } while ( e != edges ); return true; } /*--------------------------------------------------------------------- VolumeSign returns the sign of the volume of the tetrahedron determined by f and p. VolumeSign is +1 iff p is on the negative side of f, where the positive side is determined by the rh-rule. So the volume is positive if the ccw normal to f points outside the tetrahedron. The final fewer-multiplications form is due to Bob Williamson. ---------------------------------------------------------------------*/ int VolumeSign( tFace f, tVertex p ) { double vol; int voli = 0; double ax, ay, az, bx, by, bz, cx, cy, cz; ax = f->vertex[0]->v[X] - p->v[X]; ay = f->vertex[0]->v[Y] - p->v[Y]; az = f->vertex[0]->v[Z] - p->v[Z]; bx = f->vertex[1]->v[X] - p->v[X]; by = f->vertex[1]->v[Y] - p->v[Y]; bz = f->vertex[1]->v[Z] - p->v[Z]; cx = f->vertex[2]->v[X] - p->v[X]; cy = f->vertex[2]->v[Y] - p->v[Y]; cz = f->vertex[2]->v[Z] - p->v[Z]; vol = ax * (by*cz - bz*cy) + ay * (bz*cx - bx*cz) + az * (bx*cy - by*cx); if ( debug ) std::cerr << "Face=" << f << "; Vertex=" << p->vNum << ": vol(int) = " << voli << ", vol(double) = " << vol << std::endl; /* The volume should be an integer. */ if ( vol > 0.5 ) return 1; else if ( vol < -0.5 ) return -1; else return 0; } /*---------------------------------------------------------------------*/ int Volumei( tFace f, tVertex p ) { double vol; int voli = 0; double ax, ay, az, bx, by, bz, cx, cy, cz; ax = f->vertex[0]->v[X] - p->v[X]; ay = f->vertex[0]->v[Y] - p->v[Y]; az = f->vertex[0]->v[Z] - p->v[Z]; bx = f->vertex[1]->v[X] - p->v[X]; by = f->vertex[1]->v[Y] - p->v[Y]; bz = f->vertex[1]->v[Z] - p->v[Z]; cx = f->vertex[2]->v[X] - p->v[X]; cy = f->vertex[2]->v[Y] - p->v[Y]; cz = f->vertex[2]->v[Z] - p->v[Z]; vol = (ax * (by*cz - bz*cy) + ay * (bz*cx - bx*cz) + az * (bx*cy - by*cx)); if ( debug ) std::cerr << "Face=" << f << "; Vertex=" << p->vNum << ": vol(int) = " << voli << ", vol(double) = " << vol << std::endl ; /* The volume should be an integer. */ if ( vol > 0.5 ) return 1; else if ( vol < -0.5 ) return -1; else return 0; } /*-------------------------------------------------------------------*/ void PrintPoint( tVertex p ) { int i; for ( i = 0; i < 3; i++ ) std::cout << "\t" << p->v[i] ; putchar('\n'); } /*--------------------------------------------------------------------- MakeConeFace makes a new face and two new edges between the edge and the point that are passed to it. It returns a pointer to the new face. ---------------------------------------------------------------------*/ tFace MakeConeFace( tEdge e, tVertex p ) { tEdge new_edge[2]; tFace new_face; int i, j; /* Make two new edges (if don't already exist). */ for ( i=0; i < 2; ++i ) /* If the edge exists, copy it into new_edge. */ if ( !( new_edge[i] = e->endpts[i]->duplicate) ) { /* Otherwise (duplicate is NULL), MakeNullEdge. */ new_edge[i] = MakeNullEdge(); new_edge[i]->eNum = ecount++; new_edge[i]->endpts[0] = e->endpts[i]; new_edge[i]->endpts[1] = p; e->endpts[i]->duplicate = new_edge[i]; } /* Make the new face. */ new_face = MakeNullFace(); new_face->fNum = fcount++; new_face->edge[0] = e; new_face->edge[1] = new_edge[0]; new_face->edge[2] = new_edge[1]; MakeCcw( new_face, e, p ); /* Set the adjacent face pointers. */ for ( i=0; i < 2; ++i ) for ( j=0; j < 2; ++j ) /* Only one NULL link should be set to new_face. */ if ( !new_edge[i]->adjface[j] ) { new_edge[i]->adjface[j] = new_face; break; } return new_face; } /*--------------------------------------------------------------------- MakeCcw puts the vertices in the face structure in counterclock wise order. We want to store the vertices in the same order as in the visible face. The third vertex is always p. ---------------------------------------------------------------------*/ void MakeCcw( tFace f, tEdge e, tVertex p ) { tFace fv; /* The visible face adjacent to e */ int i; /* Index of e->endpoint[0] in fv. */ tEdge s; /* Temporary, for swapping */ if ( e->adjface[0]->visible ) fv = e->adjface[0]; else fv = e->adjface[1]; /* Set vertex[0] & [1] of f to have the same orientation as do the corresponding vertices of fv. */ for ( i=0; fv->vertex[i] != e->endpts[0]; ++i ) ; /* Orient f the same as fv. */ if ( fv->vertex[ (i+1) % 3 ] != e->endpts[1] ) { f->vertex[0] = e->endpts[1]; f->vertex[1] = e->endpts[0]; } else { f->vertex[0] = e->endpts[0]; f->vertex[1] = e->endpts[1]; SWAP( s, f->edge[1], f->edge[2] ); } /* This swap is tricky. e is edge[0]. edge[1] is based on endpt[0], edge[2] on endpt[1]. So if e is oriented "forwards," we need to move edge[1] to follow [0], because it precedes. */ f->vertex[2] = p; } /*--------------------------------------------------------------------- MakeNullEdge creates a new cell and initializes all pointers to NULL and sets all flags to off. It returns a pointer to the empty cell. ---------------------------------------------------------------------*/ tEdge MakeNullEdge( void ) { tEdge e; // NEW( e, tsEdge ); e = new tsEdge; e->eNum = -1; e->adjface[0] = e->adjface[1] = e->newface = NULL; e->endpts[0] = e->endpts[1] = NULL; e->delete_bit = !REMOVED; ADD( edges, e ); return e; } /*-------------------------------------------------------------------- MakeNullFace creates a new face structure and initializes all of its flags to NULL and sets all the flags to off. It returns a pointer to the empty cell. ---------------------------------------------------------------------*/ tFace MakeNullFace( void ) { tFace f; int i; // NEW( f, tsFace); f = new tsFace; f->fNum = -1; for ( i=0; i < 3; ++i ) { f->edge[i] = NULL; f->vertex[i] = NULL; } f->visible = !VISIBLE; ADD( faces, f ); return f; } /*--------------------------------------------------------------------- MakeFace creates a new face structure from three vertices (in ccw order). It returns a pointer to the face. ---------------------------------------------------------------------*/ tFace MakeFace( tVertex v0, tVertex v1, tVertex v2, tFace fold ) { tFace f; tEdge e0, e1, e2; /* Create edges of the initial triangle. */ if( !fold ) { e0 = MakeNullEdge(); e1 = MakeNullEdge(); e2 = MakeNullEdge(); } else { /* Copy from fold, in reverse order. */ e0 = fold->edge[2]; e1 = fold->edge[1]; e2 = fold->edge[0]; } e0->endpts[0] = v0; e0->endpts[1] = v1; e1->endpts[0] = v1; e1->endpts[1] = v2; e2->endpts[0] = v2; e2->endpts[1] = v0; /* Create face for triangle. */ f = MakeNullFace(); f->edge[0] = e0; f->edge[1] = e1; f->edge[2] = e2; f->vertex[0] = v0; f->vertex[1] = v1; f->vertex[2] = v2; /* Link edges to face. */ e0->adjface[0] = e1->adjface[0] = e2->adjface[0] = f; return f; } /*--------------------------------------------------------------------- CleanUp goes through each data structure list and clears all flags and NULLs out some pointers. The order of processing (edges, faces, vertices) is important. ---------------------------------------------------------------------*/ void CleanUp( void ) { CleanEdges(); CleanFaces(); CleanVertices(); } /*--------------------------------------------------------------------- CleanEdges runs through the edge list and cleans up the structure. If there is a newface then it will put that face in place of the visible face and NULL out newface. It also deletes so marked edges. ---------------------------------------------------------------------*/ void CleanEdges( void ) { tEdge e; /* Primary index into edge list. */ tEdge t; /* Temporary edge pointer. */ /* Integrate the newface's into the data structure. */ /* Check every edge. */ e = edges; do { if ( e->newface ) { if ( e->adjface[0]->visible ) e->adjface[0] = e->newface; else e->adjface[1] = e->newface; e->newface = NULL; } e = e->next; } while ( e != edges ); /* Delete any edges marked for deletion. */ while ( edges && edges->delete_bit ) { e = edges; DELETE( edges, e ); } e = edges->next; do { if ( e->delete_bit ) { t = e; e = e->next; DELETE( edges, t ); } else e = e->next; } while ( e != edges ); } /*--------------------------------------------------------------------- CleanFaces runs through the face list and deletes any face marked visible. ---------------------------------------------------------------------*/ void CleanFaces( void ) { tFace f; /* Primary pointer into face list. */ tFace t; /* Temporary pointer, for deleting. */ while ( faces && faces->visible ) { f = faces; DELETE( faces, f ); } f = faces->next; do { if ( f->visible ) { t = f; f = f->next; DELETE( faces, t ); } else f = f->next; } while ( f != faces ); } /*--------------------------------------------------------------------- CleanVertices runs through the vertex list and deletes the vertices that are marked as processed but are not incident to any undeleted edges. ---------------------------------------------------------------------*/ void CleanVertices( void ) { tEdge e; tVertex v, t; /* Mark all vertices incident to some undeleted edge as on the hull. */ e = edges; do { e->endpts[0]->onhull = e->endpts[1]->onhull = ONHULL; e = e->next; } while (e != edges); /* Delete all vertices that have been processed but are not on the hull. */ while ( vertices && vertices->mark && !vertices->onhull ) { v = vertices; DELETE( vertices, v ); } v = vertices->next; do { if ( v->mark && !v->onhull ) { t = v; v = v->next; DELETE( vertices, t ) } else v = v->next; } while ( v != vertices ); /* Reset flags. */ v = vertices; do { v->duplicate = NULL; v->onhull = !ONHULL; v = v->next; } while ( v != vertices ); } /*--------------------------------------------------------------------- Collinear checks to see if the three points given are collinear, by checking to see if each element of the cross product is zero. ---------------------------------------------------------------------*/ bool Collinear( tVertex a, tVertex b, tVertex c ) { return ( c->v[Z] - a->v[Z] ) * ( b->v[Y] - a->v[Y] ) - ( b->v[Z] - a->v[Z] ) * ( c->v[Y] - a->v[Y] ) == 0 && ( b->v[Z] - a->v[Z] ) * ( c->v[X] - a->v[X] ) - ( b->v[X] - a->v[X] ) * ( c->v[Z] - a->v[Z] ) == 0 && ( b->v[X] - a->v[X] ) * ( c->v[Y] - a->v[Y] ) - ( b->v[Y] - a->v[Y] ) * ( c->v[X] - a->v[X] ) == 0 ; } /*--------------------------------------------------------------------- Consistency runs through the edge list and checks that all adjacent faces have their endpoints in opposite order. This verifies that the vertices are in counterclockwise order. ---------------------------------------------------------------------*/ void Consistency( void ) { register tEdge e; register int i, j; e = edges; do { /* find index of endpoint[0] in adjacent face[0] */ for ( i = 0; e->adjface[0]->vertex[i] != e->endpts[0]; ++i ) ; /* find index of endpoint[0] in adjacent face[1] */ for ( j = 0; e->adjface[1]->vertex[j] != e->endpts[0]; ++j ) ; /* check if the endpoints occur in opposite order */ if ( !( e->adjface[0]->vertex[ (i+1) % 3 ] == e->adjface[1]->vertex[ (j+2) % 3 ] || e->adjface[0]->vertex[ (i+2) % 3 ] == e->adjface[1]->vertex[ (j+1) % 3 ] ) ) break; e = e->next; } while ( e != edges ); if ( e != edges ) std::cerr << "Checks: edges are NOT consistent.\n" ; else std::cerr << "Checks: edges consistent.\n" ; } /*--------------------------------------------------------------------- Convexity checks that the volume between every face and every point is negative. This shows that each point is inside every face and therefore the hull is convex. ---------------------------------------------------------------------*/ void Convexity( void ) { register tFace f; register tVertex v; int vol; f = faces; do { v = vertices; do { if ( v->mark ) { vol = VolumeSign( f, v ); if ( vol < 0 ) break; } v = v->next; } while ( v != vertices ); f = f->next; } while ( f != faces ); if ( f != faces ) std::cerr << "Checks: NOT convex.\n" ; else if ( check ) std::cerr << "Checks: convex.\n" ; } /*--------------------------------------------------------------------- CheckEuler checks Euler's relation, as well as its implications when all faces are known to be triangles. Only prints positive information when debug is true, but always prints negative information. ---------------------------------------------------------------------*/ void CheckEuler( int V, int E, int F ) { if ( check ) std::cerr << "Checks: V, E, F = " << V << " " << E << " " << F << ":\t"; if ( (V - E + F) != 2 ) std::cerr << "Checks: V-E+F != 2\n" ; else if ( check ) std::cerr << "V-E+F = 2\t" ; if ( F != (2 * V - 4) ) std::cerr << "Checks: F=" << F << " != 2V-4=" << 2*V-4 << "; V=" << V << std::endl; else if ( check ) std::cerr << "F = 2V-4\t" ; if ( (2 * E) != (3 * F) ) std::cerr << "Checks: 2E=" << 2*E << " != 3F=" << 3*F << "; E=" << E << ", F=" << F << std::endl; else if ( check ) std::cerr << "2E = 3F\n" ; } /*-------------------------------------------------------------------*/ void Checks( void ) { tVertex v; tEdge e; tFace f; int V = 0, E = 0 , F = 0; Consistency(); Convexity(); if ( (v = vertices) != NULL ) do { if (v->mark) V++; v = v->next; } while ( v != vertices ); if ( (e = edges) != NULL ) do { E++; e = e->next; } while ( e != edges ); if ( (f = faces) != NULL ) do { F++; f = f ->next; } while ( f != faces ); CheckEuler( V, E, F ); } /*=================================================================== These functions are used whenever the debug flag is set. They print out the entire contents of each data structure. Printing is to standard error. To grab the output in a file in the csh, use this: chull < i.file >&! o.file =====================================================================*/ /*-------------------------------------------------------------------*/ void PrintOut( tVertex v ) { std::cerr << "\nHead vertex " << v->vNum << " = " << v << " :\n"; PrintVertices(); PrintEdges(); PrintFaces(); } /*-------------------------------------------------------------------*/ void PrintVertices( void ) { tVertex temp; temp = vertices; std::cerr << "Vertex List\n"; if (vertices) do { std::cerr << " addr " << vertices << "\t"; std::cerr << " vNum " << vertices->vNum ; std::cerr << " (" << vertices->v[X] << "," << vertices->v[Y] << "," << vertices->v[Z] << ")"; std::cerr << " active:" << vertices->onhull ; std::cerr << " dup:" << vertices->duplicate ; std::cerr << " mark:" << vertices->mark << std::endl; vertices = vertices->next; } while ( vertices != temp ); } /*-------------------------------------------------------------------*/ void PrintEdges( void ) { tEdge temp; int i; temp = edges; std::cerr << "Edge List\n" ; if (edges) do { std::cerr << " addr: " << edges << "\t" ; std::cerr << "adj: " ; for (i=0; i<2; ++i) std::cerr << edges->adjface[i] ; std::cerr << " endpts:" ; for (i=0; i<2; ++i) std::cerr << edges->endpts[i]->vNum ; std::cerr << " del:" << edges->delete_bit << std::endl; edges = edges->next; } while (edges != temp ); } /*-------------------------------------------------------------------*/ void PrintFaces( void ) { int i; tFace temp; temp = faces; std::cerr << "Face List\n"; if (faces) do { std::cerr << " addr: " << faces << "\t"; std::cerr << " edges:" ; for( i=0; i<3; ++i ) std::cerr << faces->edge[i] ; std::cerr << " vert:" ; for ( i=0; i<3; ++i) std::cerr << faces->vertex[i]->vNum ; std::cerr << " vis: " << faces->visible << std::endl; faces= faces->next; } while ( faces != temp ); } /*-------------------------------------------------------------------*/ void PrintToSimpleFormat ( void ) { PrintVerticesToSimpleFormat(); PrintEdgesToSimpleFormat(); PrintEdgesToSimpleFormat(); } /*-------------------------------------------------------------------*/ void PrintVerticesToSimpleFormat( void ) { tVertex temp; temp = vertices; std::cout << "Vertex List\n"; if (vertices) do { std::cout << "v" << vertices->vNum ; std::cout << " (" << vertices->v[X] << "," << vertices->v[Y] << "," << vertices->v[Z] << ")" << std::endl; vertices = vertices->next; } while ( vertices != temp ); } /*-------------------------------------------------------------------*/ void PrintEdgesToSimpleFormat ( void ) { tEdge temp; int i; temp = edges; std::cout << "\nEdge List\n" ; if (edges) do { std::cout << "e" << edges->eNum << " ("; for (i=0; i<2; ++i) std::cout << "v" << edges->endpts[i]->vNum << ","; std::cout << "f" << edges->adjface[0]->fNum << ","; std::cout << "f" << edges->adjface[1]->fNum << ")" << std::endl; edges = edges->next; } while (edges != temp ); } /*-------------------------------------------------------------------*/ void PrintFacesToSimpleFormat( void ) { int i; tFace temp; temp = faces; std::cout << "\nFace List\n"; if (faces) do { std::cout << "f" << faces->fNum << " ("; for ( i=0; i<2; ++i) std::cout << "v" << faces->vertex[i]->vNum << ","; std::cout << "v" << faces->vertex[2]->vNum << ")" << std::endl; faces= faces->next; } while ( faces != temp ); } /*-------------------------------------------------------------------*/ void PrintVerticesToLeda( void ) { tVertex temp; temp = vertices; if (vertices) do { std::cout << "(" << vertices->v[X] << "," << vertices->v[Y] << "," << vertices->v[Z] << "," << HOMOGENIZING_FACTOR << ") \n"; vertices = vertices->next; } while ( vertices != temp ); } core++-1.7/progs/chull/chull4.cpp0100644000175000001440000010506307662552363016154 0ustar joachimusers/***************************************************************** File: chull4.cc Purpose: This is a variant of chull.cc (read the leading comments in that file). The present version aims to adapt our input and outpoint point formats to conform to LEDA's convex hull examples (we want to take advantage of its window displays). Therefore, the input points (1) have integer coordinates (2) are in homogeneous coordinates, in the form (x, y, z, w) where w is the homogenizing coordinate (often w=1). Usage: % chull4 [-l | -s] < input_file >! output_file If the optional switch (-l or -s) are not given, then chull output a postscript file to draw a projection of the convex hull. The switches modifies this behavior: -l This forces chull to output the convex hull in a form suitable for display using LEDA's window sytem -s This forcess chull to output a list of vertices, edges and faces in the convex hull. Author: Hui Jin (hj228@cs.nyu.edu), August 1999. ****************************************************************** O'Rourke's Original Comments: ****************************************************************** This code is described in "Computational Geometry in C" (Second Edition), Chapter 4. It is not written to be comprehensible without the explanation in that book. Input: 3n integer coordinates for the points. Output: the 3D convex hull, in postscript with embedded comments showing the vertices and faces. Compile: gcc -o chull chull.c Written by Joseph O'Rourke, with contributions by Kristy Anderson, John Kutcher, Catherine Schevon, Susan Weller. Last modified: March 1998 Questions to orourke@cs.smith.edu. -------------------------------------------------------------------- This code is Copyright 1998 by Joseph O'Rourke. It may be freely redistributed in its entirety provided that this copyright notice is not removed. -------------------------------------------------------------------- */ #ifndef CORE_LEVEL #define CORE_LEVEL 3 #endif #include "CORE.h" /*Define Boolean type */ // typedef eNum { FALSE, TRUE } bool; /* Define vertex indices. */ #define X 0 #define Y 1 #define Z 2 /* Define structures for vertices, edges and faces */ typedef struct tVertexStructure tsVertex; typedef tsVertex *tVertex; typedef struct tEdgeStructure tsEdge; typedef tsEdge *tEdge; typedef struct tFaceStructure tsFace; typedef tsFace *tFace; struct tVertexStructure { int v[3]; int vNum; tEdge duplicate; /* pointer to incident cone edge (or NULL) */ bool onhull; /* T iff point on hull. */ bool mark; /* T iff point already processed. */ tVertex next, prev; }; struct tEdgeStructure { int eNum; tFace adjface[2]; tVertex endpts[2]; tFace newface; /* pointer to incident cone face. */ bool delete_bit; /* T iff edge should be delete. */ tEdge next, prev; }; struct tFaceStructure { int fNum; tEdge edge[3]; tVertex vertex[3]; bool visible; /* T iff face visible from new point. */ tFace next, prev; }; /* Define flags */ #define ONHULL true #define REMOVED true #define VISIBLE true #define PROCESSED true #define SAFE 1000000 /* Range of safe coord values. */ /* Global variable definitions */ tVertex vertices = NULL; tEdge edges = NULL; tFace faces = NULL; bool debug = false; bool check = false; bool toSimpleFormat = false; // if true, output is easy to be read bool toLeda = false; // if true, output for Leda int ecount = 0; int fcount = 0; int RATE = 1; /* Function declarations */ tVertex MakeNullVertex( void ); void ReadVertices( void ); void Print( void ); //void SubVec( int a[3], int b[3], int c[3]); void SubVec( int a[3], int b[3], int c[3]); void DoubleTriangle( void ); void ConstructHull( void ); bool AddOne( tVertex p ); int VolumeSign(tFace f, tVertex p); int Volumei( tFace f, tVertex p ); tFace MakeConeFace( tEdge e, tVertex p ); void MakeCcw( tFace f, tEdge e, tVertex p ); tEdge MakeNullEdge( void ); tFace MakeNullFace( void ); tFace MakeFace( tVertex v0, tVertex v1, tVertex v2, tFace f ); void CleanUp( void ); void CleanEdges( void ); void CleanFaces( void ); void CleanVertices( void ); bool Collinear( tVertex a, tVertex b, tVertex c ); void CheckEuler(int V, int E, int F ); void PrintPoint( tVertex p ); void Checks( void ); void Consistency( void ); void Convexity( void ); void PrintOut( tVertex v ); void PrintVertices( void ); void PrintEdges( void ); void PrintFaces( void ); void PrintVerticesToLeda( void ); void PrintVerticesToSimpleFormat( void ); void PrintEdgesToSimpleFormat( void ); void PrintFacesToSimpleFormat( void ); #include "macros.h" /*-------------------------------------------------------------------*/ int main( int argc, char *argv[] ) { if ( argc > 1 && argv[1][0] == '-' ) { if( argv[1][1] == 'd' ) { debug = true; check = true; std::cerr << "Debug and check mode\n"; } if( argv[1][1] == 'c' ) { check = true; std::cerr << "Check mode\n" ; } if( argv[1][1] == 'l' ) { toLeda = true; std::cerr << "Output for LEDA\n" ; } if( argv[1][1] == 's' ) { toSimpleFormat = true; std::cerr << "Output in simple format\n" ; } } else if ( argc > 1 && argv[1][0] != '-' ) { std::cout << "Usage: %s -d[ebug] c[heck]\n" << *argv ; std::cout << "x y z coords of vertices from stdin\n" ; exit(1); } ReadVertices(); DoubleTriangle(); ConstructHull(); if (toLeda) // output for Leda { PrintVerticesToLeda(); } else if(toSimpleFormat) // output in simple format { PrintVerticesToSimpleFormat(); PrintEdgesToSimpleFormat(); PrintFacesToSimpleFormat(); } else // output postscript file { Print(); } return 0; } /*--------------------------------------------------------------------- MakeNullVertex: Makes a vertex, nulls out fields. ---------------------------------------------------------------------*/ tVertex MakeNullVertex( void ) { tVertex v; // NEW( v, tsVertex ); v = new tsVertex ; v->vNum = -1; v->duplicate = NULL; v->onhull = !ONHULL; v->mark = !PROCESSED; ADD( vertices, v ); return v; } /*--------------------------------------------------------------------- ReadVertices: Reads in the vertices, and links them into a circular list with MakeNullVertex. There is no need for the # of vertices to be the first line: the function looks for EOF instead. Sets the global variable vertices via the ADD macro. ---------------------------------------------------------------------*/ void ReadVertices( void ) { tVertex v; int x, y, z; int vNum = 0; //std::cin >> Max_Num; //for (int i = 0; i < Max_Num; i++) { while (std::cin) { char ch1, ch2, ch3, ch4, ch5; int rate; std::cin >> ch1 >> x >> ch2 >> y >> ch3 >> z >> ch4 >> rate >> ch5; v = MakeNullVertex(); v->v[X] = x; v->v[Y] = y; v->v[Z] = z; v->vNum = vNum++; if ( ( core_abs(x) > SAFE ) || ( core_abs(y) > SAFE ) || ( core_abs(z) > SAFE ) ) { std::cout << "Coordinate of vertex below might be too large:\ run with -c flag\n" ; PrintPoint(v); } } } /*--------------------------------------------------------------------- Print: Prints out the vertices and the faces. Uses the vNum indices corresponding to the order in which the vertices were input. Output is in PostScript format. ---------------------------------------------------------------------*/ void Print( void ) { /* Pointers to vertices, edges, faces. */ tVertex v; tEdge e; tFace f; //int xmin, ymin, xmax, ymax; int xmin, ymin, xmax, ymax; //int a[3], b[3]; /* used to compute normal vector */ int a[3], b[3]; /* used to compute normal vector */ /* Counters for Euler's formula. */ int V = 0, E = 0 , F = 0; /* Note: lowercase==pointer, uppercase==counter. */ /*-- find X min & max --*/ v = vertices; xmin = xmax = v->v[X]; do { if( v->v[X] > xmax ) xmax = v->v[X]; else if( v->v[X] < xmin ) xmin = v->v[X]; v = v->next; } while ( v != vertices ); /*-- find Y min & max --*/ v = vertices; ymin = ymax = v->v[Y]; do { if( v->v[Y] > ymax ) ymax = v->v[Y]; else if( v->v[Y] < ymin ) ymin = v->v[Y]; v = v->next; } while ( v != vertices ); /* PostScript header */ std::cout << "%%!PS\n" ; std::cout << "%%%%BoundingBox: " << xmin << " " << ymin << " " << xmax << " " << ymax << std::endl; std::cout << ".00 .00 setlinewidth\n" ; double scale = 500.0 / ((ymax-ymin) >= (xmax - xmin) ? ymax - ymin: xmax - xmin); std::cout << -xmin*scale+72 << " " << -ymin*scale+120 << " translate\n" ; /* The +72 shifts the figure one inch from the lower left corner */ std::cout << scale << " " << scale << " scale" << std::endl; /* Vertices. */ v = vertices; do { if( v->mark ) V++; v = v->next; } while ( v != vertices ); std::cout << "\n%%%% Vertices:\tV = " << V << std::endl ; std::cout << "%%%% index:\tx\ty\tz\n" ; do { // v->vNum, v->v[X], v->v[Y], v->v[Z] ); std::cout << "%%%% " << v->vNum << ":\t" << v->v[X] << "\t" << v->v[Y] << "\t" << v->v[Z] << std::endl ; v = v->next; } while ( v != vertices ); /* Faces. */ /* visible faces are printed as PS output */ f = faces; do { ++F; f = f ->next; } while ( f != faces ); std::cout << "\n%%%% Faces:\tF = " << F << std::endl; std::cout << "%%%% Visible faces only: \n" ; do { /* Print face only if it is visible: if normal vector >= 0 */ SubVec( f->vertex[1]->v, f->vertex[0]->v, a ); SubVec( f->vertex[2]->v, f->vertex[1]->v, b ); if(( a[0] * b[1] - a[1] * b[0] ) >= 0 ) { std::cout << "%%%% vNums: " << f->vertex[0]->vNum << " " << f->vertex[1]->vNum << " " << f->vertex[2]->vNum << std::endl; std::cout << "newpath\n" ; std::cout << f->vertex[0]->v[X] << "\t" << f->vertex[0]->v[Y] << "\tmoveto\n" ; std::cout << f->vertex[1]->v[X] << "\t" << f->vertex[1]->v[Y] << "\tlineto\n" ; std::cout << f->vertex[2]->v[X] << "\t" << f->vertex[2]->v[Y] << "\tlineto\n" ; std::cout << "closepath stroke\n\n" ; } f = f->next; } while ( f != faces ); /* prints a list of all faces */ std::cout << "%%%% List of all faces: \n" ; std::cout << "%%%%\tv0\tv1\tv2\t(vertex indices)\n" ; do { std::cout << "%%%%\t" << f->vertex[0]->vNum << "\t" << f->vertex[1]->vNum << "\t" << f->vertex[2]->vNum << std::endl; f = f->next; } while ( f != faces ); /* Edges. */ e = edges; do { E++; e = e->next; } while ( e != edges ); std::cout << "\n%%%% Edges:\tE = " << E << std::endl; /* Edges not printed out (but easily added). */ std::cout << "\nshowpage\n\n" ; check = true; CheckEuler( V, E, F ); } /*--------------------------------------------------------------------- SubVec: Computes a - b and puts it into c. ---------------------------------------------------------------------*/ /* void SubVec( int a[3], int b[3], int c[3]) { int i; for( i=0; i < 2; i++ ) c[i] = a[i] - b[i]; } */ void SubVec( int a[3], int b[3], int c[3]) { int i; for( i=0; i < 2; i++ ) c[i] = a[i] - b[i]; } /*--------------------------------------------------------------------- DoubleTriangle builds the initial double triangle. It first finds 3 noncollinear points and makes two faces out of them, in opposite order. It then finds a fourth point that is not coplanar with that face. The vertices are stored in the face structure in counterclockwise order so that the volume between the face and the point is negative. Lastly, the 3 newfaces to the fourth point are constructed and the data structures are cleaned up. ---------------------------------------------------------------------*/ void DoubleTriangle( void ) { tVertex v0, v1, v2, v3; tFace f0, f1 = NULL; int vol; /* Find 3 noncollinear points. */ v0 = vertices; while ( Collinear( v0, v0->next, v0->next->next ) ) if ( ( v0 = v0->next ) == vertices ) { std::cout << "DoubleTriangle: All points are Collinear!\n" ; exit(0); } v1 = v0->next; v2 = v1->next; /* Mark the vertices as processed. */ v0->mark = PROCESSED; v1->mark = PROCESSED; v2->mark = PROCESSED; /* Create the two "twin" faces. */ f0 = MakeFace( v0, v1, v2, f1 ); f1 = MakeFace( v2, v1, v0, f0 ); f0->fNum = fcount++; f1->fNum = f0->fNum; /* Link adjacent face fields. */ f0->edge[0]->adjface[1] = f1; f0->edge[1]->adjface[1] = f1; f0->edge[2]->adjface[1] = f1; f1->edge[0]->adjface[1] = f0; f1->edge[1]->adjface[1] = f0; f1->edge[2]->adjface[1] = f0; /* Find a fourth, noncoplanar point to form tetrahedron. */ v3 = v2->next; vol = VolumeSign( f0, v3 ); while ( !vol ) { if ( ( v3 = v3->next ) == v0 ) { std::cout << "DoubleTriangle: All points are coplanar!\n"; exit(0); } vol = VolumeSign( f0, v3 ); } /* Insure that v3 will be the first added. */ vertices = v3; if ( debug ) { std::cerr << "DoubleTriangle: finished. Head repositioned at v3.\n" ; PrintOut( vertices ); } } /*--------------------------------------------------------------------- ConstructHull adds the vertices to the hull one at a time. The hull vertices are those in the list marked as onhull. ---------------------------------------------------------------------*/ void ConstructHull( void ) { tVertex v, vnext; bool changed; /* T if addition changes hull; not used. */ v = vertices; do { vnext = v->next; if ( !v->mark ) { v->mark = PROCESSED; changed = AddOne( v ); CleanUp(); if ( check ) { std::cerr << "ConstructHull: After Add of " << v->vNum << " & Cleanup:\n" ; Checks(); } if ( debug ) PrintOut( v ); } v = vnext; } while ( v != vertices ); } /*--------------------------------------------------------------------- AddOne is passed a vertex. It first determines all faces visible from that point. If none are visible then the point is marked as not onhull. Next is a loop over edges. If both faces adjacent to an edge are visible, then the edge is marked for deletion. If just one of the adjacent faces is visible then a new face is constructed. ---------------------------------------------------------------------*/ bool AddOne( tVertex p ) { tFace f; tEdge e, temp; int vol; bool vis = false; if ( debug ) { std::cerr << "AddOne: starting to add v " << p->vNum << ".\n"; PrintOut( vertices ); } /* Mark faces visible from p. */ f = faces; do { vol = VolumeSign( f, p ); if (debug) std::cerr << "faddr: " << f << " paddr: " << p << " Vol = " << vol << std::endl ; if ( vol < 0 ) { f->visible = VISIBLE; vis = true; } f = f->next; } while ( f != faces ); /* If no faces are visible from p, then p is inside the hull. */ if ( !vis ) { p->onhull = !ONHULL; return false; } /* Mark edges in interior of visible region for deletion. Erect a newface based on each border edge. */ e = edges; do { temp = e->next; if ( e->adjface[0]->visible && e->adjface[1]->visible ) { /* e interior: mark for deletion. */ e->delete_bit = REMOVED; } else if ( e->adjface[0]->visible || e->adjface[1]->visible ) { e->eNum = ecount++; /* e border: make a new face. */ e->newface = MakeConeFace( e, p ); } e = temp; } while ( e != edges ); return true; } /*--------------------------------------------------------------------- VolumeSign returns the sign of the volume of the tetrahedron determined by f and p. VolumeSign is +1 iff p is on the negative side of f, where the positive side is determined by the rh-rule. So the volume is positive if the ccw normal to f points outside the tetrahedron. The final fewer-multiplications form is due to Bob Williamson. ---------------------------------------------------------------------*/ int VolumeSign( tFace f, tVertex p ) { double vol; int voli = 0; double ax, ay, az, bx, by, bz, cx, cy, cz; ax = f->vertex[0]->v[X] - p->v[X]; ay = f->vertex[0]->v[Y] - p->v[Y]; az = f->vertex[0]->v[Z] - p->v[Z]; bx = f->vertex[1]->v[X] - p->v[X]; by = f->vertex[1]->v[Y] - p->v[Y]; bz = f->vertex[1]->v[Z] - p->v[Z]; cx = f->vertex[2]->v[X] - p->v[X]; cy = f->vertex[2]->v[Y] - p->v[Y]; cz = f->vertex[2]->v[Z] - p->v[Z]; vol = ax * (by*cz - bz*cy) + ay * (bz*cx - bx*cz) + az * (bx*cy - by*cx); if ( debug ) std::cerr << "Face=" << f << "; Vertex=" << p->vNum << ": vol(int) = " << voli << ", vol(double) = " << vol << std::endl; /* The volume should be an integer. */ if ( vol > 0.5 ) return 1; else if ( vol < -0.5 ) return -1; else return 0; } /*---------------------------------------------------------------------*/ int Volumei( tFace f, tVertex p ) { double vol; int voli = 0; double ax, ay, az, bx, by, bz, cx, cy, cz; ax = f->vertex[0]->v[X] - p->v[X]; ay = f->vertex[0]->v[Y] - p->v[Y]; az = f->vertex[0]->v[Z] - p->v[Z]; bx = f->vertex[1]->v[X] - p->v[X]; by = f->vertex[1]->v[Y] - p->v[Y]; bz = f->vertex[1]->v[Z] - p->v[Z]; cx = f->vertex[2]->v[X] - p->v[X]; cy = f->vertex[2]->v[Y] - p->v[Y]; cz = f->vertex[2]->v[Z] - p->v[Z]; vol = (ax * (by*cz - bz*cy) + ay * (bz*cx - bx*cz) + az * (bx*cy - by*cx)); if ( debug ) std::cerr << "Face=" << f << "; Vertex=" << p->vNum << ": vol(int) = " << voli << ", vol(double) = " << vol << std::endl ; /* The volume should be an integer. */ if ( vol > 0.5 ) return 1; else if ( vol < -0.5 ) return -1; else return 0; } /*-------------------------------------------------------------------*/ void PrintPoint( tVertex p ) { int i; for ( i = 0; i < 3; i++ ) std::cout << "\t" << p->v[i] ; putchar('\n'); } /*--------------------------------------------------------------------- MakeConeFace makes a new face and two new edges between the edge and the point that are passed to it. It returns a pointer to the new face. ---------------------------------------------------------------------*/ tFace MakeConeFace( tEdge e, tVertex p ) { tEdge new_edge[2]; tFace new_face; int i, j; /* Make two new edges (if don't already exist). */ for ( i=0; i < 2; ++i ) /* If the edge exists, copy it into new_edge. */ if ( !( new_edge[i] = e->endpts[i]->duplicate) ) { /* Otherwise (duplicate is NULL), MakeNullEdge. */ new_edge[i] = MakeNullEdge(); new_edge[i]->eNum = ecount++; new_edge[i]->endpts[0] = e->endpts[i]; new_edge[i]->endpts[1] = p; e->endpts[i]->duplicate = new_edge[i]; } /* Make the new face. */ new_face = MakeNullFace(); new_face->fNum = fcount++; new_face->edge[0] = e; new_face->edge[1] = new_edge[0]; new_face->edge[2] = new_edge[1]; MakeCcw( new_face, e, p ); /* Set the adjacent face pointers. */ for ( i=0; i < 2; ++i ) for ( j=0; j < 2; ++j ) /* Only one NULL link should be set to new_face. */ if ( !new_edge[i]->adjface[j] ) { new_edge[i]->adjface[j] = new_face; break; } return new_face; } /*--------------------------------------------------------------------- MakeCcw puts the vertices in the face structure in counterclock wise order. We want to store the vertices in the same order as in the visible face. The third vertex is always p. ---------------------------------------------------------------------*/ void MakeCcw( tFace f, tEdge e, tVertex p ) { tFace fv; /* The visible face adjacent to e */ int i; /* Index of e->endpoint[0] in fv. */ tEdge s; /* Temporary, for swapping */ if ( e->adjface[0]->visible ) fv = e->adjface[0]; else fv = e->adjface[1]; /* Set vertex[0] & [1] of f to have the same orientation as do the corresponding vertices of fv. */ for ( i=0; fv->vertex[i] != e->endpts[0]; ++i ) ; /* Orient f the same as fv. */ if ( fv->vertex[ (i+1) % 3 ] != e->endpts[1] ) { f->vertex[0] = e->endpts[1]; f->vertex[1] = e->endpts[0]; } else { f->vertex[0] = e->endpts[0]; f->vertex[1] = e->endpts[1]; SWAP( s, f->edge[1], f->edge[2] ); } /* This swap is tricky. e is edge[0]. edge[1] is based on endpt[0], edge[2] on endpt[1]. So if e is oriented "forwards," we need to move edge[1] to follow [0], because it precedes. */ f->vertex[2] = p; } /*--------------------------------------------------------------------- MakeNullEdge creates a new cell and initializes all pointers to NULL and sets all flags to off. It returns a pointer to the empty cell. ---------------------------------------------------------------------*/ tEdge MakeNullEdge( void ) { tEdge e; // NEW( e, tsEdge ); e = new tsEdge; e->eNum = -1; e->adjface[0] = e->adjface[1] = e->newface = NULL; e->endpts[0] = e->endpts[1] = NULL; e->delete_bit = !REMOVED; ADD( edges, e ); return e; } /*-------------------------------------------------------------------- MakeNullFace creates a new face structure and initializes all of its flags to NULL and sets all the flags to off. It returns a pointer to the empty cell. ---------------------------------------------------------------------*/ tFace MakeNullFace( void ) { tFace f; int i; // NEW( f, tsFace); f = new tsFace; f->fNum = -1; for ( i=0; i < 3; ++i ) { f->edge[i] = NULL; f->vertex[i] = NULL; } f->visible = !VISIBLE; ADD( faces, f ); return f; } /*--------------------------------------------------------------------- MakeFace creates a new face structure from three vertices (in ccw order). It returns a pointer to the face. ---------------------------------------------------------------------*/ tFace MakeFace( tVertex v0, tVertex v1, tVertex v2, tFace fold ) { tFace f; tEdge e0, e1, e2; /* Create edges of the initial triangle. */ if( !fold ) { e0 = MakeNullEdge(); e1 = MakeNullEdge(); e2 = MakeNullEdge(); } else { /* Copy from fold, in reverse order. */ e0 = fold->edge[2]; e1 = fold->edge[1]; e2 = fold->edge[0]; } e0->endpts[0] = v0; e0->endpts[1] = v1; e1->endpts[0] = v1; e1->endpts[1] = v2; e2->endpts[0] = v2; e2->endpts[1] = v0; /* Create face for triangle. */ f = MakeNullFace(); f->edge[0] = e0; f->edge[1] = e1; f->edge[2] = e2; f->vertex[0] = v0; f->vertex[1] = v1; f->vertex[2] = v2; /* Link edges to face. */ e0->adjface[0] = e1->adjface[0] = e2->adjface[0] = f; return f; } /*--------------------------------------------------------------------- CleanUp goes through each data structure list and clears all flags and NULLs out some pointers. The order of processing (edges, faces, vertices) is important. ---------------------------------------------------------------------*/ void CleanUp( void ) { CleanEdges(); CleanFaces(); CleanVertices(); } /*--------------------------------------------------------------------- CleanEdges runs through the edge list and cleans up the structure. If there is a newface then it will put that face in place of the visible face and NULL out newface. It also deletes so marked edges. ---------------------------------------------------------------------*/ void CleanEdges( void ) { tEdge e; /* Primary index into edge list. */ tEdge t; /* Temporary edge pointer. */ /* Integrate the newface's into the data structure. */ /* Check every edge. */ e = edges; do { if ( e->newface ) { if ( e->adjface[0]->visible ) e->adjface[0] = e->newface; else e->adjface[1] = e->newface; e->newface = NULL; } e = e->next; } while ( e != edges ); /* Delete any edges marked for deletion. */ while ( edges && edges->delete_bit ) { e = edges; DELETE( edges, e ); } e = edges->next; do { if ( e->delete_bit ) { t = e; e = e->next; DELETE( edges, t ); } else e = e->next; } while ( e != edges ); } /*--------------------------------------------------------------------- CleanFaces runs through the face list and deletes any face marked visible. ---------------------------------------------------------------------*/ void CleanFaces( void ) { tFace f; /* Primary pointer into face list. */ tFace t; /* Temporary pointer, for deleting. */ while ( faces && faces->visible ) { f = faces; DELETE( faces, f ); } f = faces->next; do { if ( f->visible ) { t = f; f = f->next; DELETE( faces, t ); } else f = f->next; } while ( f != faces ); } /*--------------------------------------------------------------------- CleanVertices runs through the vertex list and deletes the vertices that are marked as processed but are not incident to any undeleted edges. ---------------------------------------------------------------------*/ void CleanVertices( void ) { tEdge e; tVertex v, t; /* Mark all vertices incident to some undeleted edge as on the hull. */ e = edges; do { e->endpts[0]->onhull = e->endpts[1]->onhull = ONHULL; e = e->next; } while (e != edges); /* Delete all vertices that have been processed but are not on the hull. */ while ( vertices && vertices->mark && !vertices->onhull ) { v = vertices; DELETE( vertices, v ); } v = vertices->next; do { if ( v->mark && !v->onhull ) { t = v; v = v->next; DELETE( vertices, t ) } else v = v->next; } while ( v != vertices ); /* Reset flags. */ v = vertices; do { v->duplicate = NULL; v->onhull = !ONHULL; v = v->next; } while ( v != vertices ); } /*--------------------------------------------------------------------- Collinear checks to see if the three points given are collinear, by checking to see if each element of the cross product is zero. ---------------------------------------------------------------------*/ bool Collinear( tVertex a, tVertex b, tVertex c ) { return ( c->v[Z] - a->v[Z] ) * ( b->v[Y] - a->v[Y] ) - ( b->v[Z] - a->v[Z] ) * ( c->v[Y] - a->v[Y] ) == 0 && ( b->v[Z] - a->v[Z] ) * ( c->v[X] - a->v[X] ) - ( b->v[X] - a->v[X] ) * ( c->v[Z] - a->v[Z] ) == 0 && ( b->v[X] - a->v[X] ) * ( c->v[Y] - a->v[Y] ) - ( b->v[Y] - a->v[Y] ) * ( c->v[X] - a->v[X] ) == 0 ; } /*--------------------------------------------------------------------- Consistency runs through the edge list and checks that all adjacent faces have their endpoints in opposite order. This verifies that the vertices are in counterclockwise order. ---------------------------------------------------------------------*/ void Consistency( void ) { register tEdge e; register int i, j; e = edges; do { /* find index of endpoint[0] in adjacent face[0] */ for ( i = 0; e->adjface[0]->vertex[i] != e->endpts[0]; ++i ) ; /* find index of endpoint[0] in adjacent face[1] */ for ( j = 0; e->adjface[1]->vertex[j] != e->endpts[0]; ++j ) ; /* check if the endpoints occur in opposite order */ if ( !( e->adjface[0]->vertex[ (i+1) % 3 ] == e->adjface[1]->vertex[ (j+2) % 3 ] || e->adjface[0]->vertex[ (i+2) % 3 ] == e->adjface[1]->vertex[ (j+1) % 3 ] ) ) break; e = e->next; } while ( e != edges ); if ( e != edges ) std::cerr << "Checks: edges are NOT consistent.\n" ; else std::cerr << "Checks: edges consistent.\n" ; } /*--------------------------------------------------------------------- Convexity checks that the volume between every face and every point is negative. This shows that each point is inside every face and therefore the hull is convex. ---------------------------------------------------------------------*/ void Convexity( void ) { register tFace f; register tVertex v; int vol; f = faces; do { v = vertices; do { if ( v->mark ) { vol = VolumeSign( f, v ); if ( vol < 0 ) break; } v = v->next; } while ( v != vertices ); f = f->next; } while ( f != faces ); if ( f != faces ) std::cerr << "Checks: NOT convex.\n" ; else if ( check ) std::cerr << "Checks: convex.\n" ; } /*--------------------------------------------------------------------- CheckEuler checks Euler's relation, as well as its implications when all faces are known to be triangles. Only prints positive information when debug is true, but always prints negative information. ---------------------------------------------------------------------*/ void CheckEuler( int V, int E, int F ) { if ( check ) std::cerr << "Checks: V, E, F = " << V << " " << E << " " << F << ":\t"; if ( (V - E + F) != 2 ) std::cerr << "Checks: V-E+F != 2\n" ; else if ( check ) std::cerr << "V-E+F = 2\t" ; if ( F != (2 * V - 4) ) std::cerr << "Checks: F=" << F << " != 2V-4=" << 2*V-4 << "; V=" << V << std::endl; else if ( check ) std::cerr << "F = 2V-4\t" ; if ( (2 * E) != (3 * F) ) std::cerr << "Checks: 2E=" << 2*E << " != 3F=" << 3*F << "; E=" << E << ", F=" << F << std::endl; else if ( check ) std::cerr << "2E = 3F\n" ; } /*-------------------------------------------------------------------*/ void Checks( void ) { tVertex v; tEdge e; tFace f; int V = 0, E = 0 , F = 0; Consistency(); Convexity(); if ( (v = vertices) != NULL ) do { if (v->mark) V++; v = v->next; } while ( v != vertices ); if ( (e = edges) != NULL ) do { E++; e = e->next; } while ( e != edges ); if ( (f = faces) != NULL ) do { F++; f = f ->next; } while ( f != faces ); CheckEuler( V, E, F ); } /*=================================================================== These functions are used whenever the debug flag is set. They print out the entire contents of each data structure. Printing is to standard error. To grab the output in a file in the csh, use this: chull < i.file >&! o.file =====================================================================*/ /*-------------------------------------------------------------------*/ void PrintOut( tVertex v ) { std::cerr << "\nHead vertex " << v->vNum << " = " << v << " :\n"; PrintVertices(); PrintEdges(); PrintFaces(); } /*-------------------------------------------------------------------*/ void PrintVertices( void ) { tVertex temp; temp = vertices; std::cerr << "Vertex List\n"; if (vertices) do { std::cerr << " addr " << vertices << "\t"; std::cerr << " vNum " << vertices->vNum ; std::cerr << " (" << vertices->v[X] << "," << vertices->v[Y] << "," << vertices->v[Z] << ")"; std::cerr << " active:" << vertices->onhull ; std::cerr << " dup:" << vertices->duplicate ; std::cerr << " mark:" << vertices->mark << std::endl; vertices = vertices->next; } while ( vertices != temp ); } /*-------------------------------------------------------------------*/ void PrintEdges( void ) { tEdge temp; int i; temp = edges; std::cerr << "Edge List\n" ; if (edges) do { std::cerr << " addr: " << edges << "\t" ; std::cerr << "adj: " ; for (i=0; i<2; ++i) std::cerr << edges->adjface[i] ; std::cerr << " endpts:" ; for (i=0; i<2; ++i) std::cerr << edges->endpts[i]->vNum ; std::cerr << " del:" << edges->delete_bit << std::endl; edges = edges->next; } while (edges != temp ); } /*-------------------------------------------------------------------*/ void PrintFaces( void ) { int i; tFace temp; temp = faces; std::cerr << "Face List\n"; if (faces) do { std::cerr << " addr: " << faces << "\t"; std::cerr << " edges:" ; for( i=0; i<3; ++i ) std::cerr << faces->edge[i] ; std::cerr << " vert:" ; for ( i=0; i<3; ++i) std::cerr << faces->vertex[i]->vNum ; std::cerr << " vis: " << faces->visible << std::endl; faces= faces->next; } while ( faces != temp ); } /*-------------------------------------------------------------------*/ void PrintToSimpleFormat ( void ) { PrintVerticesToSimpleFormat(); PrintEdgesToSimpleFormat(); PrintEdgesToSimpleFormat(); } /*-------------------------------------------------------------------*/ void PrintVerticesToSimpleFormat( void ) { tVertex temp; temp = vertices; std::cout << "Vertex List\n"; if (vertices) do { std::cout << "v" << vertices->vNum ; std::cout << " (" << vertices->v[X] << "," << vertices->v[Y] << "," << vertices->v[Z] << ")" << std::endl; vertices = vertices->next; } while ( vertices != temp ); } /*-------------------------------------------------------------------*/ void PrintEdgesToSimpleFormat ( void ) { tEdge temp; int i; temp = edges; std::cout << "\nEdge List\n" ; if (edges) do { std::cout << "e" << edges->eNum << " ("; for (i=0; i<2; ++i) std::cout << "v" << edges->endpts[i]->vNum << ","; std::cout << "f" << edges->adjface[0]->fNum << ","; std::cout << "f" << edges->adjface[1]->fNum << ")" << std::endl; edges = edges->next; } while (edges != temp ); } /*-------------------------------------------------------------------*/ void PrintFacesToSimpleFormat( void ) { int i; tFace temp; temp = faces; std::cout << "\nFace List\n"; if (faces) do { std::cout << "f" << faces->fNum << " ("; for ( i=0; i<2; ++i) std::cout << "v" << faces->vertex[i]->vNum << ","; std::cout << "v" << faces->vertex[2]->vNum << ")" << std::endl; faces= faces->next; } while ( faces != temp ); } /*-------------------------------------------------------------------*/ void PrintVerticesToLeda( void ) { tVertex temp; temp = vertices; if (vertices) do { std::cout << "(" << vertices->v[X] << "," << vertices->v[Y] << "," << vertices->v[Z] << "," << RATE << ") \n"; vertices = vertices->next; } while ( vertices != temp ); } core++-1.7/progs/chull/macros.h0100644000175000001440000000177307674161276015717 0ustar joachimusers/*==================================================================== macros.h macros used to access data structures and perform quick tests. ====================================================================*/ /* general-purpose macros */ #define SWAP(t,x,y) { t = x; x = y; y = t; } //#include /* char *malloc(); */ #define NEW(p,type) if ((p=(type *) malloc (sizeof(type))) == NULL) {\ printf ("Out of Memory!\n");\ exit(0);\ } #define FREE(p) if (p) { free ((char *) p); p = NULL; } #define ADD( head, p ) if ( head ) { \ p->next = head; \ p->prev = head->prev; \ head->prev = p; \ p->prev->next = p; \ } \ else { \ head = p; \ head->next = head->prev = p; \ } #ifdef DELETE #undef DELETE #endif #define DELETE( head, p ) if ( head ) { \ if ( head == head->next ) \ head = NULL; \ else if ( p == head ) \ head = head->next; \ p->next->prev = p->prev; \ p->prev->next = p->next; \ FREE( p ); \ } core++-1.7/progs/chull/inputs/0040755000175000001440000000000010147210064015552 5ustar joachimuserscore++-1.7/progs/chull/inputs/Ball10000100644000175000001440000004121707437361200016661 0ustar joachimusers(401,212,204,1) (72,269,234,1) (21,-84,-111,1) (-461,55,99,1) (50,-224,-195,1) (-62,440,-123,1) (208,-124,230,1) (-119,-39,450,1) (185,94,383,1) (373,60,281,1) (142,225,-303,1) (-149,-75,-396,1) (-49,173,453,1) (-267,83,103,1) (113,-481,28,1) (-227,113,-114,1) (228,110,-150,1) (38,-42,-311,1) (130,147,180,1) (129,415,-176,1) (139,152,-188,1) (124,-5,216,1) (288,-34,117,1) (-67,30,-11,1) (-170,201,396,1) (-264,-200,-134,1) (-237,420,-86,1) (379,218,-17,1) (-139,339,-334,1) (-6,-253,195,1) (-237,86,281,1) (81,-127,-107,1) (97,-104,416,1) (-84,131,234,1) (-47,32,-321,1) (121,-119,410,1) (184,143,-29,1) (-60,-137,-108,1) (-282,255,-145,1) (-103,-173,251,1) (-212,229,189,1) (201,73,326,1) (101,-224,-90,1) (146,166,-123,1) (1,334,59,1) (-260,161,-142,1) (-50,427,20,1) (-92,-221,-383,1) (310,-213,-171,1) (-98,-236,-198,1) (182,-291,-104,1) (110,-169,371,1) (-356,70,7,1) (1,-90,-479,1) (87,424,-72,1) (223,-96,33,1) (401,-35,152,1) (415,-63,47,1) (-181,-223,63,1) (165,214,138,1) (-195,-126,221,1) (-5,45,297,1) (203,122,-343,1) (-175,13,93,1) (-91,-29,58,1) (-462,48,-181,1) (31,435,-116,1) (-85,336,-265,1) (63,65,83,1) (189,-358,90,1) (-116,-411,238,1) (-155,152,-222,1) (-302,-72,-386,1) (422,-235,69,1) (135,110,-304,1) (413,13,41,1) (380,33,-184,1) (-238,-329,-182,1) (69,-382,-305,1) (-192,141,-208,1) (348,171,277,1) (384,-91,121,1) (27,139,-438,1) (322,237,75,1) (349,-197,295,1) (311,27,23,1) (-12,19,-24,1) (-192,99,213,1) (-109,6,135,1) (-182,123,37,1) (53,23,425,1) (122,-49,206,1) (-467,-132,2,1) (240,-29,148,1) (343,96,182,1) (-229,-306,119,1) (-237,-150,304,1) (415,98,-108,1) (-99,-54,3,1) (22,-148,13,1) (302,-116,364,1) (-250,179,374,1) (-360,157,-53,1) (329,-351,-34,1) (223,171,317,1) (-288,-52,-324,1) (194,237,62,1) (43,376,-306,1) (356,-110,-127,1) (115,23,-46,1) (360,-61,-149,1) (-358,-257,-1,1) (-100,-348,93,1) (-41,396,293,1) (-85,144,-310,1) (-289,-109,288,1) (160,-172,67,1) (-116,10,-314,1) (283,162,278,1) (291,235,101,1) (-134,214,112,1) (-371,14,1,1) (390,-101,-141,1) (-5,402,197,1) (216,-256,-114,1) (-197,-128,399,1) (107,103,471,1) (338,142,-180,1) (-167,7,218,1) (259,-45,309,1) (124,140,430,1) (-196,72,352,1) (-428,219,-99,1) (256,259,-77,1) (-145,-126,-172,1) (-160,-208,105,1) (49,-303,120,1) (-19,-432,-28,1) (-67,396,-218,1) (0,-6,169,1) (-332,-23,-16,1) (-136,-37,-421,1) (-156,-194,-355,1) (-411,-25,99,1) (-22,-130,394,1) (-304,-78,348,1) (-225,175,173,1) (309,191,12,1) (-77,-107,97,1) (17,-241,226,1) (368,-247,179,1) (181,-240,-191,1) (-247,316,45,1) (-239,-85,-58,1) (-245,-42,100,1) (69,-136,-224,1) (83,-387,-297,1) (-329,243,28,1) (197,-374,-196,1) (-58,302,-233,1) (-144,-240,15,1) (-236,-187,393,1) (-36,-21,-367,1) (76,3,-197,1) (56,-279,-203,1) (-138,-166,-301,1) (128,147,-200,1) (388,59,-122,1) (291,-107,-63,1) (-304,271,-144,1) (273,339,46,1) (82,-27,-74,1) (0,475,-21,1) (181,265,-100,1) (-4,280,308,1) (-277,246,-64,1) (37,-98,-168,1) (-95,-385,-6,1) (304,-85,2,1) (-233,-145,140,1) (203,-158,-302,1) (259,230,34,1) (-237,201,44,1) (-7,417,136,1) (347,32,303,1) (287,-101,-19,1) (-395,96,185,1) (-95,73,314,1) (-360,-222,-176,1) (-23,136,-249,1) (-347,-344,-101,1) (-415,214,154,1) (197,-12,90,1) (135,-189,-403,1) (-87,-427,-5,1) (54,82,139,1) (-157,221,416,1) (166,208,-132,1) (-67,-168,105,1) (-117,95,-127,1) (-20,-54,474,1) (-94,-321,154,1) (248,399,46,1) (-110,83,413,1) (167,16,-91,1) (309,88,269,1) (150,-128,-161,1) (351,-178,-56,1) (316,79,-280,1) (-55,-197,-406,1) (-237,-92,-249,1) (103,299,338,1) (91,43,-37,1) (64,-148,445,1) (299,-291,-267,1) (-118,222,-286,1) (343,-15,-108,1) (142,-122,150,1) (-27,225,305,1) (-108,-16,-362,1) (273,-319,-149,1) (91,166,243,1) (-211,189,-38,1) (176,-413,152,1) (49,97,68,1) (-62,-89,299,1) (-282,302,-242,1) (-145,50,-61,1) (-77,-95,268,1) (147,-434,16,1) (143,100,-367,1) (287,-335,127,1) (-187,103,-192,1) (-71,182,230,1) (333,-75,90,1) (-382,-289,35,1) (25,-7,-418,1) (81,-22,353,1) (-259,-347,-44,1) (53,255,263,1) (481,-88,-32,1) (207,-33,357,1) (89,-141,306,1) (169,-195,376,1) (-2,45,-496,1) (-333,198,234,1) (169,-311,176,1) (-149,155,8,1) (236,264,263,1) (-363,147,-305,1) (-360,-38,-153,1) (311,81,-150,1) (265,194,136,1) (-275,340,174,1) (-47,156,-80,1) (-174,159,342,1) (48,-207,247,1) (324,-124,-237,1) (110,456,112,1) (66,-74,-16,1) (303,-225,-89,1) (25,459,-175,1) (-59,258,200,1) (203,-157,131,1) (-268,-101,361,1) (-232,180,110,1) (-219,72,83,1) (176,-404,-5,1) (-18,-251,-182,1) (38,-25,-15,1) (146,88,-32,1) (-286,162,-322,1) (182,255,11,1) (435,98,193,1) (-300,-128,-183,1) (287,340,30,1) (-75,-70,438,1) (-345,-75,304,1) (-266,341,-39,1) (212,39,23,1) (-214,-293,-76,1) (-469,-48,68,1) (-283,-241,2,1) (-130,111,-455,1) (-19,83,290,1) (-40,21,-463,1) (211,51,-12,1) (-246,-157,254,1) (-173,60,328,1) (190,-99,230,1) (99,-477,-52,1) (468,133,-7,1) (-118,-11,340,1) (220,174,334,1) (-93,-300,-203,1) (290,267,-85,1) (-5,-159,-62,1) (-39,66,-59,1) (-223,326,94,1) (-305,-210,304,1) (109,284,-380,1) (-228,231,-145,1) (175,-459,-82,1) (212,-265,207,1) (-8,343,-34,1) (-115,79,137,1) (-87,-72,-435,1) (184,-366,-81,1) (-232,-89,-298,1) (-274,-145,283,1) (-57,109,-379,1) (-352,-181,-112,1) (58,20,-26,1) (-90,-193,-101,1) (131,-62,111,1) (-91,-456,-91,1) (56,-138,297,1) (-1,-336,144,1) (9,185,364,1) (-260,-244,156,1) (-154,-409,30,1) (-273,-264,82,1) (-110,379,-40,1) (-70,40,-222,1) (186,-329,123,1) (276,201,-355,1) (-229,174,-328,1) (-152,-253,-103,1) (-191,44,25,1) (125,135,-289,1) (-133,-308,52,1) (-179,-38,-299,1) (-8,227,-279,1) (154,-450,-33,1) (-223,-181,-174,1) (-267,127,369,1) (297,73,-72,1) (-362,-80,-42,1) (-58,121,450,1) (-306,-217,104,1) (-34,185,-411,1) (89,251,101,1) (-140,39,-30,1) (-3,19,389,1) (-66,-227,83,1) (-103,32,-343,1) (-57,-137,-310,1) (-193,-207,-374,1) (-432,81,-22,1) (151,94,397,1) (69,-38,258,1) (-353,-81,185,1) (-245,-302,128,1) (185,94,-365,1) (11,-136,200,1) (-208,156,325,1) (-374,-140,-17,1) (-180,-109,-412,1) (-33,309,273,1) (221,-124,-119,1) (76,11,-303,1) (-382,11,207,1) (-106,6,-317,1) (-48,-215,-312,1) (77,144,170,1) (310,229,-288,1) (-334,-220,222,1) (-138,-103,-292,1) (-73,392,63,1) (109,-181,347,1) (297,396,-34,1) (30,437,199,1) (-135,222,-97,1) (76,388,182,1) (-19,-231,53,1) (38,195,-80,1) (-137,-7,309,1) (-123,435,131,1) (-172,-60,43,1) (-96,-144,-396,1) (-439,128,-172,1) (167,121,-233,1) (-438,196,46,1) (300,93,97,1) (-331,-192,300,1) (135,-85,-182,1) (137,-306,58,1) (-309,-264,61,1) (418,28,-151,1) (-125,-185,81,1) (69,373,97,1) (-407,9,173,1) (-255,-27,363,1) (-187,336,88,1) (-282,-99,344,1) (380,262,158,1) (50,-450,-31,1) (-130,301,207,1) (180,239,272,1) (-312,298,217,1) (-295,-326,37,1) (-346,-120,-135,1) (-328,162,270,1) (269,-274,4,1) (-78,-318,129,1) (-220,-233,-163,1) (8,-372,252,1) (-108,227,414,1) (-37,-210,349,1) (26,324,-342,1) (387,-153,-175,1) (250,-214,-251,1) (-81,-33,378,1) (199,233,-310,1) (73,62,330,1) (-263,407,86,1) (262,206,243,1) (266,97,-245,1) (128,443,79,1) (102,-165,-194,1) (61,263,-89,1) (-134,273,-263,1) (-381,81,246,1) (325,-200,-13,1) (-103,54,-409,1) (-185,-392,-57,1) (64,-247,-26,1) (72,-233,-406,1) (262,-385,154,1) (0,25,-252,1) (-101,31,-134,1) (6,473,96,1) (206,-58,207,1) (472,35,-56,1) (87,-341,-334,1) (-176,-352,-102,1) (-321,218,-148,1) (359,63,292,1) (-248,-57,-254,1) (163,23,-334,1) (-418,85,-170,1) (-353,-12,-334,1) (-30,135,63,1) (148,-171,414,1) (-18,391,181,1) (119,-254,-300,1) (-59,-384,-87,1) (-383,274,39,1) (-218,-135,136,1) (-30,331,-110,1) (337,134,-156,1) (-69,379,43,1) (-105,100,222,1) (11,-4,223,1) (292,360,-166,1) (112,348,-226,1) (210,-394,213,1) (-471,37,67,1) (71,-117,36,1) (2,126,-327,1) (-24,404,159,1) (-225,98,-144,1) (53,429,-113,1) (-360,252,160,1) (-279,147,177,1) (196,26,175,1) (-170,300,-252,1) (185,61,-183,1) (224,277,-150,1) (116,425,176,1) (106,-264,-285,1) (-181,-176,-65,1) (-81,51,-117,1) (-345,-287,-149,1) (5,-323,-150,1) (142,-172,200,1) (-267,-272,-149,1) (258,-361,-36,1) (-29,-243,125,1) (-299,107,-271,1) (57,-42,-67,1) (289,185,284,1) (175,226,-28,1) (227,-337,-154,1) (-326,-349,102,1) (298,-148,-316,1) (236,289,-88,1) (294,205,43,1) (-204,-413,20,1) (-31,-262,-403,1) (-258,89,-219,1) (-256,-365,-10,1) (249,104,-80,1) (-249,340,-105,1) (106,-172,-322,1) (280,123,-235,1) (-225,-433,2,1) (-129,-192,-434,1) (151,52,-300,1) (-270,202,-87,1) (-19,18,307,1) (166,-166,338,1) (-373,-104,-255,1) (-440,27,-133,1) (-250,-231,-100,1) (-151,-238,129,1) (43,-43,251,1) (377,-230,-228,1) (445,-164,-102,1) (-184,80,-220,1) (-191,-436,-65,1) (128,-151,-142,1) (131,222,-231,1) (216,-259,225,1) (-135,136,449,1) (-185,-80,-341,1) (-40,382,-306,1) (261,349,5,1) (-132,-165,-84,1) (-209,-376,-63,1) (227,-95,371,1) (55,365,228,1) (-104,220,-413,1) (38,-387,165,1) (24,-234,-312,1) (-280,23,-68,1) (194,-167,281,1) (173,-243,15,1) (-487,64,-70,1) (36,329,117,1) (-395,-205,116,1) (-41,-23,-265,1) (236,350,221,1) (-103,146,140,1) (317,-278,-84,1) (-118,8,-326,1) (10,-207,-96,1) (-106,-216,-125,1) (-121,-217,-229,1) (183,-147,-382,1) (-25,75,33,1) (-129,-434,39,1) (-206,-403,-22,1) (175,105,151,1) (54,-344,-95,1) (-276,-220,290,1) (-272,-88,192,1) (260,282,258,1) (252,226,-66,1) (-121,386,-194,1) (-92,-85,-38,1) (312,-192,112,1) (-108,-239,-383,1) (-246,-15,-103,1) (328,57,3,1) (61,331,54,1) (-109,58,-245,1) (-394,-180,30,1) (-229,252,58,1) (167,271,-372,1) (210,-20,-300,1) (-253,-214,253,1) (137,344,-64,1) (255,-402,41,1) (-343,-60,-263,1) (155,14,7,1) (78,182,254,1) (-88,351,30,1) (-38,-47,112,1) (-252,-118,-170,1) (129,-72,-22,1) (257,102,102,1) (266,199,-78,1) (-39,-249,-59,1) (-27,119,-305,1) (408,-41,-56,1) (191,319,-51,1) (-232,61,-377,1) (189,-127,-395,1) (-101,-38,-208,1) (-147,-293,-292,1) (211,127,150,1) (423,190,-3,1) (89,-16,445,1) (20,-483,-84,1) (124,-85,377,1) (-309,109,49,1) (-103,-205,-349,1) (19,282,-200,1) (-61,114,-181,1) (-18,-391,-165,1) (249,123,-8,1) (307,221,30,1) (-295,267,-189,1) (-241,-149,-117,1) (-126,-217,254,1) (192,264,362,1) (251,-140,-331,1) (247,-153,131,1) (1,-152,-438,1) (141,221,-155,1) (-130,-112,-416,1) (-293,-110,220,1) (-85,-410,-50,1) (-55,120,-356,1) (28,327,34,1) (-277,79,150,1) (197,-396,-57,1) (-28,-244,120,1) (10,390,180,1) (110,-383,-64,1) (58,38,-412,1) (7,372,210,1) (-1,45,314,1) (323,142,-335,1) (8,266,382,1) (-437,-201,-104,1) (58,93,424,1) (-300,-142,-364,1) (410,-108,161,1) (393,102,175,1) (-51,-261,220,1) (58,273,187,1) (221,270,16,1) (288,266,6,1) (42,-385,243,1) (-308,-174,-74,1) (-336,8,-157,1) (261,-11,-170,1) (-204,67,267,1) (81,-183,-447,1) (324,-20,60,1) (-357,21,-8,1) (-396,92,-229,1) (105,178,230,1) (-114,327,-120,1) (-62,126,359,1) (-35,-33,112,1) (-80,-4,-233,1) (60,99,358,1) (330,70,-284,1) (-12,201,-296,1) (430,0,132,1) (264,-27,-125,1) (207,-168,-187,1) (306,197,-44,1) (166,105,389,1) (-241,-186,163,1) (69,-16,25,1) (51,-359,-288,1) (207,233,-231,1) (50,-142,445,1) (78,-387,-33,1) (-347,1,-110,1) (198,-291,159,1) (138,-269,66,1) (75,-486,-14,1) (105,-6,-264,1) (-285,-49,64,1) (-173,417,5,1) (-315,181,-234,1) (-85,-278,341,1) (-72,207,-79,1) (-120,42,-214,1) (206,-65,291,1) (171,434,-76,1) (126,410,-54,1) (20,-15,-176,1) (-7,-366,331,1) (-160,-281,-251,1) (-230,10,195,1) (-262,305,-3,1) (-203,323,177,1) (330,165,-319,1) (136,79,68,1) (12,95,-49,1) (-403,-244,120,1) (34,121,121,1) (214,-268,-325,1) (-242,243,269,1) (208,91,179,1) (-147,187,434,1) (-71,-176,427,1) (-115,357,23,1) (47,255,-344,1) (-13,-461,79,1) (340,225,-12,1) (275,-230,-106,1) (356,-119,322,1) (305,-337,33,1) (35,-181,-188,1) (297,114,247,1) (-240,-124,-261,1) (-344,-310,-154,1) (-9,-167,-328,1) (-371,-188,-187,1) (-56,292,-367,1) (-73,431,-51,1) (282,20,-329,1) (-167,-258,230,1) (-38,68,359,1) (-277,200,-313,1) (332,114,238,1) (-155,-186,-337,1) (-85,-327,-5,1) (-300,236,205,1) (62,-245,392,1) (-225,-208,124,1) (8,-1,-127,1) (111,-410,-206,1) (274,-66,107,1) (-93,-19,156,1) (-161,180,-132,1) (446,-37,-13,1) (338,241,205,1) (282,6,177,1) (-132,95,470,1) (212,-365,112,1) (25,-365,-171,1) (-295,-91,-164,1) (8,-334,342,1) (-340,33,-88,1) (-395,149,-84,1) (156,176,-256,1) (-323,123,-313,1) (-198,-190,-178,1) (53,22,-495,1) (-130,181,37,1) (-327,-83,336,1) (-83,-146,421,1) (-41,-97,-148,1) (145,205,162,1) (466,94,-29,1) (-103,311,-15,1) (-264,-161,-260,1) (209,162,276,1) (-34,-77,436,1) (138,340,248,1) (-68,297,225,1) (-448,-23,-138,1) (356,-208,126,1) (-180,-167,28,1) (-133,-17,467,1) (336,-97,-98,1) (176,-258,360,1) (-143,-18,-457,1) (225,-149,25,1) (167,268,-41,1) (-40,-168,-268,1) (196,-93,-278,1) (90,268,-191,1) (131,-145,-142,1) (29,-321,-64,1) (-98,-318,20,1) (152,142,351,1) (384,252,-101,1) (-352,48,-43,1) (81,215,-368,1) (86,-273,323,1) (-410,-95,-266,1) (-45,211,-182,1) (391,-21,-177,1) (-240,141,-61,1) (-109,-298,165,1) (-77,-156,74,1) (-278,298,-239,1) (39,380,88,1) (183,320,143,1) (23,201,63,1) (-131,-353,123,1) (-407,-94,-260,1) (31,297,-59,1) (289,105,349,1) (113,302,0,1) (-269,-338,-172,1) (-111,228,-32,1) (6,427,118,1) (-295,-69,-270,1) (428,153,-197,1) (-225,344,206,1) (57,339,-352,1) (-376,-33,-117,1) (-172,397,112,1) (226,271,-36,1) (448,-157,-137,1) (13,-137,-268,1) (-78,145,-244,1) (310,5,238,1) (-81,-209,306,1) (49,-174,-359,1) (-362,-164,-120,1) (-215,-249,-268,1) (164,12,-414,1) (141,-126,-252,1) (-341,252,230,1) (105,-103,-99,1) (-370,222,41,1) (-196,222,-233,1) (88,472,-1,1) (-30,-174,-86,1) (-414,199,161,1) (-99,125,389,1) (301,254,87,1) (-296,-301,169,1) (-29,286,117,1) (469,92,-69,1) (186,-377,-69,1) (-178,-300,-236,1) (209,-216,-323,1) (-341,137,128,1) (-24,32,75,1) (179,230,-280,1) (-177,-82,168,1) (121,-330,-351,1) (-68,-262,-293,1) (174,79,-198,1) (147,80,19,1) (195,409,-189,1) (-69,-208,376,1) (21,-83,-14,1) (-383,86,134,1) (49,323,340,1) (41,219,357,1) (-81,-327,-247,1) (-277,193,169,1) (208,309,-270,1) (-367,30,-95,1) (-250,-150,-163,1) (-93,236,365,1) (-260,372,127,1) (-361,-85,181,1) (76,-87,-8,1) (1,-468,160,1) (-179,-2,5,1) (-264,-289,309,1) (-121,-258,-78,1) (50,-95,65,1) (137,-163,-105,1) (218,-61,35,1) (128,-136,-279,1) (-246,60,316,1) (-258,124,10,1) (-238,-158,102,1) (50,122,410,1) (-424,-185,-176,1) (110,-171,-264,1) (124,78,-142,1) (-77,-318,221,1) (143,-165,-36,1) (-97,88,-306,1) (329,122,204,1) (347,328,-97,1) (-67,-367,138,1) (-46,391,191,1) (-26,289,-372,1) (168,93,249,1) (-153,159,187,1) (127,381,79,1) (384,-157,80,1) (50,-85,280,1) (179,388,44,1) (306,31,-387,1) (30,377,271,1) (-308,-21,127,1) (271,-225,-270,1) (209,-75,37,1) (212,-186,-74,1) (-99,-327,269,1) (-245,-343,53,1) (-133,186,-95,1) (240,123,-366,1) (124,-379,206,1) (-363,333,62,1) (-291,-333,-194,1) (398,-261,-14,1) (-6,-444,-82,1) (107,432,-223,1) (-178,31,-90,1) (63,-421,32,1) (369,-258,-105,1) (-192,-384,133,1) (-24,140,-4,1) (52,270,0,1) (-235,-190,-51,1) (297,-346,191,1) (-333,-39,306,1) (325,186,193,1) (-204,47,74,1) (78,-262,-125,1) (-3,253,-296,1) (-267,88,-87,1) (-214,-112,-426,1) (28,-109,194,1) (346,98,166,1) (-377,-171,36,1) (-215,216,109,1) (-261,-126,-295,1) (87,-162,39,1) (-26,-11,-82,1) (234,142,-195,1) (-2,-37,-132,1) (-275,257,-118,1) (-233,22,-48,1) (-114,-480,17,1) (90,285,-244,1) (-37,-153,93,1) (30,198,199,1) (-273,392,-76,1) (-130,-109,46,1) (-87,193,-384,1) (299,212,132,1) (-136,-28,387,1) (327,318,-44,1) (304,114,12,1) (-187,216,79,1) (359,-172,-34,1) (53,378,-208,1) (-84,180,-415,1) (371,-41,198,1) (-142,132,316,1) (43,-21,436,1) (364,-131,-242,1) (106,15,-223,1) (-257,6,296,1) (-141,-209,-313,1) (-28,-451,-110,1) (57,276,272,1) (-107,-274,105,1) (136,231,104,1) (125,49,-208,1) (190,-346,19,1) (-210,202,310,1) (-323,-37,323,1) (345,22,214,1) (-236,-362,62,1) (266,-118,-332,1) (-240,171,370,1) (-26,-315,-255,1) (78,114,94,1) (16,-419,-214,1) (30,347,168,1) (197,-418,-186,1) (42,-373,-261,1) (191,-411,-160,1) (-223,373,-238,1) (-115,-178,-54,1) (129,-168,191,1) (172,38,309,1) (26,58,211,1) (214,355,-202,1) (203,-17,-90,1) (-124,-57,104,1) (-237,-247,289,1) (270,231,-85,1) (17,126,-388,1) (144,-61,-55,1) (217,90,-337,1) (-105,-451,72,1) (271,-9,-348,1) (293,-54,39,1) (252,214,-64,1) (-246,-364,145,1) (345,-28,148,1) (366,196,55,1) (112,-338,206,1) (-119,107,-280,1) (308,229,265,1) (366,49,-288,1) (-11,32,-447,1) (394,163,71,1) (38,290,147,1) (-127,236,180,1) (-387,77,-296,1) (-123,-299,296,1) (-483,23,38,1) (-463,-73,0,1) (-32,-159,-53,1) (151,247,375,1) (-276,-17,14,1) (317,-229,-193,1) (88,-213,329,1) (101,290,71,1) (-392,-4,3,1) (-251,370,165,1) (-186,451,59,1) (-80,243,329,1) (30,-92,-87,1) (260,-322,-194,1) (-386,19,65,1) (288,244,-274,1) (-67,229,253,1) (34,-77,160,1) (105,185,312,1) (96,208,19,1) (305,56,-79,1) (69,-434,-91,1) (-144,-24,-202,1) (-264,249,-274,1) (29,-180,433,1) (357,-68,281,1) (-129,-287,-188,1) (340,4,313,1) (22,-301,-320,1) (484,102,32,1) (-337,-278,99,1) (361,186,-127,1) (-439,20,137,1) (82,218,316,1) (-160,-373,219,1) (245,340,28,1) (288,339,-125,1) (348,-166,-95,1) (-283,-88,-245,1) (-405,-120,-23,1) (-72,-134,381,1) (-46,-357,101,1) (107,138,142,1) (-374,20,-85,1) (-436,148,-81,1) (380,-212,-10,1) (-280,178,18,1) (-137,-13,10,1) (190,336,45,1) (-401,-21,86,1) (39,307,-110,1) (-76,241,-388,1) (-421,98,-11,1) (-155,-15,55,1) (108,-349,154,1) (291,111,-41,1) (9,265,362,1) (88,-161,-174,1)core++-1.7/progs/chull/inputs/Ball20000100644000175000001440000010145007437361200016656 0ustar joachimusers(15,473,10,1) (-145,71,-158,1) (-451,143,-79,1) (-125,50,-281,1) (261,-172,-67,1) (-421,40,-12,1) (81,462,155,1) (299,-332,194,1) (-370,264,168,1) (-287,313,141,1) (7,127,-16,1) (-369,78,-187,1) (-27,-395,97,1) (47,154,41,1) (-318,-327,34,1) (290,236,54,1) (305,93,340,1) (394,20,203,1) (280,-214,-275,1) (145,82,438,1) (341,-183,200,1) (203,171,23,1) (54,377,35,1) (-35,-227,267,1) (-288,-142,-124,1) (296,209,-107,1) (-83,-234,-194,1) (-104,-244,-107,1) (218,253,-314,1) (-198,177,-65,1) (58,159,327,1) (-120,401,-39,1) (183,198,62,1) (-74,266,-95,1) (-119,-332,123,1) (-197,-287,-84,1) (-264,245,78,1) (293,-120,-120,1) (-102,-188,-249,1) (277,-311,211,1) (-65,386,-252,1) (361,127,152,1) (-283,295,-250,1) (19,166,14,1) (385,-90,194,1) (-54,271,378,1) (-218,-127,5,1) (-2,-357,255,1) (-375,-104,6,1) (470,-133,70,1) (216,-280,351,1) (-293,-45,-183,1) (-122,-37,421,1) (-218,-114,257,1) (-223,-161,406,1) (-367,202,224,1) (-253,262,-39,1) (-128,207,327,1) (268,-38,247,1) (-319,-148,-36,1) (-86,-236,102,1) (374,135,-215,1) (176,52,182,1) (198,-205,-381,1) (-80,-138,286,1) (96,245,260,1) (1,120,387,1) (263,-6,248,1) (-85,-479,-94,1) (-412,-185,24,1) (8,176,-214,1) (176,-203,-393,1) (211,-226,325,1) (71,-439,-97,1) (93,61,-45,1) (-311,-149,142,1) (191,186,46,1) (-326,-162,331,1) (-248,233,351,1) (114,-221,257,1) (14,-159,216,1) (282,-126,-240,1) (198,202,82,1) (31,319,368,1) (-255,77,-283,1) (4,7,427,1) (69,189,-179,1) (-39,274,244,1) (-214,-53,-79,1) (367,-220,-64,1) (59,363,-174,1) (-116,104,40,1) (-301,-81,-257,1) (-303,-331,113,1) (-87,172,-404,1) (-185,-283,284,1) (136,177,33,1) (276,304,-265,1) (12,221,176,1) (-231,-251,-194,1) (203,-219,-386,1) (141,-264,389,1) (-80,-30,-449,1) (258,43,63,1) (-46,-306,89,1) (-151,-236,358,1) (97,-242,-361,1) (-244,293,280,1) (75,-215,257,1) (227,-228,-154,1) (5,229,267,1) (219,300,273,1) (88,-150,-467,1) (-180,-180,287,1) (-52,-322,-1,1) (-142,182,-297,1) (-74,272,-203,1) (-403,-170,-191,1) (-84,-408,-89,1) (115,124,-308,1) (-227,326,-209,1) (356,10,-337,1) (124,140,-169,1) (111,35,257,1) (-142,332,245,1) (370,-272,-60,1) (-217,-148,-226,1) (-273,-336,106,1) (-48,185,169,1) (310,-8,-111,1) (-260,128,-82,1) (-259,-367,70,1) (-114,409,-200,1) (36,126,-199,1) (18,352,-35,1) (-400,193,115,1) (-39,-271,-299,1) (-207,96,-117,1) (-102,336,15,1) (43,-274,353,1) (-175,21,97,1) (-164,141,372,1) (46,114,-465,1) (-10,41,-339,1) (-2,-69,-154,1) (-294,-69,388,1) (-68,-241,371,1) (256,280,-57,1) (-432,-104,-210,1) (87,1,-150,1) (491,37,10,1) (-232,68,113,1) (-122,163,168,1) (-324,313,-124,1) (-266,230,-246,1) (-175,-187,-409,1) (-264,279,123,1) (-166,287,-361,1) (-232,233,42,1) (232,-306,97,1) (317,-130,-114,1) (-78,427,-97,1) (12,314,-308,1) (-1,-153,-38,1) (-483,-89,47,1) (-256,-1,90,1) (147,-121,338,1) (84,-97,283,1) (-384,-272,-21,1) (114,74,440,1) (94,-238,247,1) (61,14,112,1) (47,392,-75,1) (89,-306,-197,1) (-285,-321,-190,1) (-140,-17,-212,1) (-35,253,-29,1) (-176,-354,-121,1) (-201,291,266,1) (138,55,404,1) (145,98,-439,1) (-443,-152,-56,1) (-392,-33,146,1) (163,-153,69,1) (-30,-171,267,1) (-246,196,-383,1) (83,42,-147,1) (196,-30,449,1) (32,-361,-84,1) (77,-374,70,1) (-110,378,233,1) (-190,-451,17,1) (-166,339,-282,1) (73,103,397,1) (-329,117,193,1) (-247,-334,-229,1) (-192,379,-8,1) (80,-78,36,1) (28,-282,232,1) (168,-366,145,1) (-315,202,136,1) (67,-195,-231,1) (-71,81,-229,1) (431,122,-79,1) (-107,-161,-332,1) (-233,341,58,1) (-75,76,487,1) (323,-7,185,1) (-80,413,154,1) (228,-216,137,1) (-335,71,-115,1) (-424,-98,27,1) (-197,290,268,1) (228,-159,230,1) (208,-338,124,1) (-377,-121,276,1) (-418,-236,-112,1) (-159,-68,51,1) (-47,282,-237,1) (-42,387,236,1) (103,-73,225,1) (-138,-93,-24,1) (-57,170,363,1) (-148,271,109,1) (304,29,371,1) (-88,-219,231,1) (387,223,-123,1) (231,-246,345,1) (-238,105,92,1) (179,439,-144,1) (153,-289,-179,1) (-141,-36,-358,1) (-34,-73,328,1) (222,-55,-287,1) (-341,-100,219,1) (194,-60,143,1) (225,118,150,1) (59,263,152,1) (-75,63,68,1) (146,-73,178,1) (126,164,393,1) (143,-57,44,1) (168,182,-141,1) (-162,180,298,1) (-268,-161,192,1) (-48,388,-187,1) (257,52,392,1) (-245,-76,341,1) (-116,155,-345,1) (486,-35,-92,1) (-45,-45,-313,1) (-99,-359,189,1) (-196,-104,-412,1) (-124,89,-147,1) (331,75,39,1) (312,-72,315,1) (-178,-392,-173,1) (-227,-271,-260,1) (-367,-91,116,1) (-15,-285,-334,1) (159,-102,245,1) (-134,231,-373,1) (-253,-168,-386,1) (-120,240,230,1) (152,90,361,1) (-128,46,-159,1) (44,-121,-245,1) (56,-382,-174,1) (-97,-370,125,1) (-11,-123,456,1) (102,256,172,1) (-193,95,101,1) (-322,-67,32,1) (-22,-69,143,1) (318,348,30,1) (-80,-199,-369,1) (123,173,332,1) (231,-33,-200,1) (-54,237,54,1) (208,160,399,1) (15,359,225,1) (255,65,-333,1) (-210,264,-125,1) (323,114,59,1) (-97,310,349,1) (-228,-432,39,1) (-62,368,32,1) (-71,142,415,1) (-179,-187,-370,1) (-276,321,-167,1) (-76,-383,-95,1) (-49,473,-29,1) (379,90,-139,1) (-75,-133,-239,1) (208,-174,-348,1) (-127,20,-298,1) (96,-184,34,1) (259,-197,307,1) (132,226,424,1) (-18,-493,-63,1) (342,-69,303,1) (-271,-276,159,1) (-162,-225,366,1) (-90,147,-138,1) (111,-282,177,1) (427,84,181,1) (326,95,332,1) (124,11,355,1) (-34,421,-23,1) (327,7,195,1) (-21,127,147,1) (-66,30,-294,1) (16,-177,220,1) (-263,-172,-11,1) (170,357,194,1) (259,-336,-31,1) (156,-357,-205,1) (-134,-294,-181,1) (-368,152,129,1) (-476,-36,-5,1) (39,286,-310,1) (-5,-138,-247,1) (206,-296,-11,1) (-16,238,312,1) (7,-323,-218,1) (-269,132,204,1) (-135,-27,-459,1) (-266,-23,369,1) (305,-66,268,1) (-179,-50,300,1) (-371,-308,-101,1) (345,287,-21,1) (252,54,172,1) (-151,4,202,1) (221,352,-136,1) (70,287,-278,1) (390,-288,-97,1) (-98,479,87,1) (311,43,-191,1) (-159,-309,158,1) (257,-188,-18,1) (-177,20,312,1) (404,-193,-170,1) (-312,147,20,1) (345,-34,-113,1) (107,-302,198,1) (97,-149,410,1) (-167,383,155,1) (11,170,34,1) (317,222,-61,1) (-5,42,404,1) (55,-312,359,1) (-401,-241,98,1) (37,-489,3,1) (329,14,-136,1) (-127,228,68,1) (58,353,238,1) (97,232,-150,1) (109,-253,-86,1) (260,-144,156,1) (244,-263,278,1) (104,24,-364,1) (-68,-263,-294,1) (-229,-47,302,1) (302,-114,-276,1) (-375,-69,203,1) (-139,-316,-236,1) (101,-363,-280,1) (-11,101,-337,1) (-132,336,-195,1) (-31,-183,407,1) (114,-40,449,1) (-76,-371,196,1) (-290,299,10,1) (-61,238,264,1) (191,-32,-73,1) (-85,96,-402,1) (49,229,-435,1) (-242,-20,396,1) (1,-206,285,1) (-398,-52,130,1) (-306,353,169,1) (-209,-123,-127,1) (-144,453,-22,1) (-241,63,-54,1) (169,-25,14,1) (134,76,461,1) (-260,-157,-125,1) (-188,36,-297,1) (-171,-342,7,1) (-272,-202,-73,1) (364,131,9,1) (-26,-317,-54,1) (213,25,320,1) (77,-216,-440,1) (-208,208,30,1) (207,71,266,1) (-310,227,261,1) (2,16,191,1) (-8,-204,-301,1) (284,229,-34,1) (-189,-311,192,1) (282,360,118,1) (-260,-105,147,1) (118,-196,-95,1) (202,-259,33,1) (46,-344,-134,1) (-154,-406,57,1) (-73,-260,-378,1) (-141,338,174,1) (245,154,-152,1) (-414,-16,-108,1) (58,329,-15,1) (-230,158,374,1) (256,355,-78,1) (-125,-382,-227,1) (-35,227,-434,1) (-20,238,-402,1) (117,152,-367,1) (341,293,-50,1) (-27,425,76,1) (44,-235,306,1) (-95,49,287,1) (47,324,-69,1) (-235,-59,-346,1) (-173,341,192,1) (280,265,-19,1) (43,-213,-220,1) (-243,-103,-35,1) (-165,169,351,1) (115,118,232,1) (268,234,-339,1) (320,-222,138,1) (-56,34,-490,1) (408,-43,-119,1) (208,-188,8,1) (-253,146,-348,1) (99,-66,-122,1) (159,9,444,1) (-46,287,57,1) (398,-204,67,1) (-36,-460,-70,1) (211,185,82,1) (3,232,-312,1) (133,-194,121,1) (-106,392,-38,1) (-13,454,-144,1) (-7,-115,-482,1) (104,-102,325,1) (89,-162,430,1) (-6,231,297,1) (-19,280,-283,1) (153,-130,-371,1) (84,380,-133,1) (126,230,-111,1) (49,239,351,1) (-90,-304,106,1) (254,-93,330,1) (-20,-19,-123,1) (-68,-229,-376,1) (291,44,116,1) (119,-22,26,1) (-122,-73,251,1) (-41,358,83,1) (58,451,-46,1) (-175,-30,-454,1) (-408,38,-124,1) (-131,89,40,1) (327,-78,37,1) (-115,480,-37,1) (384,-129,-54,1) (-165,-119,-209,1) (-371,-191,-224,1) (13,-236,238,1) (-173,43,146,1) (-80,469,2,1) (353,22,65,1) (-388,230,29,1) (252,-223,18,1) (-260,208,-295,1) (160,152,206,1) (-335,38,188,1) (-365,-273,46,1) (-97,-116,362,1) (107,-481,-10,1) (-178,128,21,1) (140,386,-39,1) (-310,-125,-61,1) (-166,30,341,1) (217,-133,-77,1) (235,356,211,1) (-102,-23,358,1) (4,-186,375,1) (-103,-327,343,1) (-95,-152,-134,1) (246,-149,-379,1) (-198,-200,-121,1) (398,117,230,1) (217,-297,326,1) (-213,8,-316,1) (152,224,-151,1) (184,-55,199,1) (200,-5,-243,1) (-115,185,275,1) (442,58,-133,1) (147,-250,70,1) (-217,-192,-344,1) (315,119,-200,1) (-11,-102,204,1) (-183,-37,130,1) (-51,-66,151,1) (232,241,306,1) (-327,176,160,1) (-48,168,138,1) (242,319,257,1) (-400,137,24,1) (33,138,436,1) (11,-437,-155,1) (78,429,12,1) (-144,150,-374,1) (-188,-135,437,1) (194,165,-59,1) (-320,227,285,1) (-183,-4,346,1) (-266,-62,59,1) (311,-158,41,1) (-201,197,-334,1) (-76,30,-164,1) (35,131,-118,1) (-431,-82,223,1) (109,216,-105,1) (274,-385,-122,1) (-220,-50,-111,1) (468,-71,-39,1) (-152,43,-451,1) (-127,230,288,1) (267,-20,402,1) (-379,259,-173,1) (9,202,255,1) (433,-158,-33,1) (88,88,160,1) (-137,-207,-77,1) (-274,6,126,1) (234,-317,-144,1) (179,406,-2,1) (-207,233,41,1) (2,-65,-88,1) (-138,-16,326,1) (-230,325,-232,1) (-309,-16,-124,1) (317,-307,59,1) (-338,141,83,1) (73,-458,-126,1) (-252,366,141,1) (-419,156,-29,1) (73,309,94,1) (-36,-457,-36,1) (155,26,339,1) (-53,219,-127,1) (94,66,313,1) (-124,-178,19,1) (449,-201,60,1) (-202,46,-99,1) (-115,-325,341,1) (-83,-232,-115,1) (104,-216,144,1) (-108,-2,-176,1) (-172,374,145,1) (-119,-429,-35,1) (-130,-259,129,1) (-177,378,-13,1) (50,-406,68,1) (-255,-59,12,1) (-53,-216,396,1) (138,-322,120,1) (-126,-224,-294,1) (-309,110,-124,1) (-127,119,147,1) (-165,-28,293,1) (-149,-366,-191,1) (213,-277,-202,1) (4,134,74,1) (30,-332,-347,1) (205,6,277,1) (217,160,416,1) (292,89,-96,1) (-382,222,213,1) (43,-324,-178,1) (172,67,112,1) (365,154,-79,1) (12,-401,60,1) (163,347,-113,1) (295,239,-134,1) (-282,-254,-234,1) (277,-359,-70,1) (107,407,140,1) (345,-105,238,1) (-120,-467,60,1) (267,328,-225,1) (-127,-134,277,1) (-210,31,181,1) (273,-217,321,1) (457,31,190,1) (72,-149,-440,1) (-134,-282,312,1) (212,-117,257,1) (-5,-185,-236,1) (-281,-353,-180,1) (-380,174,-224,1) (-100,-485,-7,1) (-243,379,100,1) (174,-87,-219,1) (340,224,-37,1) (1,-99,268,1) (247,-363,170,1) (187,33,350,1) (45,-64,-248,1) (-140,-364,214,1) (-53,419,-153,1) (167,-173,-108,1) (405,137,56,1) (326,203,258,1) (151,-277,-330,1) (402,83,-195,1) (438,171,25,1) (-195,313,-273,1) (-61,177,-434,1) (-282,71,-375,1) (187,-49,261,1) (-282,-212,276,1) (-57,-411,-46,1) (-323,239,177,1) (-154,117,-265,1) (150,-316,-261,1) (-152,-99,197,1) (74,339,-151,1) (264,218,-154,1) (0,435,134,1) (-249,-146,222,1) (205,30,-63,1) (91,0,-288,1) (329,-177,-192,1) (213,170,208,1) (-115,-281,22,1) (233,358,53,1) (128,97,-254,1) (83,-177,9,1) (216,-141,388,1) (-262,-59,-170,1) (-58,33,-118,1) (-129,168,-152,1) (393,139,208,1) (256,-142,132,1) (-405,-211,-140,1) (279,26,300,1) (-415,-53,100,1) (-359,33,-150,1) (-130,370,-151,1) (-161,-236,-179,1) (155,36,-284,1) (-203,176,248,1) (147,47,114,1) (104,13,268,1) (-463,25,180,1) (-27,-10,-45,1) (398,-212,-25,1) (81,-103,-380,1) (8,83,-442,1) (233,117,-85,1) (116,385,-161,1) (-229,-167,328,1) (-324,-51,-275,1) (-407,-283,28,1) (-73,224,-414,1) (-15,354,-310,1) (-368,62,307,1) (46,-334,131,1) (-140,282,-8,1) (92,428,-45,1) (439,-103,-125,1) (188,-431,65,1) (-56,398,133,1) (-152,-172,-75,1) (-306,-62,251,1) (90,313,250,1) (-54,439,-67,1) (164,-12,333,1) (-173,56,-126,1) (-482,-76,-85,1) (309,125,-53,1) (113,234,-287,1) (105,149,146,1) (-163,34,87,1) (-105,-197,53,1) (-319,65,374,1) (127,73,-263,1) (369,42,150,1) (79,254,-270,1) (-297,-125,66,1) (233,-168,344,1) (-39,-87,-40,1) (46,400,283,1) (82,244,-200,1) (-64,0,-96,1) (-288,-160,19,1) (-320,246,-24,1) (181,-245,97,1) (-55,-228,424,1) (-148,402,-211,1) (11,-226,-172,1) (-183,-91,208,1) (98,248,-316,1) (-3,104,455,1) (-82,288,290,1) (206,-48,346,1) (216,92,-232,1) (178,-422,41,1) (24,126,-274,1) (-206,38,323,1) (121,151,-430,1) (-467,39,-13,1) (339,-108,37,1) (158,82,-16,1) (326,329,108,1) (215,320,240,1) (396,103,63,1) (179,112,179,1) (19,40,157,1) (190,-199,337,1) (-177,382,-204,1) (340,260,194,1) (135,-24,66,1) (325,193,-305,1) (-282,-20,-315,1) (237,342,-98,1) (-204,154,224,1) (339,328,130,1) (-380,181,109,1) (83,73,-267,1) (113,-30,313,1) (-65,-215,117,1) (148,-161,189,1) (245,167,-63,1) (-487,-91,14,1) (-465,143,-97,1) (-148,7,321,1) (-205,-75,-419,1) (411,-36,-15,1) (348,207,-120,1) (233,-150,316,1) (-8,75,300,1) (-16,76,312,1) (11,-33,-327,1) (-180,34,-167,1) (-94,-167,-344,1) (-106,-485,35,1) (-397,-136,-174,1) (-69,407,-77,1) (-49,376,209,1) (126,-65,-310,1) (-99,282,380,1) (3,-379,-318,1) (397,-3,139,1) (82,303,40,1) (-61,-95,475,1) (129,-88,217,1) (329,-209,95,1) (-137,129,-232,1) (-13,-373,-61,1) (32,-322,-181,1) (220,221,-64,1) (-2,-264,374,1) (-211,403,-73,1) (229,50,-15,1) (-377,-84,-204,1) (-88,-206,222,1) (-12,145,453,1) (58,-408,130,1) (248,268,28,1) (-54,98,244,1) (150,143,-258,1) (-33,265,157,1) (-40,139,70,1) (-112,-32,-388,1) (165,-330,44,1) (-115,-206,-330,1) (-98,475,67,1) (-86,100,-315,1) (-288,-261,215,1) (281,126,-341,1) (62,-203,-155,1) (231,198,-205,1) (-194,363,188,1) (-102,-12,-356,1) (318,-221,147,1) (8,235,360,1) (153,127,77,1) (88,473,4,1) (-106,-423,126,1) (63,-241,12,1) (-102,194,-130,1) (-296,158,32,1) (427,-217,-72,1) (155,26,25,1) (-346,-58,-224,1) (455,34,-58,1) (-122,-297,311,1) (81,361,-181,1) (-73,-378,-48,1) (121,-411,-73,1) (-221,343,-6,1) (-68,-239,270,1) (-138,-260,-221,1) (304,117,-18,1) (90,-327,-182,1) (408,100,-61,1) (-164,-75,-91,1) (305,273,250,1) (-85,-55,-139,1) (-33,197,225,1) (-210,376,-223,1) (176,362,-78,1) (79,183,-345,1) (199,-427,99,1) (-143,-217,337,1) (28,-359,-286,1) (-46,296,-262,1) (-394,133,159,1) (323,146,231,1) (-123,-196,386,1) (-448,-124,-40,1) (101,-85,458,1) (57,-174,-116,1) (-39,80,249,1) (-293,219,-229,1) (-297,-205,185,1) (-364,-102,-285,1) (166,92,-27,1) (177,-29,-159,1) (199,327,-14,1) (405,21,256,1) (-281,-311,130,1) (-359,211,117,1) (324,238,145,1) (-292,78,31,1) (-299,-218,151,1) (79,132,423,1) (-460,12,-81,1) (295,95,-290,1) (-314,313,-101,1) (315,-212,17,1) (-329,-65,-6,1) (201,135,275,1) (-173,373,209,1) (-77,-73,-184,1) (-179,-34,328,1) (240,-264,-102,1) (-177,-289,-27,1) (-72,43,-350,1) (-232,-75,-322,1) (88,390,-197,1) (-398,-122,-272,1) (22,63,50,1) (48,-184,-110,1) (30,243,432,1) (65,354,162,1) (-375,252,-116,1) (173,243,200,1) (220,79,-428,1) (-179,96,445,1) (-295,139,-288,1) (-161,-277,-149,1) (-69,-296,0,1) (316,138,208,1) (-17,200,-205,1) (333,213,54,1) (-94,-381,258,1) (143,-49,-297,1) (-117,438,37,1) (-46,-104,-288,1) (167,-75,11,1) (-47,254,-302,1) (-278,115,-239,1) (434,-73,70,1) (-94,-208,-158,1) (-397,-269,-56,1) (277,75,402,1) (-299,26,228,1) (-200,164,-242,1) (318,66,-144,1) (369,125,-195,1) (-35,305,-97,1) (-475,134,-36,1) (258,91,127,1) (-45,24,435,1) (-204,-107,297,1) (-91,-359,-123,1) (245,-85,-342,1) (151,-43,-372,1) (-352,197,-251,1) (407,125,-243,1) (-96,-209,-128,1) (220,206,29,1) (-153,-362,157,1) (-218,-55,235,1) (129,-256,230,1) (239,166,370,1) (121,-234,-398,1) (-253,-225,-2,1) (152,-393,-258,1) (-71,4,394,1) (-39,365,57,1) (-325,6,-98,1) (296,271,3,1) (-292,-351,78,1) (136,153,-53,1) (-31,-251,-226,1) (375,-159,210,1) (392,-138,186,1) (-367,14,113,1) (150,146,-167,1) (53,119,451,1) (-10,-167,390,1) (-204,-322,-300,1) (146,-89,-398,1) (-229,-226,271,1) (351,221,-22,1) (-341,87,273,1) (8,371,-200,1) (175,-355,281,1) (180,-328,322,1) (-40,33,-279,1) (154,-170,-160,1) (418,-151,-198,1) (333,36,165,1) (-12,207,-38,1) (-49,200,29,1) (187,-61,84,1) (2,202,210,1) (380,-275,-136,1) (-343,-118,255,1) (-180,-42,354,1) (192,459,31,1) (-123,-25,362,1) (-108,-169,-438,1) (255,-13,-57,1) (-15,28,133,1) (250,-292,-215,1) (198,-150,-112,1) (-180,-348,-119,1) (-276,165,-185,1) (87,6,11,1) (209,-201,-331,1) (-142,-230,411,1) (-147,-78,-233,1) (76,-438,81,1) (-196,-310,-126,1) (343,7,-68,1) (27,305,-78,1) (90,114,426,1) (-190,375,154,1) (-43,457,150,1) (-372,38,169,1) (217,-372,71,1) (416,-126,-190,1) (155,-86,226,1) (93,25,-128,1) (-109,-45,25,1) (119,412,-43,1) (-41,80,-328,1) (-324,-29,45,1) (-15,171,268,1) (-352,-133,-177,1) (-279,-174,-222,1) (-256,11,-34,1) (-85,187,437,1) (202,70,-205,1) (112,217,162,1) (434,66,97,1) (-325,182,-146,1) (-452,43,206,1) (-37,-295,118,1) (-103,-148,-324,1) (186,113,-392,1) (95,-346,204,1) (-172,439,101,1) (-162,-80,-83,1) (12,-422,-103,1) (286,-109,-348,1) (-121,288,3,1) (55,362,-101,1) (-80,-444,-113,1) (257,-25,303,1) (-255,52,-324,1) (-414,-67,104,1) (-334,-138,51,1) (-194,15,-319,1) (360,-148,80,1) (253,-138,262,1) (172,89,34,1) (-301,16,-239,1) (136,-7,477,1) (122,-222,-150,1) (74,-261,-413,1) (-131,153,-411,1) (-179,330,23,1) (-285,190,186,1) (-17,170,-151,1) (70,-109,-265,1) (-279,145,-181,1) (-113,-364,-221,1) (-149,-99,-205,1) (57,-221,-82,1) (-281,249,205,1) (-342,44,302,1) (115,71,338,1) (349,291,-42,1) (216,-50,238,1) (138,-16,303,1) (284,-266,305,1) (-36,-109,-176,1) (-259,158,-174,1) (1,-427,163,1) (27,136,-205,1) (-4,-173,244,1) (28,342,-352,1) (269,-25,-27,1) (-68,223,-156,1) (297,-133,120,1) (424,258,-26,1) (19,433,147,1) (344,181,-99,1) (-22,-181,-188,1) (-185,-366,228,1) (-194,41,265,1) (-266,-32,348,1) (-73,-267,165,1) (-305,185,180,1) (-172,-26,284,1) (-189,60,198,1) (116,-423,-62,1) (58,131,-147,1) (266,1,-91,1) (-93,-119,459,1) (-141,75,119,1) (157,-110,-188,1) (34,200,371,1) (145,349,54,1) (57,263,-16,1) (7,40,-269,1) (165,-244,-302,1) (52,230,-194,1) (263,-167,-178,1) (57,-118,-272,1) (-303,137,-75,1) (283,12,-54,1) (-61,406,255,1) (245,424,56,1) (-190,-241,-239,1) (-99,93,222,1) (250,86,-150,1) (-118,-68,353,1) (-87,167,107,1) (-308,69,105,1) (1,328,365,1) (99,-146,-117,1) (144,468,-52,1) (-175,-170,376,1) (431,-37,-82,1) (150,-369,289,1) (96,25,190,1) (-132,271,249,1) (-168,80,-126,1) (113,183,-130,1) (118,117,138,1) (-16,-316,185,1) (87,-373,153,1) (-46,60,127,1) (-240,-21,365,1) (129,-208,-25,1) (55,-154,181,1) (183,22,-15,1) (-112,-193,-17,1) (198,119,-1,1) (-267,-278,-116,1) (-401,-97,143,1) (77,-257,-253,1) (-311,-126,281,1) (-246,-220,128,1) (-106,235,-138,1) (-61,-92,480,1) (-204,238,80,1) (218,75,-356,1) (-178,-14,444,1) (-90,-103,-416,1) (-227,-88,53,1) (150,-13,474,1) (-360,-76,-230,1) (-353,-62,-194,1) (-350,127,-32,1) (10,463,1,1) (-224,228,-114,1) (45,231,3,1) (-153,-431,-135,1) (-99,119,401,1) (-304,-214,-275,1) (369,143,249,1) (296,48,-397,1) (347,325,141,1) (-95,164,336,1) (190,388,52,1) (181,91,131,1) (26,-291,-144,1) (-211,89,-73,1) (-379,-191,-212,1) (279,80,381,1) (-105,484,20,1) (-293,149,-116,1) (-136,331,-342,1) (-92,-323,-336,1) (-162,-157,59,1) (-165,-327,269,1) (-45,-113,298,1) (-321,-362,35,1) (238,181,1,1) (22,73,350,1) (45,407,-210,1) (-163,-115,-437,1) (-87,42,-431,1) (291,-354,74,1) (116,190,-44,1) (-263,370,-207,1) (149,-112,-213,1) (217,-94,435,1) (-233,287,245,1) (222,-124,200,1) (-10,-151,217,1) (-68,-255,233,1) (-121,256,256,1) (-211,218,94,1) (94,78,326,1) (65,452,16,1) (-260,-83,365,1) (165,-298,340,1) (-104,-9,33,1) (-295,-285,-215,1) (-89,-252,289,1) (-135,-96,-80,1) (104,320,-240,1) (36,143,-156,1) (71,-189,192,1) (-383,151,-72,1) (28,131,175,1) (-208,-70,-372,1) (-304,294,31,1) (115,-126,-173,1) (-147,130,-425,1) (-207,-331,-286,1) (221,196,344,1) (-169,122,-224,1) (-225,316,-165,1) (-235,-187,-369,1) (352,106,-201,1) (20,-20,-42,1) (296,254,-251,1) (21,400,-102,1) (-48,43,40,1) (-386,192,-124,1) (10,169,-52,1) (55,51,178,1) (171,-229,-41,1) (-106,-93,47,1) (103,-202,-232,1) (249,-394,172,1) (124,-338,-343,1) (-232,109,211,1) (318,88,-136,1) (-9,-90,-229,1) (-363,180,230,1) (323,176,185,1) (58,-214,308,1) (-218,-109,-45,1) (406,52,111,1) (69,288,136,1) (-133,-60,-204,1) (226,-16,-137,1) (107,-60,-149,1) (-139,-364,55,1) (-256,-274,-110,1) (404,158,-2,1) (311,-297,-239,1) (-78,69,200,1) (218,-229,-340,1) (-94,71,-482,1) (-311,-280,-259,1) (-67,-55,130,1) (-402,-219,-137,1) (-239,-266,-203,1) (1,166,242,1) (70,70,424,1) (108,282,305,1) (309,109,-373,1) (-403,112,167,1) (134,218,-1,1) (301,214,127,1) (-90,-92,-398,1) (-118,291,135,1) (-97,385,-243,1) (345,45,-55,1) (348,228,23,1) (448,-2,97,1) (189,-76,67,1) (180,-237,-74,1) (-196,-52,22,1) (-95,330,-211,1) (59,259,91,1) (83,-206,2,1) (-330,-310,141,1) (26,-10,-344,1) (161,287,84,1) (156,-96,-259,1) (-330,25,-107,1) (-16,153,-334,1) (-267,207,350,1) (-98,-293,340,1) (354,-24,141,1) (-132,-179,-299,1) (309,225,245,1) (203,-143,165,1) (339,-173,-256,1) (279,-344,219,1) (-75,53,-479,1) (-106,-17,-390,1) (381,39,-6,1) (169,-81,439,1) (-17,245,-342,1) (131,352,6,1) (-231,265,-315,1) (-156,-55,237,1) (-136,339,-305,1) (-27,-123,-198,1) (17,-190,210,1) (-415,-2,-114,1) (-209,19,70,1) (-55,269,352,1) (246,118,242,1) (-174,-14,211,1) (127,11,-354,1) (-46,-267,263,1) (-284,236,-162,1) (434,177,34,1) (338,127,167,1) (222,-273,123,1) (70,-75,50,1) (2,178,21,1) (69,192,234,1) (158,-396,234,1) (-44,399,-109,1) (-170,96,118,1) (-23,142,195,1) (-294,-113,-158,1) (185,-361,-106,1) (212,-123,212,1) (139,18,229,1) (-230,366,-220,1) (-141,302,0,1) (-191,-217,-112,1) (-138,-152,-215,1) (-339,-83,-58,1) (414,-45,-109,1) (168,-402,-50,1) (-91,-72,-307,1) (193,-7,422,1) (258,153,-186,1) (-325,1,-155,1) (56,-357,-40,1) (146,68,81,1) (-210,270,26,1) (-177,-199,168,1) (-233,104,262,1) (-177,382,89,1) (-68,102,93,1) (47,-98,-400,1) (110,224,-341,1) (-188,-296,45,1) (-25,280,-157,1) (-167,-156,274,1) (-240,-189,-76,1) (-241,76,-301,1) (-172,303,-304,1) (-56,-43,-188,1) (-306,-133,-277,1) (-14,-275,-66,1) (-200,-16,244,1) (223,-58,-311,1) (-1,-110,61,1) (46,-468,65,1) (259,-367,189,1) (227,77,-378,1) (-263,-269,212,1) (170,30,-329,1) (-110,-272,112,1) (78,227,-386,1) (379,125,-275,1) (-295,75,-385,1) (250,107,179,1) (-15,239,-156,1) (-313,-209,-35,1) (-63,-234,139,1) (-29,-104,-476,1) (225,-127,-363,1) (283,47,-24,1) (291,-65,-21,1) (-181,-296,158,1) (-21,-18,340,1) (-260,25,-209,1) (247,153,-79,1) (215,-4,394,1) (369,130,307,1) (-301,299,147,1) (336,-86,-137,1) (-370,117,-28,1) (265,-284,4,1) (-48,153,128,1) (-179,-3,-267,1) (250,159,-285,1) (351,-30,129,1) (-311,100,-279,1) (169,266,371,1) (300,-307,-1,1) (135,117,165,1) (141,-158,-201,1) (-40,-143,-157,1) (180,41,-111,1) (-104,227,-140,1) (214,18,-189,1) (296,119,-269,1) (-8,223,-218,1) (98,-37,358,1) (69,-142,250,1) (-271,-386,-123,1) (-210,-257,243,1) (270,-372,-26,1) (-157,91,-193,1) (211,255,-355,1) (50,-201,2,1) (-224,-166,58,1) (-217,63,171,1) (-123,214,-428,1) (-197,-40,-301,1) (-230,305,295,1) (-86,-170,-431,1) (416,105,-97,1) (109,254,315,1) (19,-300,-370,1) (-118,-360,-276,1) (276,-111,-239,1) (452,-195,14,1) (37,-91,-130,1) (313,-318,-100,1) (65,70,161,1) (-155,371,180,1) (21,-287,151,1) (181,-252,86,1) (21,301,221,1) (184,0,-348,1) (219,31,70,1) (-383,205,-226,1) (267,-139,21,1) (-171,382,-203,1) (23,366,284,1) (-470,-89,127,1) (-135,-422,-87,1) (210,426,152,1) (307,259,-4,1) (222,-34,217,1) (-255,392,-117,1) (-135,-308,241,1) (-363,-178,140,1) (101,125,274,1) (136,370,141,1) (-45,86,289,1) (427,-51,232,1) (-233,140,-52,1) (-276,-339,-170,1) (-2,300,-25,1) (145,177,-416,1) (194,454,-19,1) (207,368,-133,1) (-316,-61,133,1) (-214,13,-215,1) (-348,-10,-115,1) (269,-147,277,1) (353,-304,90,1) (-258,390,19,1) (222,72,-138,1) (172,-91,112,1) (-219,194,-400,1) (65,345,89,1) (450,69,-203,1) (-133,-117,209,1) (-277,-357,-94,1) (103,-227,131,1) (-137,-300,209,1) (-38,265,29,1) (-177,215,-113,1) (471,-8,28,1) (-389,20,-121,1) (241,-229,-202,1) (256,133,-2,1) (-97,-135,-416,1) (315,104,137,1) (279,-190,55,1) (-261,-363,-179,1) (-233,13,265,1) (75,266,-135,1) (86,-122,-380,1) (-222,255,-206,1) (-294,264,100,1) (221,-190,146,1) (-38,174,-292,1) (247,273,-132,1) (-337,-40,162,1) (-133,-55,-13,1) (165,78,77,1) (-48,-49,-188,1) (237,109,-229,1) (-354,311,-135,1) (306,-27,-303,1) (-190,-148,-179,1) (-98,-145,-315,1) (-7,2,305,1) (-13,-21,153,1) (121,-239,-399,1) (151,14,-140,1) (308,39,-319,1) (359,163,189,1) (52,159,-263,1) (60,-214,250,1) (218,119,-201,1) (-488,-83,45,1) (309,368,-113,1) (302,348,38,1) (142,-144,108,1) (-21,-268,137,1) (-350,270,-169,1) (-124,256,391,1) (-412,-26,-29,1) (-181,-413,120,1) (-436,-83,-137,1) (-393,258,23,1) (194,384,25,1) (112,320,-277,1) (387,92,-128,1) (175,-170,3,1) (-10,-34,429,1) (-415,29,-179,1) (-52,135,-446,1) (-133,34,34,1) (90,-104,-399,1) (-60,-427,-9,1) (126,80,-420,1) (30,165,108,1) (316,2,-56,1) (-461,-66,-152,1) (-361,-130,-106,1) (69,309,-34,1) (-465,93,57,1) (251,224,276,1) (-165,49,363,1) (53,-72,395,1) (-7,249,-283,1) (-55,287,150,1) (-31,304,128,1) (3,-128,-340,1) (-349,65,-229,1) (263,-284,256,1) (-219,-341,-180,1) (155,-210,242,1) (-83,443,154,1) (-199,56,-169,1) (-96,337,-10,1) (223,38,-90,1) (106,161,21,1) (-88,-189,-293,1) (138,-271,274,1) (34,29,-195,1) (-171,131,154,1) (239,-226,160,1) (-35,-323,-309,1) (253,88,1,1) (459,128,-25,1) (214,207,390,1) (46,298,-389,1) (375,-96,265,1) (89,177,-100,1) (33,31,196,1) (226,-229,-137,1) (96,-65,469,1) (36,108,-194,1) (-274,-210,-329,1) (-170,185,-153,1) (-430,-251,-30,1) (282,30,-359,1) (-44,-16,-135,1) (-301,-125,-74,1) (-76,164,96,1) (143,-26,39,1) (-13,-360,-110,1) (127,394,103,1) (129,-174,-438,1) (-234,-222,60,1) (191,201,-301,1) (-237,-181,172,1) (301,-234,306,1) (162,-217,-335,1) (22,269,-196,1) (-10,-1,51,1) (-146,-253,189,1) (-217,-259,34,1) (-441,7,-184,1) (221,289,-20,1) (-282,34,283,1) (94,380,-70,1) (-307,-258,37,1) (381,-238,-41,1) (243,44,200,1) (-247,103,-318,1) (-477,16,-21,1) (305,121,-141,1) (237,-310,-285,1) (-38,-127,426,1) (252,66,-356,1) (-236,-78,-95,1) (-103,-107,27,1) (-26,-398,51,1) (116,-89,64,1) (304,-176,109,1) (-246,-61,215,1) (-311,-261,-286,1) (-354,55,-309,1) (407,-34,27,1) (-143,67,-447,1) (280,154,86,1) (141,67,223,1) (-280,126,-297,1) (-285,-181,-58,1) (282,-129,-111,1) (-20,185,-265,1) (-185,74,376,1) (-105,7,301,1) (265,395,10,1) (247,-75,-90,1) (-92,-87,144,1) (78,-266,-284,1) (-86,418,-30,1) (148,46,-431,1) (-111,-83,79,1) (-408,175,9,1) (-279,-12,37,1) (-5,183,-277,1) (-146,254,-311,1) (-123,-44,-463,1) (326,-37,32,1) (-15,185,-84,1) (272,-208,-234,1) (-128,-294,271,1) (-26,-213,-354,1) (11,-412,108,1) (-67,108,-357,1) (-323,-128,-293,1) (47,-381,-2,1) (313,-4,38,1) (288,-201,263,1) (60,154,172,1) (130,93,-253,1) (-286,48,96,1) (49,-362,106,1) (66,-176,-171,1) (123,188,-11,1) (-272,-244,236,1) (-234,-68,-399,1) (-285,120,264,1) (263,257,-155,1) (-196,237,168,1) (133,229,-3,1) (422,-63,111,1) (29,266,85,1) (257,-204,-71,1) (-104,-24,-117,1) (-71,235,-350,1) (233,-53,317,1) (-159,-63,21,1) (18,269,277,1) (-127,-2,-322,1) (334,139,38,1) (288,276,194,1) (46,-231,-105,1) (-194,178,310,1) (150,155,-150,1) (-7,-53,-295,1) (-302,366,126,1) (141,220,-398,1) (57,375,-69,1) (300,-164,-195,1) (-126,-268,-78,1) (321,-64,160,1) (-27,2,468,1) (34,70,-241,1) (-3,-305,82,1) (230,-212,195,1) (287,56,107,1) (130,-121,-409,1) (151,384,-208,1) (-179,-125,-74,1) (-22,-30,-460,1) (-85,56,298,1) (388,-48,-97,1) (-258,42,90,1) (-104,46,-284,1) (-244,337,36,1) (62,291,-79,1) (-340,-30,68,1) (215,-257,-68,1) (-358,146,173,1) (-295,-73,-200,1) (-296,399,31,1) (-116,282,8,1) (-37,82,-160,1) (7,287,266,1) (306,304,203,1) (-177,77,353,1) (-221,-105,327,1) (-388,-303,67,1) (-135,-396,-137,1) (-319,-330,128,1) (-146,350,-260,1) (316,-93,79,1) (-201,-331,-180,1) (-180,-359,100,1) (364,-86,65,1) (-97,-160,175,1) (48,72,-32,1) (-197,118,-165,1) (33,326,-221,1) (65,-379,-80,1) (-360,304,163,1) (-208,278,56,1) (-89,-478,6,1) (-321,36,323,1) (341,113,-58,1) (393,-271,-36,1) (-240,20,-283,1) (315,201,17,1) (418,-175,138,1) (236,235,159,1) (-185,-114,314,1) (-267,-177,222,1) (-27,-492,38,1) (-243,185,268,1) (163,-96,-345,1) (348,136,-22,1) (45,167,117,1) (35,291,123,1) (199,-248,138,1) (268,126,-106,1) (-268,-131,71,1) (-346,-22,-158,1) (80,6,-213,1) (60,-19,113,1) (-266,232,-274,1) (-114,4,6,1) (-4,-426,-206,1) (227,-57,364,1) (404,16,50,1) (-40,336,-53,1) (71,-156,145,1) (-335,55,-148,1) (-206,160,-274,1) (289,234,19,1) (-9,-348,-141,1) (-153,-453,40,1) (185,58,401,1) (-392,69,264,1) (131,-441,189,1) (202,107,-315,1) (75,-346,293,1) (139,339,-174,1) (-92,-211,-40,1) (91,-95,-7,1) (-232,177,-197,1) (-432,176,-9,1) (73,208,234,1) (115,-392,-160,1) (-417,-125,-174,1) (260,177,-260,1) (143,29,-193,1) (-206,-311,-230,1) (181,303,196,1) (-237,47,-179,1) (102,130,195,1) (427,-135,-152,1) (-224,371,136,1) (45,347,127,1) (161,-466,-20,1) (-235,95,212,1) (92,28,425,1) (-69,179,415,1) (33,321,283,1) (-365,-43,316,1) (114,-459,109,1) (131,-195,-321,1) (-182,396,206,1) (-282,225,256,1) (-62,-369,-90,1) (-171,-37,-71,1) (66,436,-71,1) (155,332,205,1) (91,-160,1,1) (-151,-26,457,1) (248,194,-223,1) (-60,-347,12,1) (-149,81,-358,1) (-341,-239,232,1) (190,-434,-71,1) (12,415,-9,1) (-43,-169,143,1) (317,-187,-303,1) (307,138,15,1) (-289,8,-72,1) (-49,148,-438,1) (-105,-195,-239,1) (-20,-381,221,1) (-228,-69,417,1) (-52,95,74,1) (-203,30,69,1) (-76,-78,188,1) (-74,53,374,1) (74,-398,191,1) (-59,-59,32,1) (152,-450,-97,1) (115,-10,343,1) (-378,-171,181,1) (-184,-243,197,1) (-163,-293,-345,1) (154,254,132,1) (375,-35,-74,1) (31,280,182,1) (-143,-101,451,1) (-353,32,-229,1) (-37,-199,404,1) (-266,-58,360,1) (-105,44,-83,1) (-62,336,-297,1) (-113,-130,385,1) (-57,415,-202,1) (-236,-88,-401,1) (308,-278,-142,1) (262,108,228,1) (216,391,219,1) (-370,-95,317,1) (164,-146,389,1) (176,-219,271,1) (62,231,379,1) (204,61,33,1) (98,340,-281,1) (313,-255,-39,1) (-30,60,-429,1) (-429,-58,229,1) (-217,24,-260,1) (230,300,115,1) (167,-417,-207,1) (-388,142,-137,1) (-172,239,-360,1) (180,180,-417,1) (82,158,-27,1) (6,337,-188,1) (-7,-414,-233,1) (35,-352,-34,1) (151,-219,214,1) (233,-367,72,1) (91,215,-295,1) (-150,188,-398,1) (116,-301,-250,1) (105,18,465,1) (183,97,-448,1) (-127,-195,-316,1) (29,11,160,1) (-30,-244,322,1) (-91,62,-160,1) (-40,434,144,1) (144,353,15,1) (17,476,-77,1) (86,-409,181,1) (-181,-168,31,1) (-251,321,-63,1) (-109,-174,447,1) (91,317,118,1) (430,-247,28,1) (50,396,-144,1) (-38,474,-102,1) (149,16,26,1) (-177,321,333,1) (-246,-243,-128,1) (-128,24,-423,1) (61,-472,-88,1) (407,-145,68,1) (-246,378,144,1) (-196,289,148,1) (-159,94,171,1) (37,-370,198,1) (-427,-106,199,1) (65,-216,-407,1) (-53,138,160,1) (201,-8,-220,1) (449,-140,0,1) (69,217,294,1) (346,316,42,1) (242,-144,325,1) (334,303,-61,1) (-30,-21,430,1) (249,-97,-235,1) (-276,131,-112,1) (84,-239,235,1) (48,-91,116,1) (405,-270,-93,1) (-277,281,41,1) (161,-274,66,1) (20,-321,-227,1) (136,-65,-325,1) (242,-421,0,1) (122,-191,406,1) (-57,-313,51,1) (-252,-140,54,1) (-60,380,232,1) (213,-9,-358,1) (271,-239,-35,1) (110,327,-276,1) (62,133,212,1) (434,152,-161,1) (85,-475,-19,1) (144,104,-155,1) (-271,-94,69,1) (-133,148,147,1) (-288,77,-308,1) (-302,-131,-78,1) (213,163,93,1) (122,-209,431,1) (-223,-322,210,1) (-19,306,11,1) (-237,-113,393,1) (-39,255,-209,1) (-44,161,-179,1) (137,-278,-73,1) (-178,-442,129,1) (-12,38,-90,1) (230,36,294,1) (-315,65,8,1) (-357,-230,-47,1) (-108,406,174,1) (318,-296,232,1) (-78,191,-255,1) (331,165,-33,1) (-96,194,240,1) (310,-101,-248,1) (246,-336,-41,1) (-326,55,-159,1) (348,-152,44,1) (55,269,-290,1) (299,75,375,1) (-69,-104,251,1) (203,28,-35,1) (62,405,56,1) (472,-9,12,1) (199,46,-379,1) (-54,290,-25,1) (-144,-32,320,1) (-13,-171,107,1) (-108,284,-198,1) (32,137,-400,1) (90,197,-284,1) (37,-337,227,1) (-289,208,347,1) (156,-27,-203,1) (-98,102,-112,1) (-74,311,25,1) (-304,174,268,1) (88,-66,-455,1) (184,242,-140,1) (-93,87,408,1) (-38,35,423,1) (6,130,468,1) (150,-211,185,1) (-15,64,-454,1) (260,-39,91,1) (90,-200,238,1) (-284,88,-101,1) (-218,274,-168,1) (342,10,292,1) (-92,-61,314,1) (-354,334,-45,1) (450,196,67,1) (-374,244,4,1) (-129,159,67,1) (44,-21,290,1) (142,238,389,1) (338,-287,-1,1) (96,163,-381,1) (-185,-357,-11,1) (-72,-26,333,1) (156,71,-50,1) (-131,-65,-25,1) (20,-222,-212,1) (232,-239,286,1) (-374,47,-50,1) (-256,361,92,1) (232,310,-224,1) (239,-286,250,1) (47,369,-204,1) (-53,233,234,1) (-59,-257,-4,1) (5,-205,-314,1) (262,292,-79,1) (128,212,-86,1) (-236,-73,127,1) (333,-286,72,1) (-187,8,257,1) (187,20,-375,1) (-145,36,-125,1) (281,-362,-137,1) (230,109,146,1) (150,-232,134,1) (160,105,-431,1) (-32,318,140,1) (281,-199,-128,1) (-132,48,-301,1) (-134,-318,185,1) (-23,-329,-221,1) (37,-226,176,1) (23,235,97,1) (-46,-147,266,1) (75,172,289,1) (-98,74,-66,1) (378,244,212,1) (-178,50,70,1) (352,-328,7,1) (139,177,374,1) (231,348,-39,1) (-218,166,-374,1) (-385,-36,-154,1) (-401,-209,17,1) (105,352,167,1) (183,-34,-181,1) (33,-331,-357,1) (-37,-176,-181,1) (96,-363,38,1) (-35,-403,154,1) (-353,-8,258,1) (-7,90,-476,1) (-139,-15,-412,1) (323,308,-94,1) (242,129,-19,1) (266,113,151,1) (116,-260,-21,1) (-108,-227,137,1) (-324,179,70,1) (-332,-201,176,1) (296,279,-83,1) (309,197,-192,1) (-442,-190,-17,1) (236,379,-29,1) (-375,-175,-268,1) (-217,-87,378,1) (191,85,348,1) (-301,70,187,1) (277,74,-171,1) (-90,113,23,1) (-130,-185,206,1) (-80,-436,97,1) (-268,-333,-246,1) (-70,344,-28,1) (258,0,-9,1) (-246,-107,-300,1) (174,-44,297,1) (205,-63,443,1) (486,-106,28,1) (-392,-20,122,1) (348,285,-7,1) (-186,281,-123,1) (-107,-224,131,1) (285,-25,-220,1) (19,209,-427,1) (-19,-422,100,1) (88,57,-302,1) (255,257,-276,1) (-301,-10,-15,1) (-85,237,145,1) (-271,299,248,1) (271,-53,291,1) (-197,144,28,1) (91,-443,-71,1) (106,-238,127,1) (308,-133,-254,1) (-40,-328,-294,1) (-65,462,9,1) (-446,-35,220,1) (248,-321,154,1) (420,-3,185,1) (41,225,416,1) (-324,-35,-115,1) (320,-158,178,1) (-391,76,236,1) (243,350,-241,1) (51,410,-265,1) (36,-87,-35,1) (108,76,-11,1) (12,-32,378,1) (15,16,-251,1) (-15,281,-179,1) (-297,107,-185,1) (-38,-367,-299,1) (196,-129,-351,1) (-333,-258,9,1) (-262,239,-80,1) (-161,214,191,1) (-203,-390,-19,1) (-107,-224,223,1) (-285,-10,-192,1) (-195,219,-282,1) (143,-92,408,1) (-223,-201,-343,1) (-275,152,61,1)core++-1.7/progs/chull/inputs/Cube10000100644000175000001440000004136607437361200016672 0ustar joachimusers(-323,-24,241,1) (-30,-312,85,1) (-156,-13,-354,1) (323,-66,116,1) (119,-222,91,1) (-98,-78,324,1) (373,182,-67,1) (-171,-346,-16,1) (179,269,-76,1) (331,-338,-41,1) (-100,319,-18,1) (-80,-8,-114,1) (228,-77,335,1) (-367,-234,331,1) (164,-307,192,1) (-27,246,-189,1) (271,120,308,1) (303,-296,85,1) (-364,-1,-104,1) (283,332,334,1) (339,-304,316,1) (21,-169,10,1) (-373,357,247,1) (-21,-282,-363,1) (215,314,-350,1) (324,-27,-75,1) (108,39,278,1) (321,109,-56,1) (-308,43,149,1) (76,44,-103,1) (-217,-358,-170,1) (136,-266,-371,1) (147,-370,219,1) (-188,243,-48,1) (69,251,232,1) (-60,26,-97,1) (345,-31,-183,1) (-156,236,115,1) (252,319,63,1) (360,323,364,1) (-108,-253,342,1) (-356,-72,269,1) (-170,185,-148,1) (144,129,-82,1) (280,110,242,1) (-304,-36,169,1) (322,-366,32,1) (331,-254,-361,1) (-265,100,-61,1) (-34,326,-99,1) (-194,-274,-371,1) (210,245,280,1) (-281,-235,-48,1) (-273,-278,358,1) (-373,290,186,1) (121,295,-258,1) (272,18,-76,1) (75,-321,51,1) (-295,-228,190,1) (31,-126,286,1) (-261,-344,274,1) (275,232,-54,1) (270,-297,47,1) (-351,163,296,1) (338,98,204,1) (-171,-96,-371,1) (-118,329,-291,1) (29,-131,114,1) (277,228,307,1) (153,169,67,1) (-222,-249,-171,1) (352,-181,-148,1) (275,357,-36,1) (262,-29,249,1) (-302,-72,101,1) (171,93,-272,1) (50,-329,214,1) (-173,-295,340,1) (291,-329,-255,1) (-83,255,14,1) (-37,147,-170,1) (42,-97,-136,1) (21,-191,241,1) (-264,97,-185,1) (-213,-334,-320,1) (23,-289,-200,1) (314,-208,-81,1) (-148,129,56,1) (65,-168,333,1) (303,227,62,1) (62,65,-107,1) (245,-52,355,1) (300,32,-354,1) (-214,93,-48,1) (-291,176,140,1) (-130,-177,-40,1) (259,-41,-302,1) (283,35,177,1) (111,220,131,1) (-337,-11,-129,1) (72,-324,-51,1) (-80,-319,-240,1) (-183,15,150,1) (-235,270,78,1) (-163,4,-289,1) (-321,262,204,1) (-276,236,-226,1) (229,155,-189,1) (15,-93,-49,1) (-278,-37,85,1) (-87,352,-171,1) (-134,-322,-173,1) (-48,-269,169,1) (-338,168,318,1) (266,-327,208,1) (250,-281,-101,1) (346,56,358,1) (-241,-362,-347,1) (-36,-242,-98,1) (-310,70,-61,1) (232,-262,280,1) (137,78,85,1) (-322,358,-72,1) (66,61,-22,1) (153,35,-288,1) (165,62,-352,1) (195,-244,259,1) (-6,69,-158,1) (106,-2,72,1) (-76,-150,-56,1) (-23,-278,-348,1) (-275,24,93,1) (-15,-156,281,1) (-174,-179,-73,1) (-349,302,299,1) (-276,158,-204,1) (-51,147,45,1) (246,-54,78,1) (252,-259,311,1) (101,39,301,1) (-103,111,198,1) (136,226,-153,1) (8,324,178,1) (207,-325,42,1) (60,295,-165,1) (-277,282,196,1) (-267,123,-143,1) (-130,47,-373,1) (-262,321,290,1) (319,-62,339,1) (-289,372,-15,1) (-79,103,82,1) (-268,-50,-33,1) (-207,255,35,1) (-297,229,342,1) (124,239,-18,1) (-207,-328,-121,1) (273,31,174,1) (-273,280,51,1) (-196,19,218,1) (-309,-135,130,1) (343,345,-78,1) (148,354,-57,1) (-29,-210,-156,1) (17,43,259,1) (222,-6,-170,1) (67,-326,-44,1) (-348,251,-337,1) (174,-44,-348,1) (171,273,-3,1) (336,-271,334,1) (160,-329,277,1) (-231,267,232,1) (-2,200,329,1) (-45,225,355,1) (262,-121,-113,1) (288,-365,111,1) (214,60,-93,1) (259,-313,51,1) (-124,-318,-18,1) (-233,268,-14,1) (342,102,-335,1) (-353,-323,314,1) (-161,-48,-276,1) (-38,-116,-291,1) (-115,-9,82,1) (-54,332,3,1) (-252,165,-9,1) (-110,-217,351,1) (260,311,135,1) (-25,133,-231,1) (302,-94,-133,1) (164,-308,-303,1) (-13,-49,62,1) (271,-172,125,1) (-49,-360,-11,1) (215,-202,-309,1) (171,148,93,1) (-59,78,222,1) (95,-295,83,1) (244,154,-170,1) (-231,-127,94,1) (-112,-186,-341,1) (60,-121,204,1) (-158,-315,-297,1) (309,0,155,1) (102,-201,-273,1) (-121,4,200,1) (299,62,-315,1) (95,119,-284,1) (-350,335,-225,1) (-273,-5,150,1) (256,323,358,1) (273,-253,67,1) (-370,225,66,1) (-225,-109,-142,1) (-368,327,126,1) (351,-189,180,1) (142,59,2,1) (-184,-233,-255,1) (-258,-134,-169,1) (-129,115,272,1) (-301,265,212,1) (-273,218,205,1) (-306,48,130,1) (-120,40,-67,1) (366,-214,-277,1) (-95,-161,271,1) (146,-271,219,1) (98,-166,-14,1) (334,-212,-12,1) (367,214,57,1) (-235,-305,311,1) (180,2,95,1) (87,-282,256,1) (184,220,31,1) (46,-228,70,1) (278,-145,295,1) (48,17,80,1) (-265,-355,-183,1) (-126,-286,90,1) (-52,-135,182,1) (131,171,-299,1) (-155,22,121,1) (-9,-10,-48,1) (94,219,52,1) (276,-304,71,1) (-56,159,320,1) (-277,-38,155,1) (-264,-364,281,1) (-289,-347,206,1) (-56,271,-63,1) (140,242,-197,1) (101,-356,171,1) (89,271,-58,1) (-66,-101,100,1) (-145,9,110,1) (-360,195,-333,1) (-248,-140,-327,1) (-179,187,98,1) (-2,-361,116,1) (-198,184,24,1) (-261,-39,48,1) (235,-52,277,1) (240,-22,156,1) (-350,104,151,1) (246,-270,-311,1) (-306,103,-298,1) (184,279,260,1) (114,76,-365,1) (17,190,-30,1) (-135,187,239,1) (-30,-171,323,1) (359,-223,99,1) (303,-305,366,1) (-237,22,322,1) (-349,52,-214,1) (101,61,177,1) (-359,335,-46,1) (216,233,298,1) (114,-29,128,1) (20,123,-166,1) (-224,-353,-247,1) (-215,149,308,1) (174,-290,-374,1) (146,169,-359,1) (-98,-65,263,1) (209,195,-88,1) (-21,-341,257,1) (53,-270,262,1) (-120,-254,-111,1) (9,-45,285,1) (265,246,-122,1) (5,-209,164,1) (358,-175,-228,1) (190,252,-124,1) (-27,-136,131,1) (-222,251,-258,1) (-133,30,-346,1) (-107,348,276,1) (-347,269,-89,1) (292,65,-327,1) (59,153,-128,1) (205,-307,40,1) (-287,-63,193,1) (-309,309,-68,1) (-58,221,-40,1) (209,-81,-224,1) (-165,-54,120,1) (-166,2,-371,1) (49,-83,156,1) (295,223,143,1) (303,230,180,1) (295,-160,-181,1) (-88,-296,62,1) (24,-168,82,1) (-13,40,-155,1) (43,-143,137,1) (-16,146,20,1) (-363,134,-336,1) (270,-122,221,1) (-330,-337,-259,1) (-80,140,126,1) (-159,-350,-303,1) (-66,-119,208,1) (-143,-242,152,1) (-138,126,-100,1) (-254,153,342,1) (190,199,245,1) (306,4,-204,1) (-31,219,-353,1) (-140,243,-282,1) (168,300,216,1) (127,133,143,1) (363,45,-270,1) (-201,141,-319,1) (-5,216,361,1) (-161,182,163,1) (-243,-66,296,1) (-316,-138,185,1) (94,-101,77,1) (-225,-113,181,1) (-52,-23,-81,1) (347,169,50,1) (92,-33,-47,1) (-141,98,-51,1) (167,78,225,1) (39,-169,-239,1) (34,-66,-289,1) (295,33,47,1) (-183,327,-146,1) (186,-10,-202,1) (-109,331,125,1) (124,-221,-359,1) (231,241,-240,1) (-215,27,-174,1) (-183,-296,54,1) (-295,264,-198,1) (-26,-231,309,1) (267,272,282,1) (43,39,-127,1) (37,12,-112,1) (-79,-267,48,1) (-86,47,315,1) (-288,238,141,1) (318,8,317,1) (196,-14,-359,1) (339,-354,-44,1) (110,-124,-164,1) (287,-114,-191,1) (181,-83,-52,1) (-197,369,135,1) (-110,-42,-121,1) (-374,261,72,1) (196,87,-115,1) (-75,215,177,1) (-300,284,361,1) (261,76,-162,1) (-104,15,303,1) (279,-366,34,1) (269,181,241,1) (-83,232,217,1) (5,56,-23,1) (130,294,-158,1) (215,-45,225,1) (-208,64,-19,1) (49,-11,-170,1) (34,-339,224,1) (-48,-194,-266,1) (237,-130,-360,1) (-283,-145,308,1) (-67,-265,-127,1) (-239,64,-350,1) (-360,-183,-40,1) (-5,358,-183,1) (-233,341,-148,1) (-294,-85,179,1) (96,72,-317,1) (317,-226,240,1) (82,-369,217,1) (70,113,84,1) (-321,-334,180,1) (161,-143,321,1) (-147,84,142,1) (210,59,127,1) (-355,-274,58,1) (-206,-352,250,1) (-372,-183,72,1) (372,304,101,1) (333,-369,-155,1) (-328,326,72,1) (130,77,117,1) (-363,138,-373,1) (-286,338,-373,1) (73,175,183,1) (-46,-50,-366,1) (-363,-235,-361,1) (-144,-189,339,1) (302,316,-234,1) (241,-217,-223,1) (142,-316,289,1) (62,-314,210,1) (151,-316,153,1) (-161,-315,-44,1) (-281,133,276,1) (-195,285,-56,1) (298,-321,129,1) (-12,355,-205,1) (128,-54,-47,1) (280,11,-81,1) (-125,71,130,1) (6,189,336,1) (-318,-328,191,1) (333,370,-32,1) (330,-336,168,1) (-22,88,337,1) (-360,111,221,1) (26,258,220,1) (-49,184,325,1) (240,-134,-77,1) (265,99,256,1) (-168,167,294,1) (-145,53,-131,1) (-100,269,-345,1) (91,287,40,1) (275,281,-50,1) (188,193,191,1) (-38,152,101,1) (151,-293,-331,1) (-334,285,-102,1) (-311,141,-270,1) (-312,-239,-241,1) (226,-79,-8,1) (45,-131,370,1) (191,-89,268,1) (-281,312,-62,1) (-199,303,-19,1) (-159,-62,253,1) (-330,1,-255,1) (-226,63,-120,1) (-93,-55,-323,1) (240,-178,97,1) (-180,-183,266,1) (102,-116,262,1) (-111,-23,-76,1) (201,152,367,1) (-110,160,265,1) (279,-321,-182,1) (-2,363,-131,1) (340,-270,62,1) (-17,320,102,1) (246,-352,-202,1) (174,352,-295,1) (-108,239,-346,1) (232,-131,285,1) (-248,-244,-367,1) (0,-310,-172,1) (344,-71,-203,1) (-302,69,274,1) (-223,335,241,1) (363,-177,302,1) (-264,-218,350,1) (-153,224,204,1) (-207,-101,96,1) (300,70,-4,1) (195,-8,68,1) (219,324,231,1) (-40,37,-57,1) (-311,260,53,1) (99,3,-372,1) (-92,-297,-151,1) (282,16,283,1) (-67,-25,-167,1) (341,276,331,1) (-155,165,-87,1) (179,-309,326,1) (-100,-225,278,1) (57,355,-312,1) (-86,-13,78,1) (-108,-85,-145,1) (241,123,-293,1) (-68,-251,-32,1) (87,-99,14,1) (-34,369,4,1) (-358,-160,-208,1) (271,-322,223,1) (-23,-260,338,1) (193,-362,196,1) (-45,-281,78,1) (-358,103,-258,1) (293,82,12,1) (-155,99,5,1) (59,265,-373,1) (112,-162,-22,1) (226,-300,-334,1) (-231,192,-69,1) (45,-114,155,1) (82,2,-202,1) (-77,184,143,1) (-93,38,-265,1) (-108,-191,-67,1) (-242,-334,-72,1) (-266,40,-111,1) (-226,149,303,1) (-68,229,334,1) (9,-278,-78,1) (-351,-163,61,1) (103,50,-220,1) (183,-180,-311,1) (291,-271,-319,1) (-203,-171,320,1) (-244,196,331,1) (360,-120,-310,1) (-155,-13,-293,1) (198,-109,-322,1) (-349,315,-168,1) (-152,26,129,1) (104,-251,-72,1) (248,59,-206,1) (311,-231,48,1) (267,-288,349,1) (284,-330,310,1) (359,96,-16,1) (-55,-299,365,1) (-58,-371,244,1) (251,-347,129,1) (-204,-183,-146,1) (-254,-59,157,1) (-91,259,302,1) (-133,-295,234,1) (225,24,30,1) (63,100,-254,1) (103,-26,-296,1) (1,-95,172,1) (-336,134,292,1) (191,4,134,1) (287,8,-214,1) (87,103,-225,1) (-64,-105,270,1) (-146,-370,-30,1) (338,-90,158,1) (222,217,-301,1) (-35,207,237,1) (347,367,115,1) (-215,112,262,1) (-69,104,-306,1) (-265,73,-260,1) (247,24,283,1) (-27,-208,-209,1) (-136,-302,107,1) (162,261,374,1) (-145,142,-172,1) (-77,252,275,1) (-168,366,42,1) (-260,-325,-224,1) (-94,-160,-305,1) (-361,78,-289,1) (-127,47,-6,1) (-116,358,20,1) (-190,-140,138,1) (66,-146,-148,1) (-131,-32,-98,1) (19,248,116,1) (89,261,28,1) (347,-208,202,1) (-207,-13,335,1) (51,-305,-295,1) (33,-367,218,1) (-133,104,28,1) (308,333,254,1) (-349,-79,274,1) (-3,-115,-84,1) (-238,82,159,1) (9,-271,-306,1) (155,-226,-260,1) (130,-186,218,1) (-99,137,-73,1) (17,-332,-190,1) (-346,-233,111,1) (300,170,107,1) (109,-314,20,1) (56,-200,244,1) (90,-356,-106,1) (-163,-55,285,1) (-120,-130,24,1) (-344,55,52,1) (196,-154,294,1) (-148,-151,354,1) (246,279,121,1) (-127,272,-122,1) (337,290,146,1) (-219,-221,-170,1) (179,-191,259,1) (-247,-195,25,1) (225,314,-235,1) (-131,-11,137,1) (-134,98,-140,1) (-261,-301,-97,1) (65,-211,21,1) (-84,-308,-135,1) (-165,92,231,1) (-317,-370,-98,1) (-115,-197,-71,1) (119,-270,42,1) (-150,115,-264,1) (175,-301,280,1) (-11,346,-214,1) (199,-212,73,1) (-343,-162,338,1) (-339,114,275,1) (373,-204,-157,1) (212,67,-322,1) (177,-298,75,1) (-189,-229,-217,1) (-66,-243,-193,1) (-322,-212,19,1) (-176,16,-310,1) (231,-182,-140,1) (-275,-135,336,1) (294,158,-281,1) (343,-136,78,1) (172,-245,259,1) (224,-82,-371,1) (-35,116,355,1) (180,92,-109,1) (212,130,61,1) (-103,270,-295,1) (-260,-222,-202,1) (36,-76,-292,1) (157,0,201,1) (20,-136,99,1) (-215,129,96,1) (371,30,-218,1) (-120,-349,-139,1) (-6,-197,33,1) (-51,-351,-99,1) (-53,-17,-145,1) (-116,357,-235,1) (-269,197,306,1) (-225,-245,-273,1) (278,225,261,1) (-369,-159,-140,1) (-192,248,183,1) (-168,42,153,1) (-231,-208,28,1) (133,71,-211,1) (13,-81,115,1) (210,-62,-179,1) (-83,-313,132,1) (-78,-338,-269,1) (-132,147,288,1) (291,128,-331,1) (329,0,176,1) (-250,-217,339,1) (138,-285,299,1) (-85,349,206,1) (203,-311,-172,1) (239,-206,-343,1) (315,320,226,1) (-44,125,-296,1) (-1,-196,78,1) (-72,235,239,1) (324,221,-27,1) (72,-318,-182,1) (-228,263,-276,1) (349,326,-74,1) (-62,-43,-231,1) (159,-373,369,1) (126,-161,304,1) (-124,-261,352,1) (160,-77,165,1) (370,221,-324,1) (-166,-226,215,1) (74,-354,-112,1) (-272,-117,187,1) (-59,54,274,1) (-244,266,-216,1) (54,-219,-358,1) (-226,-308,-360,1) (-160,229,288,1) (106,198,44,1) (126,-199,-135,1) (58,-146,-30,1) (215,282,-161,1) (-161,-3,-183,1) (14,-35,362,1) (80,-21,298,1) (295,118,-67,1) (38,-334,351,1) (-247,-65,279,1) (119,274,332,1) (37,323,-320,1) (228,308,68,1) (21,-104,-331,1) (167,-172,161,1) (240,201,176,1) (128,52,53,1) (255,-184,362,1) (160,-193,-9,1) (-371,-166,336,1) (-158,190,-192,1) (361,-320,222,1) (-191,139,47,1) (-310,-99,117,1) (0,307,-288,1) (41,78,44,1) (294,286,-270,1) (168,305,-292,1) (-348,16,-357,1) (-293,-2,303,1) (181,134,-300,1) (-45,198,-353,1) (230,-335,22,1) (111,346,108,1) (185,-79,-171,1) (197,25,-311,1) (-285,-130,368,1) (-203,-104,-265,1) (-186,-23,107,1) (-191,-370,-362,1) (317,-296,-33,1) (-135,-274,-95,1) (122,33,-90,1) (160,205,363,1) (62,151,-176,1) (145,322,95,1) (254,-289,-331,1) (-276,360,65,1) (-13,-146,101,1) (-170,56,-345,1) (364,-79,234,1) (78,357,188,1) (-145,-142,374,1) (-168,-21,-372,1) (64,162,167,1) (333,116,312,1) (-61,345,-236,1) (-316,194,-287,1) (263,321,-309,1) (196,-140,-80,1) (-355,332,-197,1) (-2,96,-195,1) (-97,-51,316,1) (-99,-90,-22,1) (214,116,273,1) (-340,360,142,1) (32,207,69,1) (266,-153,237,1) (-131,-1,-345,1) (276,-22,70,1) (242,253,355,1) (-182,334,61,1) (213,96,175,1) (-295,-31,286,1) (197,138,-216,1) (9,252,-113,1) (282,-42,35,1) (238,-337,-20,1) (372,245,-65,1) (-139,-230,14,1) (205,-298,-350,1) (-32,273,163,1) (-48,-160,354,1) (149,102,220,1) (-219,-10,13,1) (-235,322,360,1) (-248,157,82,1) (-248,-247,-103,1) (-245,332,-27,1) (-221,-350,316,1) (-24,213,191,1) (107,-288,-357,1) (-323,-133,7,1) (64,6,-321,1) (-164,-266,-38,1) (265,-155,-146,1) (-19,-361,-285,1) (-337,-14,-131,1) (-313,-44,37,1) (-291,122,190,1) (208,241,-24,1) (-344,-194,30,1) (-134,-86,-207,1) (203,13,295,1) (-27,-238,308,1) (63,-201,-356,1) (306,-140,-25,1) (215,271,58,1) (-312,224,270,1) (193,213,70,1) (243,250,-76,1) (91,37,-182,1) (87,-198,-46,1) (-255,239,127,1) (-236,-105,361,1) (113,-18,167,1) (124,80,18,1) (-326,211,316,1) (99,-243,-81,1) (-110,111,351,1) (-238,-84,-373,1) (72,-17,-33,1) (-86,-166,-108,1) (288,-147,-220,1) (336,218,-113,1) (151,-28,-147,1) (-327,-239,-326,1) (51,-367,52,1) (79,245,-30,1) (-326,236,266,1) (-47,251,13,1) (297,-271,240,1) (344,-135,288,1) (117,290,295,1) (-117,-307,-276,1) (-178,335,113,1) (245,299,-154,1) (83,335,-292,1) (-182,92,96,1) (196,-314,184,1) (349,-349,75,1) (-6,-92,142,1) (93,-239,-31,1) (-39,-43,-156,1) (-192,-260,295,1) (359,202,85,1) (-365,-230,-362,1) (-172,237,108,1) (-333,-217,169,1) (225,-132,250,1) (17,236,-321,1) (-356,-147,15,1) (-25,72,197,1) (89,-25,-158,1) (-201,301,-271,1) (-259,-261,32,1) (224,-219,189,1) (-257,131,-15,1) (-19,-136,-118,1) (14,231,56,1) (-329,-223,-156,1) (308,-53,219,1) (247,62,333,1) (-370,-364,193,1) (-247,218,-325,1) (112,58,-213,1) (329,57,43,1) (313,-280,-330,1) (-112,158,333,1) (209,-273,-70,1) (-66,-368,272,1) (-241,-159,246,1) (-236,-346,-74,1) (152,85,343,1) (-185,-120,342,1) (-91,-241,291,1) (198,207,203,1) (177,-213,209,1) (-200,-361,342,1) (15,-62,153,1) (-34,-111,147,1) (78,-345,-161,1) (362,-361,137,1) (76,156,-120,1) (-71,-291,90,1) (292,103,-16,1) (-30,17,297,1) (-246,301,17,1) (-202,12,181,1) (-38,27,334,1) (-90,-239,-232,1) (64,165,-19,1) (-151,372,171,1) (-303,158,373,1) (-133,-79,-314,1) (-286,-93,242,1) (243,228,363,1) (318,-351,-223,1) (192,-345,-293,1) (10,-325,-268,1) (126,-254,-365,1) (-177,-70,-116,1) (18,-354,-88,1) (264,142,374,1) (228,-190,343,1) (169,-230,218,1) (-124,-110,338,1) (-167,-101,182,1) (30,203,-79,1) (288,-59,138,1) (-142,-19,-277,1) (71,-295,326,1) (256,56,-18,1) (170,-185,-210,1) (-311,-41,281,1) (210,-182,-31,1) (91,-203,-356,1) (-204,112,-52,1) (-177,41,304,1) (-80,93,210,1) (26,-270,216,1) (-207,109,-290,1) (-233,-124,175,1) (-357,48,193,1) (-187,-142,158,1) (299,180,355,1) (-309,-166,-5,1) (152,-4,-206,1) (256,-242,-350,1) (221,-55,-266,1) (362,196,283,1) (-173,-174,359,1) (216,64,281,1) (63,183,33,1) (33,-303,-361,1) (340,-171,176,1) (-146,7,-38,1) (-281,42,10,1) (-203,210,-44,1) (-60,-56,-121,1) (145,-240,-235,1) (48,167,119,1) (180,233,322,1) (-34,-240,347,1) (-137,22,-167,1) (264,4,4,1) (-34,-116,334,1) (280,202,296,1) (-67,-208,-356,1) (72,214,186,1) (-35,-317,-284,1) (57,-317,280,1) (-246,-337,59,1) (-300,183,-185,1) (78,155,336,1) (246,-215,-112,1) (-108,-331,195,1) (58,-312,248,1) (-43,-321,338,1) (-120,-255,-63,1) (63,-126,-26,1) (-70,-207,4,1) (351,262,101,1) (142,-142,261,1) (125,304,-51,1) (366,-59,-36,1) (273,-347,-228,1) (-185,-197,20,1) (163,107,188,1) (-79,-111,-133,1) (291,343,-217,1) (-266,-46,233,1) (-139,140,349,1) (176,44,-337,1) (-201,2,-310,1) (-323,-258,-163,1) (-134,-80,231,1) (-231,-326,237,1) (32,-84,-122,1) (-92,36,16,1) (-63,-53,-81,1) (182,113,-291,1) (-344,-118,-116,1) (-280,-67,0,1) (-69,173,294,1) (-73,46,-344,1) (-25,-367,63,1) (265,-115,345,1) (248,295,-289,1) (-316,-171,149,1) (171,-179,232,1) (53,-149,311,1) (-54,-228,-338,1) (251,320,330,1) (138,-274,169,1) (-54,-267,-7,1) (301,184,-362,1) (94,297,129,1) (-35,-289,-306,1) (54,14,-303,1) (90,-229,128,1) (362,-129,-353,1) (-342,-21,346,1) (278,153,358,1) (14,338,-192,1) (268,-183,147,1) (110,-98,-110,1) (178,-173,319,1) (-102,-241,-361,1) (-96,34,150,1) (55,32,199,1) (-340,-121,-93,1) (48,-150,230,1) (-214,-273,-48,1) (63,-8,264,1) (-339,-206,327,1) (73,-289,274,1) (140,31,-243,1) (-1,10,280,1) (-22,234,250,1) (76,-340,-177,1) (26,258,61,1) (29,347,229,1) (-293,246,-348,1) (-208,-130,307,1) (276,203,-228,1) (134,-232,27,1) (-197,-213,-15,1) (-171,188,-204,1) (264,-157,-352,1) (114,-130,-185,1) (359,-157,-15,1)core++-1.7/progs/chull/inputs/Cube20000100644000175000001440000010204107437361200016657 0ustar joachimusers(66,178,-77,1) (-108,210,-307,1) (-262,-144,252,1) (-82,43,24,1) (139,295,-298,1) (254,-361,-46,1) (-154,-245,-251,1) (-330,195,-326,1) (223,-60,155,1) (222,-270,-176,1) (372,22,242,1) (-253,47,302,1) (-216,-94,-137,1) (-78,-298,-8,1) (45,-253,93,1) (344,-151,189,1) (282,86,-192,1) (-241,236,-71,1) (-356,-367,-304,1) (321,-208,-241,1) (-186,55,181,1) (93,-82,311,1) (-152,-324,332,1) (330,-153,68,1) (325,30,201,1) (-89,333,220,1) (-81,-109,85,1) (316,-158,218,1) (86,31,-68,1) (-101,29,-259,1) (251,-209,12,1) (149,234,-84,1) (-176,109,321,1) (61,75,326,1) (-163,-259,201,1) (-76,-140,251,1) (-244,263,366,1) (-310,-136,250,1) (32,-166,-355,1) (230,-178,-311,1) (-78,-57,-347,1) (58,-210,235,1) (24,-164,-363,1) (-338,-125,188,1) (-49,-316,208,1) (-120,69,-252,1) (365,65,338,1) (204,270,368,1) (-145,323,-258,1) (66,295,-247,1) (-7,332,2,1) (-198,251,-148,1) (364,-90,-78,1) (164,365,287,1) (81,236,-298,1) (-231,49,348,1) (-331,66,-102,1) (80,183,338,1) (-275,310,-319,1) (-337,-143,33,1) (-111,-40,173,1) (-132,-208,-313,1) (348,39,204,1) (182,349,-120,1) (-354,106,321,1) (-81,-146,-365,1) (-337,-106,-176,1) (-186,-160,158,1) (361,83,324,1) (41,292,121,1) (-153,-104,-14,1) (-176,241,-155,1) (76,-88,138,1) (-14,140,119,1) (-5,28,156,1) (-214,-46,-16,1) (142,-146,72,1) (191,-373,-167,1) (122,291,54,1) (-372,253,363,1) (243,-211,-40,1) (149,19,-40,1) (-345,-275,-265,1) (13,242,-276,1) (-120,171,8,1) (-372,-57,-350,1) (57,-314,-348,1) (-340,269,148,1) (-184,85,-46,1) (312,-47,-17,1) (62,370,4,1) (161,-176,-318,1) (-355,64,-38,1) (88,-171,23,1) (114,-137,-204,1) (-267,-281,-267,1) (255,-91,192,1) (146,-98,-191,1) (230,-147,-358,1) (-51,177,147,1) (233,342,166,1) (-352,114,110,1) (317,-125,46,1) (-318,153,312,1) (-94,-305,-192,1) (182,-9,-238,1) (-207,-64,-221,1) (-259,259,330,1) (-336,-244,-86,1) (296,-64,-156,1) (149,369,-206,1) (321,88,-308,1) (270,248,331,1) (-78,218,-372,1) (-338,333,-208,1) (-168,306,274,1) (-251,82,60,1) (126,185,165,1) (-276,-134,151,1) (-285,371,-321,1) (353,-60,-319,1) (-204,73,-37,1) (279,-100,222,1) (233,-154,356,1) (13,280,151,1) (-93,-244,-314,1) (-146,-73,-53,1) (-312,16,-255,1) (69,-277,124,1) (212,-106,-89,1) (-365,231,-352,1) (288,244,-128,1) (-202,94,103,1) (80,224,164,1) (-124,198,-169,1) (317,298,274,1) (139,-252,-298,1) (-361,33,-289,1) (244,55,374,1) (99,-351,-115,1) (57,-69,26,1) (-262,331,310,1) (196,-23,-156,1) (208,330,-287,1) (-372,221,142,1) (-329,165,346,1) (-70,2,268,1) (361,307,-356,1) (223,186,335,1) (-133,311,-5,1) (245,346,-369,1) (-197,186,103,1) (105,167,86,1) (-169,212,-23,1) (169,228,-366,1) (188,-199,194,1) (120,-218,-145,1) (223,229,111,1) (198,144,43,1) (-339,-183,248,1) (248,-207,149,1) (114,144,-331,1) (-308,153,231,1) (-133,-303,-299,1) (-273,-143,-44,1) (81,-119,-340,1) (367,232,348,1) (305,-274,79,1) (-301,-239,271,1) (321,-179,-152,1) (-68,-136,-86,1) (156,257,-248,1) (-181,-265,-181,1) (-147,-353,369,1) (216,-201,289,1) (-329,-40,232,1) (155,-374,-85,1) (348,212,229,1) (107,52,-33,1) (233,-10,161,1) (342,184,363,1) (94,198,82,1) (-340,107,255,1) (323,152,49,1) (-366,-69,-369,1) (163,-69,-93,1) (220,242,15,1) (-179,-50,162,1) (-218,-327,249,1) (340,-38,-215,1) (-16,-181,24,1) (-32,273,38,1) (347,319,149,1) (-61,163,134,1) (330,-353,-306,1) (-6,177,331,1) (336,-162,100,1) (-346,-4,296,1) (272,100,-340,1) (-203,354,70,1) (111,-133,-41,1) (-296,-361,-315,1) (-182,28,-286,1) (-248,-27,-220,1) (-179,365,150,1) (-13,143,-58,1) (22,64,113,1) (-274,-33,-182,1) (45,-169,-131,1) (-318,61,84,1) (-66,172,-367,1) (281,141,-213,1) (-144,311,318,1) (218,-196,242,1) (98,-310,101,1) (46,31,293,1) (-36,-127,-331,1) (-160,104,-11,1) (-279,-272,43,1) (26,-111,-130,1) (257,-175,-272,1) (-211,345,-5,1) (-147,-204,258,1) (-270,58,313,1) (-23,102,218,1) (191,287,343,1) (-264,-157,-371,1) (-20,-107,-351,1) (-344,-210,-188,1) (159,39,-76,1) (-353,359,28,1) (79,22,-79,1) (179,362,321,1) (289,324,252,1) (-113,282,51,1) (7,1,-98,1) (-142,22,261,1) (8,-10,-27,1) (285,217,-132,1) (217,-254,-111,1) (286,189,-360,1) (62,-179,65,1) (24,202,-1,1) (232,-229,-157,1) (-177,207,352,1) (170,-157,-81,1) (39,367,-327,1) (-202,251,-113,1) (174,324,370,1) (6,-302,-78,1) (-249,-39,178,1) (-236,-264,290,1) (308,-47,71,1) (-263,-28,-211,1) (-215,145,-230,1) (71,-349,318,1) (11,349,38,1) (335,121,244,1) (211,-15,150,1) (95,-210,197,1) (-276,70,-218,1) (-332,-188,10,1) (295,-107,137,1) (67,-339,246,1) (164,-226,-254,1) (53,243,-89,1) (15,9,-102,1) (-251,-59,-331,1) (127,-247,-18,1) (284,250,11,1) (-299,202,-7,1) (-264,-35,-218,1) (356,-70,-94,1) (-262,-119,-88,1) (121,-152,185,1) (-76,-28,-333,1) (15,-23,-205,1) (4,334,-332,1) (-362,-66,53,1) (-287,-177,-174,1) (-321,-142,-40,1) (-245,215,42,1) (-36,262,-241,1) (304,149,-222,1) (-230,-81,-369,1) (-310,-199,-169,1) (-295,-116,-151,1) (218,-21,303,1) (-217,346,253,1) (-296,147,-93,1) (227,299,-270,1) (105,136,-5,1) (280,-111,-28,1) (285,-47,147,1) (-56,226,-275,1) (168,36,317,1) (-311,266,-320,1) (-38,308,76,1) (132,-330,-360,1) (-100,273,-97,1) (246,-92,230,1) (-256,-251,344,1) (-152,66,-269,1) (-63,-206,364,1) (-151,134,-111,1) (-17,-278,229,1) (338,221,-156,1) (-219,208,127,1) (326,250,284,1) (21,-300,126,1) (361,12,294,1) (76,-61,203,1) (-83,299,219,1) (-300,-122,83,1) (-38,374,-332,1) (117,-67,169,1) (-147,-231,4,1) (327,-53,149,1) (-247,261,16,1) (-313,-186,-235,1) (-21,358,53,1) (-284,-209,-184,1) (127,-153,126,1) (-178,-169,269,1) (-317,209,235,1) (64,-88,-60,1) (39,-47,100,1) (-261,92,-200,1) (-143,-334,-34,1) (47,-39,183,1) (37,-344,-335,1) (-53,265,-342,1) (-28,322,-60,1) (-103,-374,10,1) (92,218,-40,1) (267,1,-154,1) (-45,182,-134,1) (211,-285,277,1) (193,308,233,1) (-226,-77,265,1) (-175,206,139,1) (-142,206,-96,1) (242,-351,290,1) (296,-73,247,1) (257,21,49,1) (138,125,150,1) (-35,-217,-267,1) (113,80,372,1) (-3,279,333,1) (-231,134,47,1) (157,157,-106,1) (83,-203,-8,1) (-210,-169,-161,1) (-254,343,338,1) (270,-342,145,1) (-74,99,-218,1) (-302,-303,-71,1) (120,228,-338,1) (303,85,-237,1) (290,-24,-339,1) (-17,-335,306,1) (15,33,-190,1) (-260,-361,197,1) (-188,-289,306,1) (313,311,45,1) (349,294,-302,1) (120,45,158,1) (257,-40,-202,1) (-5,156,-349,1) (59,-308,-84,1) (182,-194,-71,1) (-271,-8,14,1) (-351,-322,265,1) (68,-91,140,1) (-128,328,-352,1) (-362,-179,8,1) (351,33,246,1) (340,27,-268,1) (36,-337,-72,1) (-49,256,228,1) (-116,218,-94,1) (327,231,101,1) (139,-198,-53,1) (-4,-363,-187,1) (-200,-81,-267,1) (353,329,-230,1) (-368,104,-239,1) (-43,-70,-299,1) (282,-41,356,1) (-150,239,34,1) (-309,-133,-156,1) (-235,-360,-144,1) (-48,-186,245,1) (-78,351,-75,1) (66,357,202,1) (-336,-317,-56,1) (-261,72,296,1) (-200,-338,-320,1) (-273,-32,-204,1) (-17,26,-161,1) (171,23,-276,1) (-266,-116,-246,1) (-296,30,155,1) (-122,66,209,1) (-142,167,161,1) (331,-158,-293,1) (-292,104,205,1) (203,8,273,1) (-148,-190,287,1) (214,-208,-292,1) (-370,-60,171,1) (-114,-79,30,1) (-210,247,-352,1) (-128,-15,127,1) (-237,-320,-238,1) (62,1,289,1) (-247,61,37,1) (227,-336,41,1) (-47,-21,213,1) (274,-34,155,1) (177,-340,-78,1) (-346,-203,-163,1) (-292,-67,145,1) (-71,-60,-216,1) (-296,67,139,1) (24,18,-283,1) (62,44,369,1) (40,-315,136,1) (-172,-336,-137,1) (-81,-308,34,1) (130,-225,342,1) (69,294,-301,1) (-199,213,199,1) (-199,304,-302,1) (327,-321,-209,1) (190,-6,228,1) (231,-347,294,1) (157,331,87,1) (327,335,-111,1) (-328,-37,60,1) (-153,46,-195,1) (-311,-203,-257,1) (-37,243,307,1) (331,-24,-115,1) (-88,3,-99,1) (347,-216,284,1) (171,48,34,1) (31,94,372,1) (316,363,-139,1) (33,352,370,1) (-55,201,51,1) (295,337,-351,1) (363,60,219,1) (203,-85,320,1) (85,334,136,1) (-249,47,371,1) (-176,-246,323,1) (-282,293,-101,1) (287,103,310,1) (-183,218,251,1) (-38,-180,46,1) (251,-189,8,1) (-78,271,-308,1) (113,153,367,1) (312,282,40,1) (130,32,48,1) (-330,364,354,1) (-308,287,-77,1) (318,130,259,1) (-139,-326,-92,1) (157,319,-26,1) (-61,65,-217,1) (123,98,197,1) (-122,300,357,1) (175,71,352,1) (242,-291,-90,1) (213,259,-228,1) (113,-180,1,1) (-281,314,-71,1) (130,86,28,1) (-367,280,-70,1) (263,-316,312,1) (71,-233,311,1) (355,354,-80,1) (-183,-236,-328,1) (139,-345,-197,1) (-161,308,299,1) (-38,261,306,1) (167,268,-104,1) (-220,227,-275,1) (-162,-111,171,1) (-20,-124,-316,1) (-155,-272,-124,1) (-16,-225,-188,1) (-315,-158,-349,1) (-102,-224,333,1) (112,-56,227,1) (78,-155,348,1) (-173,-314,-32,1) (181,219,240,1) (-169,321,189,1) (-348,36,-132,1) (61,-223,18,1) (-256,-302,62,1) (300,-68,-103,1) (-370,-114,316,1) (88,-230,362,1) (363,233,35,1) (73,106,-145,1) (100,-265,342,1) (-72,-114,-289,1) (47,-41,-128,1) (-269,-124,-9,1) (169,-322,-104,1) (-177,30,-55,1) (6,175,-72,1) (-127,284,176,1) (-295,-147,-355,1) (-164,-109,-311,1) (141,-123,232,1) (194,-320,301,1) (-118,-290,-259,1) (146,12,-12,1) (-220,6,-326,1) (86,-98,105,1) (266,112,370,1) (151,175,-139,1) (-243,170,308,1) (-178,202,-207,1) (317,313,10,1) (-344,-173,-233,1) (306,20,254,1) (26,-221,261,1) (298,-89,41,1) (105,-106,-237,1) (-288,-243,-322,1) (289,-76,-324,1) (-44,61,-14,1) (-198,-95,294,1) (3,-341,-341,1) (53,39,59,1) (-52,193,-330,1) (85,75,-278,1) (21,213,-191,1) (152,265,315,1) (-222,-274,139,1) (191,-98,-165,1) (279,312,-146,1) (34,-279,176,1) (-234,147,225,1) (159,-316,123,1) (-226,-76,-341,1) (-314,172,251,1) (-183,-60,-259,1) (133,-31,-161,1) (228,-210,368,1) (16,-56,-37,1) (-86,-315,-254,1) (373,-38,371,1) (276,182,-13,1) (-132,-290,200,1) (364,189,-30,1) (307,307,125,1) (-229,154,2,1) (149,-240,-42,1) (-288,-319,-113,1) (-10,355,279,1) (351,363,-99,1) (317,-44,-362,1) (296,-187,319,1) (-229,-41,-177,1) (148,-134,346,1) (282,-168,-346,1) (206,-81,-290,1) (-273,-320,355,1) (91,-16,-208,1) (356,-303,67,1) (123,56,-298,1) (70,-153,-50,1) (268,369,190,1) (-36,1,-7,1) (-334,77,-233,1) (131,104,232,1) (-110,-185,93,1) (273,245,-103,1) (24,321,-111,1) (213,86,262,1) (-246,-232,219,1) (319,-318,-300,1) (-227,288,-36,1) (36,-66,225,1) (117,-180,-351,1) (-88,333,-230,1) (19,7,-313,1) (-74,280,354,1) (-257,111,-332,1) (-297,-24,96,1) (-273,38,290,1) (-250,-97,155,1) (36,-87,-114,1) (-270,306,-137,1) (-351,-337,-284,1) (-290,-36,364,1) (-67,331,68,1) (50,-208,110,1) (127,-336,48,1) (134,-225,-338,1) (-287,304,73,1) (-326,333,-222,1) (248,-198,285,1) (-364,-114,-93,1) (199,43,331,1) (365,-191,338,1) (231,-112,250,1) (42,37,287,1) (129,-309,-290,1) (177,-367,330,1) (255,337,-110,1) (348,-258,-136,1) (216,-283,145,1) (-235,135,-174,1) (13,9,258,1) (-299,326,7,1) (-93,-37,-28,1) (47,38,-21,1) (-186,-282,-151,1) (223,-310,87,1) (-211,-218,-72,1) (291,-218,-217,1) (-346,166,-271,1) (131,285,-258,1) (372,-112,163,1) (-240,242,351,1) (-148,200,227,1) (-200,-200,-135,1) (-140,-36,21,1) (-184,266,-338,1) (-27,-310,188,1) (-207,-6,-177,1) (-144,-261,-311,1) (2,227,-287,1) (-72,-61,168,1) (114,-58,-320,1) (353,176,18,1) (-276,367,-366,1) (-240,-310,-176,1) (-30,-9,-79,1) (168,-62,151,1) (281,2,103,1) (-367,190,-119,1) (144,-239,-32,1) (-185,-329,-14,1) (207,-231,-297,1) (215,-97,-233,1) (-3,101,-306,1) (342,-11,-140,1) (-245,131,-32,1) (84,339,-8,1) (-296,-198,-361,1) (-251,163,220,1) (-108,240,-214,1) (169,157,-151,1) (-210,83,-346,1) (-51,71,-4,1) (-178,-121,-330,1) (218,37,43,1) (-306,213,56,1) (-183,-274,-373,1) (84,341,-213,1) (73,318,-127,1) (37,-25,373,1) (66,298,-206,1) (-327,-335,265,1) (-345,-74,-342,1) (-277,89,-86,1) (90,372,305,1) (251,350,-272,1) (-81,322,-25,1) (-189,105,161,1) (-172,-197,-191,1) (-4,-346,43,1) (-371,-342,-342,1) (-157,-309,-245,1) (-294,154,43,1) (-330,-234,349,1) (219,162,-223,1) (-326,209,-181,1) (-309,189,-346,1) (-343,337,-311,1) (-321,-182,207,1) (236,-345,175,1) (-256,216,180,1) (-272,331,-345,1) (-281,219,238,1) (-88,284,-20,1) (313,-249,344,1) (367,352,30,1) (186,-88,110,1) (-326,-359,-345,1) (346,-316,-327,1) (-84,296,-41,1) (-373,-216,237,1) (-248,-68,359,1) (-310,305,182,1) (-360,7,201,1) (-261,223,340,1) (238,294,-65,1) (-371,342,225,1) (299,-349,149,1) (300,-190,-263,1) (-251,43,365,1) (107,20,14,1) (121,-49,-328,1) (-183,88,-268,1) (224,-323,-323,1) (-132,-14,-320,1) (353,84,4,1) (-230,195,-220,1) (-107,-274,69,1) (-110,114,-358,1) (-31,-287,69,1) (20,-236,312,1) (-182,246,315,1) (206,-250,-100,1) (350,319,54,1) (282,-76,-306,1) (-299,188,182,1) (204,-28,85,1) (-47,40,-133,1) (-201,179,371,1) (149,219,267,1) (-294,343,12,1) (-54,-356,244,1) (-280,-218,-1,1) (-290,360,345,1) (-338,-205,-352,1) (62,-299,-254,1) (-350,337,127,1) (243,-46,207,1) (-64,-154,-12,1) (322,166,-264,1) (341,-240,-84,1) (-74,-374,-205,1) (-357,-258,79,1) (-137,45,-113,1) (-268,-80,60,1) (-210,280,-160,1) (-204,-50,177,1) (-70,-123,-38,1) (220,177,-168,1) (220,172,-262,1) (189,317,-281,1) (38,110,-20,1) (144,-166,256,1) (-2,209,-166,1) (-229,-340,22,1) (-302,254,-96,1) (-175,96,16,1) (-364,-132,-371,1) (41,19,-133,1) (-226,75,46,1) (225,-368,-224,1) (370,-190,-258,1) (-334,-281,137,1) (109,147,352,1) (370,150,261,1) (258,-369,-221,1) (-75,311,-278,1) (-292,132,-272,1) (-142,-148,42,1) (-31,309,-170,1) (9,-182,-139,1) (-256,17,199,1) (96,204,-54,1) (280,357,245,1) (-58,264,341,1) (24,-253,256,1) (-27,288,-352,1) (316,-53,-148,1) (-324,-301,44,1) (-65,162,-62,1) (-128,1,-171,1) (-364,-1,-233,1) (290,-294,345,1) (78,-20,-128,1) (-211,-168,-165,1) (-95,253,214,1) (-234,-262,141,1) (-58,256,-38,1) (-48,104,-314,1) (-160,292,-97,1) (221,-136,-154,1) (215,55,95,1) (-116,-341,-105,1) (-201,8,284,1) (314,324,-110,1) (-374,-374,-130,1) (104,-69,319,1) (-314,-39,-207,1) (282,-150,31,1) (17,251,-343,1) (51,-140,-310,1) (320,-317,-137,1) (-322,341,-174,1) (6,343,131,1) (-325,232,192,1) (10,-176,234,1) (-220,215,231,1) (171,207,266,1) (-286,319,191,1) (45,147,-228,1) (347,-104,-171,1) (-55,71,330,1) (-179,-86,-25,1) (158,-269,-321,1) (77,-131,265,1) (-281,-66,284,1) (354,-219,361,1) (339,-319,-73,1) (-240,-45,-105,1) (305,-99,-235,1) (-46,217,303,1) (-47,46,-122,1) (-123,187,-302,1) (342,195,144,1) (250,-308,279,1) (51,-327,-206,1) (-58,263,70,1) (82,24,-351,1) (-323,-298,97,1) (-355,349,-104,1) (-76,-148,205,1) (-343,186,-30,1) (176,-214,36,1) (-195,211,83,1) (-237,-200,-168,1) (-225,-145,-174,1) (-312,297,-357,1) (-3,-86,-276,1) (-231,140,-285,1) (348,171,275,1) (-331,-303,79,1) (-124,-3,14,1) (-273,287,-235,1) (-99,-86,-177,1) (-302,114,-178,1) (-240,-239,-161,1) (132,127,-342,1) (275,-253,-26,1) (163,17,234,1) (181,357,-151,1) (-371,-6,-12,1) (-96,-163,276,1) (102,-91,-260,1) (298,44,-125,1) (-22,-11,10,1) (7,-20,131,1) (355,-123,-278,1) (102,-63,335,1) (274,160,338,1) (-170,148,69,1) (114,262,-283,1) (-140,243,-59,1) (244,296,-275,1) (330,163,-24,1) (-242,344,-74,1) (-32,156,-39,1) (332,123,166,1) (-170,-370,-367,1) (328,-254,-79,1) (-99,364,-104,1) (84,-211,74,1) (-79,72,374,1) (-261,185,269,1) (-274,-133,-258,1) (266,72,-342,1) (270,-112,-335,1) (156,276,-138,1) (-101,-10,132,1) (-180,-197,83,1) (279,-34,-189,1) (-297,261,257,1) (374,22,-14,1) (-7,122,228,1) (109,-262,-350,1) (141,-88,180,1) (-112,-147,179,1) (89,-122,55,1) (29,276,214,1) (353,6,-178,1) (154,-269,218,1) (98,-310,93,1) (-198,117,73,1) (-204,157,-316,1) (69,-41,-64,1) (15,-44,365,1) (110,-18,309,1) (178,-186,-254,1) (-321,44,-190,1) (146,-24,-14,1) (-106,64,371,1) (-92,122,-210,1) (242,179,147,1) (-53,304,188,1) (-168,-47,-189,1) (137,-75,161,1) (-88,-65,-258,1) (-347,-314,181,1) (-31,-347,92,1) (-43,-61,67,1) (-75,-239,274,1) (-349,-286,88,1) (-270,249,-64,1) (17,53,44,1) (-208,-62,-296,1) (-127,170,-270,1) (-247,-66,66,1) (-234,201,-1,1) (-209,103,-50,1) (191,-299,-209,1) (-301,92,-301,1) (126,-332,84,1) (-348,-20,70,1) (-270,227,-135,1) (275,332,-8,1) (173,308,313,1) (-17,-342,-18,1) (2,-255,167,1) (-181,-34,241,1) (319,-174,283,1) (-246,-148,198,1) (-44,215,-103,1) (-220,197,107,1) (-80,229,-64,1) (-269,-265,107,1) (-319,-126,-51,1) (240,149,-127,1) (-329,-139,243,1) (-319,31,-363,1) (-302,185,121,1) (96,-26,-325,1) (284,-22,-334,1) (-23,-86,-325,1) (-169,198,-186,1) (-123,-77,50,1) (-21,-149,-125,1) (-10,-77,-111,1) (-210,-94,360,1) (139,-329,-227,1) (-106,267,245,1) (-302,317,186,1) (-96,-135,374,1) (155,163,-226,1) (-1,-1,249,1) (-144,297,33,1) (119,313,-171,1) (-50,359,98,1) (275,357,-11,1) (142,138,214,1) (297,-326,-3,1) (50,371,-84,1) (-80,-30,146,1) (41,-181,-297,1) (-250,-218,175,1) (292,5,-220,1) (166,-172,53,1) (-216,-257,-184,1) (-151,263,-243,1) (253,-9,115,1) (137,-136,26,1) (-179,-105,-340,1) (-235,-138,-161,1) (-163,-291,-334,1) (-268,-216,-78,1) (-189,54,-238,1) (24,-62,127,1) (-180,-100,-228,1) (-169,-212,-288,1) (-217,57,-254,1) (-78,-158,-17,1) (-153,55,194,1) (-69,96,300,1) (-107,254,79,1) (25,1,215,1) (313,-308,-341,1) (-259,350,-135,1) (-297,-49,-140,1) (-81,71,156,1) (135,-28,-342,1) (11,-74,14,1) (-55,-56,-212,1) (10,-243,44,1) (-128,270,283,1) (-51,132,183,1) (29,-311,-89,1) (-192,-174,154,1) (211,151,-251,1) (200,95,-204,1) (-273,180,-142,1) (317,104,-62,1) (231,189,-40,1) (220,23,-249,1) (-187,-319,279,1) (-364,266,-219,1) (-241,-184,250,1) (-246,15,-219,1) (-145,-238,336,1) (87,284,-259,1) (-134,342,-348,1) (130,372,49,1) (-15,237,40,1) (127,247,-344,1) (282,-154,-118,1) (366,-26,271,1) (204,208,-359,1) (211,-158,326,1) (82,273,236,1) (-138,300,-284,1) (-301,75,310,1) (-67,-92,-361,1) (-285,-179,64,1) (251,224,-191,1) (-367,-215,26,1) (212,72,-306,1) (-138,163,-347,1) (-65,-234,-122,1) (321,-295,-109,1) (-100,-175,-283,1) (246,-183,316,1) (-176,-195,-237,1) (311,-362,349,1) (-266,-294,271,1) (-267,-130,233,1) (-160,35,-294,1) (92,-293,-215,1) (357,60,352,1) (-333,151,-52,1) (-142,-183,-273,1) (56,-357,-93,1) (193,328,-81,1) (-108,-1,-173,1) (57,107,72,1) (-359,47,286,1) (50,128,-271,1) (131,287,-27,1) (-303,162,14,1) (223,246,-347,1) (-157,220,110,1) (136,-104,-336,1) (328,-34,110,1) (343,-253,-257,1) (-134,-150,249,1) (-340,197,-39,1) (172,31,-64,1) (-33,-282,184,1) (179,202,-330,1) (16,54,150,1) (-130,-157,-364,1) (-39,-152,-140,1) (-274,-106,-325,1) (-159,221,-153,1) (-227,188,-269,1) (-277,284,175,1) (-233,-350,-2,1) (-329,79,-84,1) (-32,-284,-102,1) (-22,51,121,1) (212,-15,221,1) (-135,270,296,1) (81,-159,228,1) (-278,55,333,1) (-304,152,-32,1) (245,294,-8,1) (339,-237,-122,1) (115,-19,373,1) (-323,340,-56,1) (178,10,-221,1) (45,-125,296,1) (-55,-23,-20,1) (334,-224,372,1) (314,-87,302,1) (-367,289,347,1) (336,277,-136,1) (-363,-326,283,1) (-77,108,270,1) (243,258,158,1) (40,138,-262,1) (-237,-198,26,1) (-282,-221,144,1) (338,294,-229,1) (233,-217,281,1) (166,-243,172,1) (9,-320,261,1) (-29,94,-251,1) (84,231,-74,1) (21,18,-182,1) (-250,336,238,1) (46,121,-323,1) (-363,-254,-365,1) (152,-120,206,1) (77,225,-349,1) (200,-341,256,1) (-373,-131,-181,1) (-7,-195,37,1) (362,225,351,1) (277,257,342,1) (-240,368,340,1) (-205,171,365,1) (370,205,-28,1) (220,72,-27,1) (-73,167,-194,1) (-274,47,-14,1) (137,-241,20,1) (212,-87,305,1) (-180,-184,-3,1) (-46,-57,-356,1) (-296,43,-294,1) (18,53,-168,1) (-233,12,-133,1) (-9,372,124,1) (308,-252,-42,1) (-130,36,64,1) (226,-16,134,1) (301,212,140,1) (145,10,225,1) (-372,-29,-245,1) (-62,-306,-255,1) (16,-267,35,1) (91,-223,101,1) (-257,-337,257,1) (57,48,164,1) (-368,-199,-88,1) (-365,-240,-200,1) (105,-70,-106,1) (173,-212,-319,1) (-101,-232,-199,1) (-130,159,-92,1) (279,125,373,1) (343,97,-250,1) (36,-243,211,1) (-102,-234,345,1) (72,-278,-200,1) (-10,348,46,1) (-343,221,-159,1) (190,-335,226,1) (275,67,-32,1) (92,14,223,1) (-228,363,294,1) (219,-55,-200,1) (166,-166,220,1) (138,-135,-209,1) (353,-356,198,1) (244,-177,-339,1) (165,-200,205,1) (-251,-82,164,1) (-272,236,-98,1) (-248,-333,264,1) (-94,-363,-32,1) (-315,-345,273,1) (-287,336,309,1) (252,123,233,1) (233,297,31,1) (-212,-24,81,1) (188,183,-226,1) (348,-99,305,1) (-354,316,-143,1) (-295,345,-253,1) (-32,-166,294,1) (-373,-233,234,1) (44,206,209,1) (-34,-363,-252,1) (-169,194,-104,1) (3,171,292,1) (-342,61,312,1) (348,292,43,1) (349,-7,134,1) (-28,-173,-77,1) (-38,302,-37,1) (-125,341,53,1) (373,-169,-285,1) (72,262,181,1) (225,234,-37,1) (17,33,309,1) (218,330,-24,1) (186,297,-255,1) (165,155,82,1) (-85,-227,184,1) (342,-57,238,1) (263,-218,-150,1) (-206,-307,-305,1) (-174,100,-220,1) (373,-256,340,1) (20,-137,-145,1) (320,-185,178,1) (338,-82,313,1) (-369,-73,-212,1) (-270,95,162,1) (-262,341,-234,1) (64,-137,-314,1) (358,-320,374,1) (232,63,92,1) (68,230,-162,1) (124,87,361,1) (-222,216,333,1) (25,-374,-267,1) (-370,282,29,1) (-305,-97,-126,1) (137,-343,-282,1) (-170,216,310,1) (-346,193,290,1) (-194,-43,142,1) (-280,-175,-228,1) (-279,-121,-372,1) (-117,284,-230,1) (-335,353,47,1) (-86,-159,79,1) (-95,-67,-32,1) (109,-372,38,1) (195,-321,-292,1) (195,-308,338,1) (-146,-306,78,1) (111,353,222,1) (150,56,271,1) (73,-306,177,1) (353,-37,-160,1) (188,264,-189,1) (-67,239,-123,1) (-55,74,-72,1) (-352,-354,79,1) (-360,241,-300,1) (87,309,-371,1) (-147,-163,-223,1) (158,-42,-230,1) (-56,172,332,1) (357,172,-11,1) (-96,59,292,1) (-74,80,95,1) (94,-314,370,1) (-241,262,-246,1) (-292,-230,86,1) (-148,88,21,1) (340,299,-94,1) (-57,-147,17,1) (-158,78,-252,1) (-202,218,-119,1) (-271,-170,9,1) (-189,-26,37,1) (-55,-192,143,1) (-156,-275,-208,1) (-272,5,-281,1) (45,-72,-54,1) (-207,319,-97,1) (9,-253,-336,1) (131,-81,256,1) (22,-255,207,1) (-215,-86,-246,1) (-116,132,-147,1) (50,234,232,1) (143,-371,-204,1) (204,-283,179,1) (325,-245,-340,1) (-9,196,355,1) (301,219,-195,1) (311,-368,-123,1) (-105,239,-101,1) (123,207,69,1) (-323,298,-367,1) (346,164,-313,1) (-290,317,145,1) (91,-286,-319,1) (-129,367,-123,1) (-208,-115,-36,1) (118,329,15,1) (-234,302,-258,1) (309,82,87,1) (167,-245,-43,1) (274,363,-357,1) (278,157,-105,1) (143,-265,355,1) (73,-177,82,1) (-36,-266,-118,1) (339,-145,266,1) (-144,-16,124,1) (187,-141,-41,1) (345,-351,-23,1) (-26,180,246,1) (-231,-327,355,1) (-221,-328,-118,1) (10,-10,266,1) (-242,287,-45,1) (-13,-97,185,1) (345,-278,327,1) (56,23,-366,1) (371,188,3,1) (235,-292,362,1) (36,-139,292,1) (-173,-232,-367,1) (-277,-235,-286,1) (126,-362,274,1) (-179,370,-224,1) (-105,-55,-90,1) (-7,217,-60,1) (228,-25,118,1) (-123,-271,261,1) (-35,229,273,1) (37,334,296,1) (-214,-138,-348,1) (-233,19,-22,1) (81,327,38,1) (-205,2,279,1) (46,105,-110,1) (-316,349,-75,1) (33,129,86,1) (-132,45,3,1) (-49,240,-364,1) (-288,30,64,1) (-188,2,-258,1) (225,-246,-89,1) (332,57,-353,1) (68,115,-233,1) (-52,-165,175,1) (295,-154,-352,1) (171,262,258,1) (-7,-209,-328,1) (180,167,-212,1) (-245,295,74,1) (-294,52,-244,1) (137,74,198,1) (-17,339,-75,1) (192,-136,-274,1) (-163,-369,-54,1) (-140,168,99,1) (-160,333,146,1) (-149,308,-268,1) (-77,-138,91,1) (371,68,-296,1) (124,367,271,1) (362,368,-237,1) (-308,124,-358,1) (78,-247,350,1) (256,363,347,1) (-282,-212,230,1) (-142,-53,163,1) (-236,-5,312,1) (-99,62,-213,1) (-120,-25,-197,1) (332,102,280,1) (-27,-114,-283,1) (248,340,154,1) (307,181,46,1) (-72,146,-107,1) (364,307,147,1) (-311,-171,165,1) (362,164,-281,1) (-238,-307,343,1) (-19,297,-126,1) (186,-273,334,1) (19,-281,-14,1) (351,196,31,1) (-314,-70,-257,1) (-208,281,-254,1) (-321,245,-331,1) (205,340,351,1) (-124,35,270,1) (21,159,-16,1) (-278,-294,-159,1) (111,-99,-209,1) (228,-206,-43,1) (-141,-220,77,1) (-373,-166,-61,1) (246,-123,196,1) (322,-103,-182,1) (227,306,225,1) (-322,-28,-226,1) (52,-226,-365,1) (49,-200,115,1) (217,132,348,1) (371,350,-127,1) (-54,-193,-259,1) (-251,-236,-59,1) (14,-246,100,1) (-330,-369,93,1) (-195,-122,-340,1) (311,245,300,1) (335,-69,-241,1) (59,-277,268,1) (264,-336,269,1) (172,131,166,1) (110,374,-78,1) (-295,25,-4,1) (-166,273,-190,1) (-232,201,224,1) (84,-162,-157,1) (17,280,163,1) (-260,-112,-171,1) (-181,287,-190,1) (-260,-367,-342,1) (-159,266,25,1) (-362,23,-19,1) (214,-123,-352,1) (-276,-232,-134,1) (1,254,143,1) (-92,368,111,1) (42,295,-349,1) (49,328,-357,1) (264,198,283,1) (-361,210,-344,1) (-5,-226,-93,1) (-75,-203,6,1) (67,37,-10,1) (41,16,365,1) (-355,288,108,1) (298,-320,-247,1) (323,103,341,1) (-283,3,-26,1) (-269,5,100,1) (-288,286,-117,1) (-358,-184,294,1) (6,232,-339,1) (-279,251,-282,1) (-11,207,200,1) (-363,261,328,1) (335,-285,133,1) (26,-194,374,1) (-89,-271,134,1) (-231,325,-237,1) (-93,-142,-49,1) (-129,-52,-117,1) (203,-352,-313,1) (-32,-171,-308,1) (114,371,-204,1) (-150,256,358,1) (316,33,187,1) (314,9,-338,1) (197,-250,-13,1) (72,-138,-325,1) (6,28,-41,1) (231,26,-304,1) (144,196,-80,1) (-250,106,-372,1) (-228,36,61,1) (-300,271,-27,1) (64,-9,209,1) (113,371,-1,1) (105,-250,-150,1) (355,-186,141,1) (-305,266,-160,1) (-302,140,-13,1) (108,-63,182,1) (369,-77,-196,1) (288,270,242,1) (-370,-171,-295,1) (203,184,-27,1) (205,161,-20,1) (-84,-104,50,1) (110,122,46,1) (-29,-242,136,1) (-309,55,314,1) (353,-325,-94,1) (357,-121,-14,1) (83,-68,233,1) (-133,8,-158,1) (299,-351,266,1) (205,133,-262,1) (-45,-308,-53,1) (87,202,12,1) (-133,-284,147,1) (-205,-120,187,1) (209,48,264,1) (240,-120,-204,1) (-97,-8,-228,1) (232,58,93,1) (-331,-148,373,1) (367,231,-17,1) (159,181,-24,1) (122,-277,196,1) (-287,-117,-231,1) (-207,29,225,1) (210,326,329,1) (246,156,160,1) (-36,153,-259,1) (-64,125,98,1) (-344,152,-54,1) (239,-253,-86,1) (-125,281,-278,1) (50,74,-271,1) (-140,19,260,1) (357,-237,-357,1) (262,-43,292,1) (-244,236,-206,1) (-349,-346,254,1) (343,-58,-26,1) (-195,253,372,1) (-259,111,232,1) (248,92,-140,1) (325,-88,-329,1) (-181,366,-153,1) (57,59,163,1) (-89,342,-139,1) (155,-54,7,1) (-216,-301,91,1) (-168,325,61,1) (202,347,247,1) (50,179,-263,1) (274,-257,370,1) (-34,-22,-125,1) (286,-64,256,1) (10,99,185,1) (-94,-359,239,1) (371,76,-209,1) (255,-227,67,1) (-337,-188,-226,1) (-356,-239,303,1) (-261,113,159,1) (194,-216,-271,1) (64,79,135,1) (216,301,-179,1) (-347,63,262,1) (-309,250,233,1) (-161,268,166,1) (-181,-275,-134,1) (-279,-360,254,1) (42,-202,236,1) (145,236,132,1) (-10,-334,293,1) (-249,-294,-362,1) (330,-30,-148,1) (-52,-162,-299,1) (-321,-63,-58,1) (-225,-215,-44,1) (202,129,-10,1) (-303,-285,61,1) (-245,-9,-325,1) (131,116,212,1) (-146,-365,-108,1) (198,-139,215,1) (59,73,290,1) (112,261,-87,1) (15,96,167,1) (225,64,-56,1) (-340,-343,131,1) (-361,-333,211,1) (-98,-37,350,1) (107,84,-282,1) (-22,-153,107,1) (-164,-34,-81,1) (-150,237,-231,1) (22,275,35,1) (23,-163,360,1) (337,72,-5,1) (271,165,348,1) (146,-167,322,1) (-245,149,-157,1) (367,11,-14,1) (-261,-95,149,1) (-161,8,120,1) (50,-282,85,1) (-39,331,51,1) (47,29,-106,1) (43,-277,250,1) (243,-81,232,1) (304,-203,346,1) (-218,-155,-227,1) (165,339,197,1) (257,-226,37,1) (-344,214,77,1) (-293,-196,95,1) (252,-311,118,1) (-133,-300,-330,1) (-173,366,328,1) (173,-27,56,1) (198,-65,279,1) (-220,249,80,1) (312,186,230,1) (371,347,147,1) (85,-130,-88,1) (301,230,-230,1) (295,-222,79,1) (257,233,85,1) (238,-168,-6,1) (-10,55,-118,1) (-365,226,-17,1) (324,-62,-217,1) (-295,220,-151,1) (-135,302,320,1) (-115,-69,-91,1) (92,-179,277,1) (-39,-367,-126,1) (42,-149,190,1) (193,-364,272,1) (39,278,287,1) (148,125,-42,1) (241,-150,-132,1) (185,-141,-75,1) (107,-326,-159,1) (333,239,233,1) (92,158,52,1) (102,-220,-150,1) (-374,93,149,1) (-180,-93,373,1) (131,348,-347,1) (-334,331,-114,1) (-35,129,368,1) (13,344,51,1) (309,-366,68,1) (-183,60,-28,1) (-125,-255,-28,1) (342,285,-199,1) (-248,8,257,1) (-294,297,-126,1) (-109,0,17,1) (-24,269,25,1) (314,-218,-316,1) (129,-26,35,1) (101,-292,259,1) (-238,366,-272,1) (-284,119,67,1) (103,-164,-87,1) (327,70,307,1) (136,72,-103,1) (13,372,313,1) (-86,161,-198,1) (185,-230,-61,1) (-99,-355,41,1) (-8,-44,243,1) (81,-337,-184,1) (174,326,-142,1) (222,-16,-115,1) (272,-56,-263,1) (220,153,38,1) (369,-258,-209,1) (362,360,246,1) (229,-247,358,1) (113,-276,-315,1) (82,-56,-296,1) (304,-286,-371,1) (192,141,128,1) (373,-153,-305,1) (199,315,162,1) (-53,102,290,1) (-345,-179,-56,1) (-101,167,32,1) (-224,140,35,1) (-235,-318,-28,1) (280,185,-305,1) (184,253,340,1) (108,-82,-148,1) (335,255,334,1) (290,-372,-301,1) (-192,35,-150,1) (322,-11,-234,1) (-87,-165,177,1) (-330,-256,-220,1) (226,73,5,1) (-182,-187,82,1) (211,-118,254,1) (214,-45,179,1) (108,-163,124,1) (-257,63,168,1) (-139,218,-98,1) (-359,-137,-184,1) (-167,-310,3,1) (-290,146,-33,1) (295,-141,-293,1) (-168,261,-159,1) (153,52,39,1) (69,-139,45,1) (345,-328,60,1) (-137,267,240,1) (351,142,-4,1) (-106,230,-24,1) (260,114,-123,1) (292,-222,292,1) (355,221,-250,1) (-84,184,-151,1) (-214,-199,-155,1) (362,333,-128,1) (211,-44,-179,1) (263,-83,-353,1) (23,-102,-334,1) (284,50,332,1) (-11,209,113,1) (-88,132,-353,1) (135,293,-178,1) (354,44,-302,1) (66,-273,-56,1) (47,312,-229,1) (-355,-219,-223,1) (-179,59,201,1) (197,86,-115,1) (-94,-32,236,1) (102,-328,-370,1) (174,113,-269,1) (261,274,280,1) (153,55,304,1) (-278,-145,260,1) (60,259,3,1) (-225,251,-225,1) (111,-302,-5,1) (114,261,276,1) (-334,295,372,1) (346,139,301,1) (-243,9,-90,1) (134,158,-138,1) (98,-240,-140,1) (65,-91,345,1) (138,-99,-310,1) (-23,-119,-330,1) (305,256,346,1) (101,-22,225,1) (-24,-325,-286,1) (-373,-194,97,1) (-89,314,147,1) (-238,-260,202,1) (23,76,-310,1) (299,140,41,1) (185,-143,-160,1) (-337,140,139,1) (135,224,-303,1) (-329,-249,-349,1) (273,-235,4,1) (74,163,138,1) (-188,-55,-284,1) (-239,-305,-202,1) (114,311,-44,1) (115,150,-152,1) (-311,-10,-81,1) (-266,116,-345,1) (-240,-261,-101,1) (117,-24,-78,1) (242,-312,96,1) (-338,165,-324,1) (150,145,362,1) (-138,-321,-327,1) (227,-28,-219,1) (-307,2,-85,1) (-194,-96,189,1) (297,254,-25,1) (93,-52,186,1) (-164,10,-368,1) (-286,47,172,1) (-235,-333,-349,1) (-287,-302,314,1) (-222,-147,154,1) (143,-318,209,1) (36,31,153,1) (353,-311,-310,1) (-286,-305,-221,1) (135,241,-82,1) (56,282,-231,1) (-191,307,-144,1) (-234,276,294,1) (100,188,76,1) (156,-253,274,1) (341,265,337,1) (353,-162,-2,1) (-174,268,-370,1) (-31,312,200,1) (41,95,-2,1) (-279,225,283,1) (-349,-22,-110,1) (28,203,-285,1) (-41,232,-133,1) (-156,68,62,1) (-152,-136,-39,1) (-346,-74,298,1) (183,121,159,1) (209,-86,71,1) (-287,316,-42,1) (198,252,199,1) (-8,-332,-357,1) (-286,-329,-147,1) (-371,187,-4,1) (-96,-254,-180,1) (192,191,-93,1) (-141,190,-126,1) (241,72,-211,1) (61,63,103,1) (-184,30,-95,1) (-370,257,-226,1) (-367,133,194,1) (-203,314,-327,1) (364,-144,-45,1) (203,293,-1,1) (177,-285,162,1) (152,104,65,1) (343,63,67,1) (77,-254,75,1) (-361,-190,308,1) (-210,308,367,1) (-49,-283,-42,1) (40,253,-80,1) (-292,360,260,1) (145,180,232,1) (352,12,365,1) (5,354,-337,1) (189,354,293,1) (234,71,75,1) (162,-50,-234,1) (-322,-133,-152,1) (367,-58,83,1) (304,-77,-215,1) (-334,-161,46,1) (83,107,221,1) (9,-189,-135,1) (256,314,-231,1) (71,-174,-91,1) (123,67,131,1) (-115,-82,-152,1) (201,-312,-37,1) (182,87,-247,1) (-220,272,-8,1) (-253,-122,-344,1) (21,102,-176,1) (304,265,-215,1) (-165,8,283,1) (-115,259,168,1) (-198,322,-74,1) (140,302,-89,1) (-261,65,-48,1) (186,-17,183,1) (9,-337,-3,1) (-177,-95,205,1) (-13,80,-341,1) (130,335,213,1) (173,-170,183,1) (171,-167,-76,1) (-358,-345,26,1) (-236,305,343,1) (120,218,157,1) (-352,148,-372,1) (200,-33,-1,1) (364,363,77,1) (-363,-19,-334,1) (-77,362,67,1) (61,104,-278,1) (-245,314,286,1) (337,-216,294,1) (90,-213,-155,1) (218,296,124,1) (10,264,-68,1) (275,-93,-131,1) (316,204,-267,1) (59,-171,-255,1) (7,-213,205,1) (-355,-299,-350,1) (-370,242,97,1) (-283,170,-357,1) (-237,-205,-76,1) (7,-38,-228,1) (-247,-360,367,1) (-86,219,281,1) (-280,238,356,1) (-256,39,360,1) (361,266,342,1) (-214,-45,-257,1) (-164,-209,173,1) (-267,-81,-121,1) (46,-107,143,1) (335,-226,75,1) (215,258,349,1) (-169,60,41,1) (-9,-121,-130,1) (321,-3,81,1) (-33,-219,-103,1) (-177,317,90,1) (73,2,-73,1) (222,-219,77,1) (-321,214,-358,1) (311,-87,-152,1) (-278,328,213,1) (-25,-116,346,1) (4,-280,-336,1) (-18,-336,-181,1) (253,-139,-251,1) (-80,325,197,1) (297,-231,352,1) (220,-83,236,1) (167,204,263,1) (-117,22,-194,1) (280,309,184,1) (347,143,-361,1) (323,210,84,1) (300,353,-113,1) (2,-77,-258,1) (293,283,-152,1) (342,-104,105,1) (-286,-141,285,1) (369,-181,94,1) (239,-291,-143,1) (129,226,-145,1) (142,13,-297,1) (202,-291,-296,1) (-175,222,304,1) (-271,-101,-38,1) (112,-146,-273,1) (-190,-213,-54,1) (16,-226,-82,1) (320,-321,-122,1) (-4,360,-289,1) (-209,15,-185,1) (64,-242,151,1) (-27,244,74,1) (174,197,259,1) (335,19,-299,1) (331,167,-7,1) (221,137,-162,1) (-109,190,-360,1) (-17,374,148,1) (-261,-307,-129,1) (219,-91,-51,1) (358,13,-33,1) (-302,360,-227,1) (69,-122,141,1) (-360,353,-94,1) (-70,340,-80,1) (-277,-327,-356,1) (195,-242,-331,1) (131,3,262,1) (-157,123,230,1) (303,194,174,1) (-59,-372,166,1) (-355,-92,359,1) (202,220,-49,1) (352,-294,197,1) (221,-77,132,1) (-306,-62,180,1) (57,-19,-167,1) (296,373,315,1) (-247,193,24,1) (329,110,-220,1) (-100,3,105,1) (-62,-88,-318,1) (-21,-8,-143,1) (304,160,-135,1) (-258,4,73,1) (-151,-204,78,1) (-23,364,-344,1) (-176,-70,201,1) (87,-93,373,1) (-37,374,230,1) (317,-284,156,1) (-35,309,-95,1) (204,283,-373,1) (189,-202,-166,1) (-136,-290,169,1) (286,-113,150,1) (-237,-126,214,1) (-36,-279,352,1) (-291,60,12,1) (-11,-212,351,1) (-212,342,-313,1) (-326,161,-74,1) (-242,-39,222,1) (269,-82,206,1) (166,-230,211,1) (-135,-87,299,1) (299,-73,288,1) (-76,278,162,1) (-223,-145,-161,1) (139,-299,-42,1) (297,-343,-147,1) (357,198,-3,1) (-82,53,237,1) (206,-9,-114,1) (-145,293,-333,1) (176,203,-282,1) (-34,-69,-196,1) (172,-225,247,1) (-248,-106,-297,1) (121,117,-297,1) (80,283,-114,1) (340,239,-235,1) (107,106,-110,1) (-132,284,-338,1) (34,-211,321,1) (302,-134,241,1) (-226,-349,-292,1) (-271,71,-137,1) (-239,249,-234,1) (374,153,-30,1) (-125,-212,-339,1) (-175,69,-12,1) (83,-278,228,1) (-326,-130,254,1) (-243,-139,357,1) (-266,306,93,1) (-29,-307,111,1) (166,220,95,1) (30,205,15,1) (374,178,352,1) (114,-91,-285,1) (5,317,249,1) (-79,-273,-372,1) (-165,140,96,1) (180,-68,163,1) (-359,-267,110,1) (-148,313,117,1) (28,302,-43,1) (-245,-233,241,1) (-156,-311,-341,1) (220,-193,-239,1) (54,-191,-30,1) (279,-149,-208,1) (-327,-100,1,1) (-101,-149,-151,1) (54,253,-358,1) (-23,-295,-53,1) (-261,-358,-126,1) (-54,-174,218,1) (-135,93,90,1) (-16,137,-104,1) (359,-167,261,1) (187,-3,-81,1) (348,-131,-354,1) (-296,-307,-279,1) (-59,-143,-79,1) (96,-250,-23,1) (-254,335,47,1) (16,44,-193,1) (223,-22,-210,1) (-165,-351,206,1) (-192,-95,51,1) (-75,130,-164,1) (225,-139,68,1) (-255,97,-259,1) (-218,-154,131,1) (201,28,-295,1) (192,-86,215,1) (113,-251,27,1) (-34,48,-114,1) (259,106,121,1)core++-1.7/progs/chull/inputs/Line10000100644000175000001440000004203607437361201016677 0ustar joachimusers(273,273,273,1) (-221,-221,-221,1) (-77,-77,-77,1) (-46,-46,-46,1) (352,352,352,1) (386,386,386,1) (298,298,298,1) (87,87,87,1) (91,91,91,1) (267,267,267,1) (-106,-106,-106,1) (-106,-106,-106,1) (-49,-49,-49,1) (438,438,438,1) (296,296,296,1) (395,395,395,1) (-399,-399,-399,1) (29,29,29,1) (-115,-115,-115,1) (-86,-86,-86,1) (-116,-116,-116,1) (208,208,208,1) (-20,-20,-20,1) (25,25,25,1) (387,387,387,1) (-363,-363,-363,1) (351,351,351,1) (-208,-208,-208,1) (344,344,344,1) (175,175,175,1) (-154,-154,-154,1) (93,93,93,1) (453,453,453,1) (268,268,268,1) (-478,-478,-478,1) (280,280,280,1) (129,129,129,1) (319,319,319,1) (-158,-158,-158,1) (-305,-305,-305,1) (61,61,61,1) (235,235,235,1) (88,88,88,1) (148,148,148,1) (-140,-140,-140,1) (381,381,381,1) (248,248,248,1) (388,388,388,1) (-259,-259,-259,1) (-363,-363,-363,1) (-253,-253,-253,1) (448,448,448,1) (117,117,117,1) (272,272,272,1) (311,311,311,1) (253,253,253,1) (98,98,98,1) (-422,-422,-422,1) (72,72,72,1) (-252,-252,-252,1) (-77,-77,-77,1) (-360,-360,-360,1) (-324,-324,-324,1) (-334,-334,-334,1) (-338,-338,-338,1) (456,456,456,1) (295,295,295,1) (480,480,480,1) (-227,-227,-227,1) (489,489,489,1) (17,17,17,1) (53,53,53,1) (3,3,3,1) (131,131,131,1) (412,412,412,1) (-140,-140,-140,1) (-145,-145,-145,1) (275,275,275,1) (100,100,100,1) (-9,-9,-9,1) (24,24,24,1) (-417,-417,-417,1) (269,269,269,1) (-190,-190,-190,1) (335,335,335,1) (-158,-158,-158,1) (-113,-113,-113,1) (-117,-117,-117,1) (90,90,90,1) (309,309,309,1) (22,22,22,1) (265,265,265,1) (474,474,474,1) (183,183,183,1) (196,196,196,1) (244,244,244,1) (139,139,139,1) (469,469,469,1) (209,209,209,1) (-369,-369,-369,1) (452,452,452,1) (-263,-263,-263,1) (133,133,133,1) (58,58,58,1) (-376,-376,-376,1) (492,492,492,1) (412,412,412,1) (398,398,398,1) (68,68,68,1) (-121,-121,-121,1) (395,395,395,1) (-433,-433,-433,1) (-39,-39,-39,1) (139,139,139,1) (-124,-124,-124,1) (-228,-228,-228,1) (481,481,481,1) (262,262,262,1) (154,154,154,1) (46,46,46,1) (46,46,46,1) (-349,-349,-349,1) (-214,-214,-214,1) (-5,-5,-5,1) (334,334,334,1) (482,482,482,1) (-285,-285,-285,1) (-52,-52,-52,1) (426,426,426,1) (423,423,423,1) (78,78,78,1) (353,353,353,1) (-365,-365,-365,1) (-314,-314,-314,1) (-114,-114,-114,1) (-242,-242,-242,1) (-346,-346,-346,1) (-226,-226,-226,1) (-369,-369,-369,1) (221,221,221,1) (152,152,152,1) (-498,-498,-498,1) (287,287,287,1) (-412,-412,-412,1) (140,140,140,1) (-362,-362,-362,1) (-141,-141,-141,1) (96,96,96,1) (399,399,399,1) (-383,-383,-383,1) (-80,-80,-80,1) (-361,-361,-361,1) (-97,-97,-97,1) (414,414,414,1) (472,472,472,1) (-140,-140,-140,1) (-396,-396,-396,1) (-105,-105,-105,1) (-239,-239,-239,1) (-498,-498,-498,1) (472,472,472,1) (-411,-411,-411,1) (-364,-364,-364,1) (-367,-367,-367,1) (-26,-26,-26,1) (-107,-107,-107,1) (-214,-214,-214,1) (247,247,247,1) (24,24,24,1) (-126,-126,-126,1) (25,25,25,1) (268,268,268,1) (-38,-38,-38,1) (-360,-360,-360,1) (405,405,405,1) (320,320,320,1) (236,236,236,1) (279,279,279,1) (308,308,308,1) (352,352,352,1) (-326,-326,-326,1) (446,446,446,1) (-270,-270,-270,1) (-436,-436,-436,1) (393,393,393,1) (89,89,89,1) (-333,-333,-333,1) (-237,-237,-237,1) (349,349,349,1) (-331,-331,-331,1) (-290,-290,-290,1) (437,437,437,1) (-196,-196,-196,1) (-158,-158,-158,1) (-113,-113,-113,1) (197,197,197,1) (128,128,128,1) (-391,-391,-391,1) (-304,-304,-304,1) (109,109,109,1) (-17,-17,-17,1) (220,220,220,1) (-147,-147,-147,1) (444,444,444,1) (359,359,359,1) (-267,-267,-267,1) (239,239,239,1) (70,70,70,1) (22,22,22,1) (-102,-102,-102,1) (-339,-339,-339,1) (-57,-57,-57,1) (127,127,127,1) (-276,-276,-276,1) (-189,-189,-189,1) (-308,-308,-308,1) (-109,-109,-109,1) (73,73,73,1) (-484,-484,-484,1) (59,59,59,1) (282,282,282,1) (453,453,453,1) (362,362,362,1) (-400,-400,-400,1) (-185,-185,-185,1) (34,34,34,1) (227,227,227,1) (-77,-77,-77,1) (229,229,229,1) (-189,-189,-189,1) (405,405,405,1) (-76,-76,-76,1) (163,163,163,1) (324,324,324,1) (-241,-241,-241,1) (396,396,396,1) (39,39,39,1) (328,328,328,1) (383,383,383,1) (-464,-464,-464,1) (-299,-299,-299,1) (-481,-481,-481,1) (-21,-21,-21,1) (328,328,328,1) (-257,-257,-257,1) (289,289,289,1) (133,133,133,1) (-162,-162,-162,1) (-490,-490,-490,1) (-333,-333,-333,1) (-405,-405,-405,1) (462,462,462,1) (-496,-496,-496,1) (-306,-306,-306,1) (-248,-248,-248,1) (38,38,38,1) (420,420,420,1) (175,175,175,1) (-258,-258,-258,1) (-293,-293,-293,1) (55,55,55,1) (166,166,166,1) (369,369,369,1) (-145,-145,-145,1) (424,424,424,1) (240,240,240,1) (393,393,393,1) (227,227,227,1) (98,98,98,1) (428,428,428,1) (428,428,428,1) (117,117,117,1) (-118,-118,-118,1) (231,231,231,1) (359,359,359,1) (-353,-353,-353,1) (225,225,225,1) (-33,-33,-33,1) (-16,-16,-16,1) (234,234,234,1) (133,133,133,1) (78,78,78,1) (172,172,172,1) (136,136,136,1) (272,272,272,1) (423,423,423,1) (-351,-351,-351,1) (167,167,167,1) (73,73,73,1) (-109,-109,-109,1) (373,373,373,1) (-396,-396,-396,1) (-468,-468,-468,1) (218,218,218,1) (-42,-42,-42,1) (455,455,455,1) (-67,-67,-67,1) (-174,-174,-174,1) (157,157,157,1) (-493,-493,-493,1) (-271,-271,-271,1) (60,60,60,1) (123,123,123,1) (111,111,111,1) (-234,-234,-234,1) (-43,-43,-43,1) (257,257,257,1) (490,490,490,1) (423,423,423,1) (-284,-284,-284,1) (200,200,200,1) (31,31,31,1) (293,293,293,1) (-153,-153,-153,1) (-358,-358,-358,1) (40,40,40,1) (-255,-255,-255,1) (-209,-209,-209,1) (-317,-317,-317,1) (318,318,318,1) (181,181,181,1) (-469,-469,-469,1) (421,421,421,1) (212,212,212,1) (248,248,248,1) (-146,-146,-146,1) (142,142,142,1) (-343,-343,-343,1) (179,179,179,1) (-226,-226,-226,1) (-337,-337,-337,1) (407,407,407,1) (334,334,334,1) (285,285,285,1) (-7,-7,-7,1) (-425,-425,-425,1) (-283,-283,-283,1) (-275,-275,-275,1) (-459,-459,-459,1) (-385,-385,-385,1) (-60,-60,-60,1) (240,240,240,1) (145,145,145,1) (-291,-291,-291,1) (-438,-438,-438,1) (286,286,286,1) (248,248,248,1) (-194,-194,-194,1) (-448,-448,-448,1) (430,430,430,1) (-401,-401,-401,1) (232,232,232,1) (461,461,461,1) (-81,-81,-81,1) (184,184,184,1) (-152,-152,-152,1) (-464,-464,-464,1) (340,340,340,1) (-498,-498,-498,1) (-190,-190,-190,1) (409,409,409,1) (-381,-381,-381,1) (262,262,262,1) (-123,-123,-123,1) (-307,-307,-307,1) (478,478,478,1) (102,102,102,1) (-267,-267,-267,1) (-432,-432,-432,1) (-483,-483,-483,1) (472,472,472,1) (212,212,212,1) (-275,-275,-275,1) (-491,-491,-491,1) (-26,-26,-26,1) (473,473,473,1) (-185,-185,-185,1) (25,25,25,1) (378,378,378,1) (-87,-87,-87,1) (-267,-267,-267,1) (314,314,314,1) (-92,-92,-92,1) (151,151,151,1) (-26,-26,-26,1) (255,255,255,1) (187,187,187,1) (-211,-211,-211,1) (257,257,257,1) (496,496,496,1) (-233,-233,-233,1) (141,141,141,1) (-410,-410,-410,1) (-496,-496,-496,1) (-218,-218,-218,1) (482,482,482,1) (94,94,94,1) (15,15,15,1) (-475,-475,-475,1) (111,111,111,1) (-38,-38,-38,1) (237,237,237,1) (335,335,335,1) (-29,-29,-29,1) (-314,-314,-314,1) (283,283,283,1) (285,285,285,1) (210,210,210,1) (137,137,137,1) (-327,-327,-327,1) (442,442,442,1) (-74,-74,-74,1) (80,80,80,1) (69,69,69,1) (399,399,399,1) (-189,-189,-189,1) (-269,-269,-269,1) (-336,-336,-336,1) (-457,-457,-457,1) (-298,-298,-298,1) (-70,-70,-70,1) (183,183,183,1) (-209,-209,-209,1) (-67,-67,-67,1) (175,175,175,1) (72,72,72,1) (-110,-110,-110,1) (-255,-255,-255,1) (-438,-438,-438,1) (-85,-85,-85,1) (355,355,355,1) (24,24,24,1) (-373,-373,-373,1) (165,165,165,1) (494,494,494,1) (-188,-188,-188,1) (-76,-76,-76,1) (254,254,254,1) (-464,-464,-464,1) (426,426,426,1) (439,439,439,1) (-39,-39,-39,1) (-18,-18,-18,1) (-17,-17,-17,1) (-164,-164,-164,1) (292,292,292,1) (213,213,213,1) (-1,-1,-1,1) (334,334,334,1) (414,414,414,1) (428,428,428,1) (-8,-8,-8,1) (-320,-320,-320,1) (-164,-164,-164,1) (-358,-358,-358,1) (251,251,251,1) (226,226,226,1) (-114,-114,-114,1) (313,313,313,1) (-384,-384,-384,1) (-284,-284,-284,1) (-188,-188,-188,1) (-258,-258,-258,1) (381,381,381,1) (-219,-219,-219,1) (53,53,53,1) (-220,-220,-220,1) (-490,-490,-490,1) (49,49,49,1) (-185,-185,-185,1) (435,435,435,1) (-37,-37,-37,1) (275,275,275,1) (-108,-108,-108,1) (445,445,445,1) (-414,-414,-414,1) (-341,-341,-341,1) (133,133,133,1) (84,84,84,1) (492,492,492,1) (22,22,22,1) (-13,-13,-13,1) (-41,-41,-41,1) (201,201,201,1) (323,323,323,1) (101,101,101,1) (-72,-72,-72,1) (24,24,24,1) (486,486,486,1) (-284,-284,-284,1) (139,139,139,1) (-322,-322,-322,1) (27,27,27,1) (380,380,380,1) (-466,-466,-466,1) (307,307,307,1) (-92,-92,-92,1) (-187,-187,-187,1) (316,316,316,1) (456,456,456,1) (127,127,127,1) (226,226,226,1) (-105,-105,-105,1) (-123,-123,-123,1) (-406,-406,-406,1) (-185,-185,-185,1) (-37,-37,-37,1) (-248,-248,-248,1) (448,448,448,1) (-478,-478,-478,1) (-280,-280,-280,1) (-55,-55,-55,1) (9,9,9,1) (178,178,178,1) (-378,-378,-378,1) (-193,-193,-193,1) (-246,-246,-246,1) (49,49,49,1) (330,330,330,1) (-284,-284,-284,1) (264,264,264,1) (-56,-56,-56,1) (-107,-107,-107,1) (-234,-234,-234,1) (-201,-201,-201,1) (-74,-74,-74,1) (-452,-452,-452,1) (206,206,206,1) (238,238,238,1) (363,363,363,1) (137,137,137,1) (-160,-160,-160,1) (64,64,64,1) (-493,-493,-493,1) (216,216,216,1) (157,157,157,1) (-178,-178,-178,1) (-346,-346,-346,1) (409,409,409,1) (-255,-255,-255,1) (-324,-324,-324,1) (-396,-396,-396,1) (189,189,189,1) (184,184,184,1) (281,281,281,1) (310,310,310,1) (490,490,490,1) (-489,-489,-489,1) (-166,-166,-166,1) (295,295,295,1) (-274,-274,-274,1) (-427,-427,-427,1) (-286,-286,-286,1) (118,118,118,1) (-162,-162,-162,1) (12,12,12,1) (-481,-481,-481,1) (-115,-115,-115,1) (-307,-307,-307,1) (256,256,256,1) (-277,-277,-277,1) (329,329,329,1) (-429,-429,-429,1) (287,287,287,1) (336,336,336,1) (286,286,286,1) (-81,-81,-81,1) (-367,-367,-367,1) (440,440,440,1) (-197,-197,-197,1) (-123,-123,-123,1) (-409,-409,-409,1) (-94,-94,-94,1) (-459,-459,-459,1) (274,274,274,1) (-337,-337,-337,1) (351,351,351,1) (239,239,239,1) (-327,-327,-327,1) (-340,-340,-340,1) (9,9,9,1) (-102,-102,-102,1) (-267,-267,-267,1) (222,222,222,1) (70,70,70,1) (-291,-291,-291,1) (-491,-491,-491,1) (455,455,455,1) (-99,-99,-99,1) (264,264,264,1) (-347,-347,-347,1) (-295,-295,-295,1) (334,334,334,1) (439,439,439,1) (-484,-484,-484,1) (95,95,95,1) (-166,-166,-166,1) (-352,-352,-352,1) (10,10,10,1) (136,136,136,1) (24,24,24,1) (100,100,100,1) (-482,-482,-482,1) (65,65,65,1) (-151,-151,-151,1) (-320,-320,-320,1) (-109,-109,-109,1) (-437,-437,-437,1) (-148,-148,-148,1) (50,50,50,1) (71,71,71,1) (249,249,249,1) (282,282,282,1) (-232,-232,-232,1) (239,239,239,1) (-172,-172,-172,1) (-24,-24,-24,1) (247,247,247,1) (-242,-242,-242,1) (376,376,376,1) (-14,-14,-14,1) (-90,-90,-90,1) (-443,-443,-443,1) (-205,-205,-205,1) (-175,-175,-175,1) (-428,-428,-428,1) (389,389,389,1) (158,158,158,1) (-280,-280,-280,1) (-125,-125,-125,1) (-231,-231,-231,1) (243,243,243,1) (474,474,474,1) (-214,-214,-214,1) (-217,-217,-217,1) (-201,-201,-201,1) (-35,-35,-35,1) (173,173,173,1) (-139,-139,-139,1) (316,316,316,1) (-301,-301,-301,1) (432,432,432,1) (40,40,40,1) (480,480,480,1) (-325,-325,-325,1) (-246,-246,-246,1) (-217,-217,-217,1) (151,151,151,1) (40,40,40,1) (2,2,2,1) (-39,-39,-39,1) (450,450,450,1) (58,58,58,1) (255,255,255,1) (-250,-250,-250,1) (130,130,130,1) (120,120,120,1) (407,407,407,1) (349,349,349,1) (494,494,494,1) (-349,-349,-349,1) (67,67,67,1) (443,443,443,1) (-63,-63,-63,1) (350,350,350,1) (-283,-283,-283,1) (401,401,401,1) (-2,-2,-2,1) (78,78,78,1) (193,193,193,1) (196,196,196,1) (-15,-15,-15,1) (-292,-292,-292,1) (152,152,152,1) (159,159,159,1) (-38,-38,-38,1) (434,434,434,1) (-215,-215,-215,1) (-63,-63,-63,1) (-50,-50,-50,1) (287,287,287,1) (398,398,398,1) (-125,-125,-125,1) (-180,-180,-180,1) (128,128,128,1) (124,124,124,1) (449,449,449,1) (-277,-277,-277,1) (6,6,6,1) (273,273,273,1) (-308,-308,-308,1) (156,156,156,1) (-184,-184,-184,1) (-389,-389,-389,1) (-432,-432,-432,1) (-359,-359,-359,1) (-173,-173,-173,1) (469,469,469,1) (138,138,138,1) (404,404,404,1) (137,137,137,1) (-190,-190,-190,1) (-136,-136,-136,1) (344,344,344,1) (461,461,461,1) (-219,-219,-219,1) (370,370,370,1) (-217,-217,-217,1) (218,218,218,1) (-205,-205,-205,1) (-455,-455,-455,1) (91,91,91,1) (169,169,169,1) (-135,-135,-135,1) (-306,-306,-306,1) (-232,-232,-232,1) (-211,-211,-211,1) (-83,-83,-83,1) (273,273,273,1) (-462,-462,-462,1) (108,108,108,1) (-95,-95,-95,1) (-147,-147,-147,1) (218,218,218,1) (-28,-28,-28,1) (-7,-7,-7,1) (-479,-479,-479,1) (-84,-84,-84,1) (-394,-394,-394,1) (424,424,424,1) (-472,-472,-472,1) (-85,-85,-85,1) (-236,-236,-236,1) (372,372,372,1) (-149,-149,-149,1) (-238,-238,-238,1) (-372,-372,-372,1) (-303,-303,-303,1) (44,44,44,1) (345,345,345,1) (-9,-9,-9,1) (89,89,89,1) (-89,-89,-89,1) (-364,-364,-364,1) (453,453,453,1) (105,105,105,1) (-97,-97,-97,1) (-283,-283,-283,1) (-348,-348,-348,1) (-246,-246,-246,1) (104,104,104,1) (56,56,56,1) (106,106,106,1) (-202,-202,-202,1) (-497,-497,-497,1) (-426,-426,-426,1) (-182,-182,-182,1) (-81,-81,-81,1) (-320,-320,-320,1) (-283,-283,-283,1) (-54,-54,-54,1) (94,94,94,1) (-20,-20,-20,1) (-207,-207,-207,1) (445,445,445,1) (241,241,241,1) (-79,-79,-79,1) (-383,-383,-383,1) (-239,-239,-239,1) (-259,-259,-259,1) (107,107,107,1) (349,349,349,1) (152,152,152,1) (242,242,242,1) (277,277,277,1) (-268,-268,-268,1) (-379,-379,-379,1) (493,493,493,1) (-272,-272,-272,1) (-228,-228,-228,1) (-277,-277,-277,1) (331,331,331,1) (327,327,327,1) (328,328,328,1) (-396,-396,-396,1) (329,329,329,1) (402,402,402,1) (-79,-79,-79,1) (-277,-277,-277,1) (-443,-443,-443,1) (138,138,138,1) (169,169,169,1) (150,150,150,1) (-407,-407,-407,1) (461,461,461,1) (70,70,70,1) (334,334,334,1) (-143,-143,-143,1) (186,186,186,1) (-430,-430,-430,1) (98,98,98,1) (-231,-231,-231,1) (418,418,418,1) (-275,-275,-275,1) (170,170,170,1) (-44,-44,-44,1) (-394,-394,-394,1) (138,138,138,1) (183,183,183,1) (-123,-123,-123,1) (360,360,360,1) (-11,-11,-11,1) (-321,-321,-321,1) (164,164,164,1) (93,93,93,1) (41,41,41,1) (-294,-294,-294,1) (97,97,97,1) (126,126,126,1) (374,374,374,1) (-278,-278,-278,1) (219,219,219,1) (311,311,311,1) (292,292,292,1) (28,28,28,1) (-357,-357,-357,1) (-47,-47,-47,1) (97,97,97,1) (240,240,240,1) (221,221,221,1) (-10,-10,-10,1) (464,464,464,1) (207,207,207,1) (-365,-365,-365,1) (-105,-105,-105,1) (312,312,312,1) (272,272,272,1) (-447,-447,-447,1) (-335,-335,-335,1) (108,108,108,1) (42,42,42,1) (-157,-157,-157,1) (-253,-253,-253,1) (-390,-390,-390,1) (-174,-174,-174,1) (287,287,287,1) (-402,-402,-402,1) (32,32,32,1) (-141,-141,-141,1) (224,224,224,1) (-119,-119,-119,1) (80,80,80,1) (-82,-82,-82,1) (-333,-333,-333,1) (-153,-153,-153,1) (445,445,445,1) (-190,-190,-190,1) (300,300,300,1) (17,17,17,1) (-475,-475,-475,1) (-4,-4,-4,1) (489,489,489,1) (-322,-322,-322,1) (-384,-384,-384,1) (-141,-141,-141,1) (490,490,490,1) (387,387,387,1) (-88,-88,-88,1) (-370,-370,-370,1) (-30,-30,-30,1) (453,453,453,1) (-28,-28,-28,1) (216,216,216,1) (-462,-462,-462,1) (298,298,298,1) (-22,-22,-22,1) (-365,-365,-365,1) (-195,-195,-195,1) (336,336,336,1) (358,358,358,1) (185,185,185,1) (-108,-108,-108,1) (-249,-249,-249,1) (352,352,352,1) (238,238,238,1) (-329,-329,-329,1) (-363,-363,-363,1) (13,13,13,1) (187,187,187,1) (-339,-339,-339,1) (168,168,168,1) (-375,-375,-375,1) (-338,-338,-338,1) (283,283,283,1) (-16,-16,-16,1) (-373,-373,-373,1) (146,146,146,1) (395,395,395,1) (-244,-244,-244,1) (-409,-409,-409,1) (323,323,323,1) (228,228,228,1) (307,307,307,1) (360,360,360,1) (1,1,1,1) (-240,-240,-240,1) (494,494,494,1) (305,305,305,1) (-428,-428,-428,1) (328,328,328,1) (-35,-35,-35,1) (-37,-37,-37,1) (-446,-446,-446,1) (-208,-208,-208,1) (-324,-324,-324,1) (-275,-275,-275,1) (-72,-72,-72,1) (189,189,189,1) (411,411,411,1) (89,89,89,1) (173,173,173,1) (55,55,55,1) (213,213,213,1) (334,334,334,1) (-187,-187,-187,1) (-328,-328,-328,1) (461,461,461,1) (458,458,458,1) (-458,-458,-458,1) (-308,-308,-308,1) (-475,-475,-475,1) (364,364,364,1) (419,419,419,1) (331,331,331,1) (199,199,199,1) (-105,-105,-105,1) (-434,-434,-434,1) (169,169,169,1) (-325,-325,-325,1) (-363,-363,-363,1) (-28,-28,-28,1) (140,140,140,1) (99,99,99,1) (25,25,25,1) (431,431,431,1) (275,275,275,1) (249,249,249,1) (-165,-165,-165,1) (-61,-61,-61,1) (136,136,136,1) (423,423,423,1) (-413,-413,-413,1) (-334,-334,-334,1) (111,111,111,1) (420,420,420,1) (-22,-22,-22,1) (283,283,283,1) (356,356,356,1) (-88,-88,-88,1) (324,324,324,1) (-476,-476,-476,1) (-64,-64,-64,1) (164,164,164,1) (442,442,442,1) (-258,-258,-258,1) (-162,-162,-162,1) (-187,-187,-187,1) (-193,-193,-193,1) (-13,-13,-13,1) (-56,-56,-56,1) (-47,-47,-47,1) (-398,-398,-398,1) (-482,-482,-482,1) (478,478,478,1) (-491,-491,-491,1) (292,292,292,1) (202,202,202,1) (-157,-157,-157,1) (-294,-294,-294,1) (-187,-187,-187,1) (-259,-259,-259,1) (-208,-208,-208,1) (-22,-22,-22,1) (351,351,351,1) (-312,-312,-312,1) (456,456,456,1) (109,109,109,1) (-481,-481,-481,1) (-157,-157,-157,1) (-91,-91,-91,1) (-458,-458,-458,1) (278,278,278,1) (-452,-452,-452,1) (484,484,484,1) (-115,-115,-115,1) (-228,-228,-228,1) (-199,-199,-199,1) (-133,-133,-133,1) (258,258,258,1) (244,244,244,1) (319,319,319,1) (360,360,360,1) (262,262,262,1) (272,272,272,1) (368,368,368,1) (29,29,29,1) (-50,-50,-50,1) (-314,-314,-314,1) (235,235,235,1) (262,262,262,1) (-74,-74,-74,1) (-498,-498,-498,1) (-284,-284,-284,1) (-248,-248,-248,1) (-311,-311,-311,1) (-353,-353,-353,1) (361,361,361,1) (-292,-292,-292,1) (-11,-11,-11,1) (-255,-255,-255,1) (-251,-251,-251,1) (-258,-258,-258,1) (-208,-208,-208,1) (-292,-292,-292,1) (-264,-264,-264,1) (176,176,176,1) (-21,-21,-21,1) (36,36,36,1) (-482,-482,-482,1) (-287,-287,-287,1) (-244,-244,-244,1) (337,337,337,1)core++-1.7/progs/chull/inputs/Para20000100644000175000001440000010312107437361201016665 0ustar joachimusers(-319,-440,557,1) (-180,274,-193,1) (220,434,323,1) (76,-124,-539,1) (-2,136,-549,1) (-363,-443,688,1) (-267,153,-244,1) (-111,19,-573,1) (-278,-121,-256,1) (-90,431,151,1) (492,228,552,1) (350,-30,-130,1) (-169,-110,-461,1) (-43,4,-616,1) (-63,184,-472,1) (-4,-196,-470,1) (-67,-308,-226,1) (-287,67,-276,1) (210,120,-389,1) (203,267,-173,1) (352,-168,-15,1) (-369,-153,14,1) (53,9,-612,1) (256,-41,-354,1) (-24,-41,-614,1) (-216,445,354,1) (289,173,-169,1) (-123,280,-249,1) (-348,313,252,1) (264,335,103,1) (-215,-457,396,1) (-257,-24,-357,1) (-245,-273,-85,1) (-482,464,1166,1) (346,221,50,1) (206,173,-334,1) (-472,336,718,1) (80,-179,-469,1) (251,-486,573,1) (296,-315,123,1) (-203,217,-270,1) (474,469,1154,1) (-431,229,329,1) (-404,382,612,1) (-32,430,119,1) (-358,10,-110,1) (-352,117,-73,1) (264,-126,-281,1) (134,203,-387,1) (-305,-170,-136,1) (-115,368,-29,1) (-143,-304,-172,1) (362,436,660,1) (16,88,-591,1) (449,-212,362,1) (273,-279,-14,1) (222,-335,22,1) (-452,-74,215,1) (-240,429,342,1) (393,-335,442,1) (-454,-122,260,1) (-187,162,-378,1) (-383,186,101,1) (-228,319,-8,1) (381,101,-2,1) (-321,224,-10,1) (458,-125,277,1) (61,369,-64,1) (390,-375,547,1) (294,-347,203,1) (397,-368,548,1) (94,-345,-112,1) (-320,-86,-184,1) (-416,387,667,1) (79,-370,-51,1) (-260,391,258,1) (291,-144,-202,1) (52,-462,240,1) (-350,-92,-99,1) (139,-171,-429,1) (-393,72,14,1) (203,168,-346,1) (-84,68,-577,1) (292,-315,114,1) (221,164,-320,1) (-325,352,294,1) (-267,-171,-221,1) (-493,-273,646,1) (242,-409,279,1) (-411,-204,218,1) (-280,-172,-191,1) (-338,183,-32,1) (214,-476,465,1) (332,-403,466,1) (162,-364,11,1) (-296,-291,65,1) (338,371,383,1) (124,-118,-506,1) (138,309,-165,1) (-422,-223,287,1) (483,429,1045,1) (9,-213,-441,1) (436,235,357,1) (-496,-498,1352,1) (323,-200,-46,1) (-279,-374,247,1) (-39,-294,-271,1) (308,-350,245,1) (-271,115,-277,1) (-253,390,240,1) (251,-50,-361,1) (-426,64,118,1) (-204,198,-300,1) (445,433,918,1) (-18,-315,-225,1) (-60,427,119,1) (193,226,-270,1) (338,-97,-129,1) (229,339,45,1) (-299,-496,717,1) (-465,-174,362,1) (-35,-260,-348,1) (-391,114,39,1) (-31,223,-420,1) (360,-166,4,1) (-51,-215,-428,1) (-92,80,-564,1) (-419,433,828,1) (-12,62,-607,1) (431,172,237,1) (333,-160,-77,1) (202,146,-375,1) (242,-94,-354,1) (-40,442,164,1) (-90,-6,-591,1) (-257,374,199,1) (233,-149,-317,1) (-37,-323,-200,1) (-450,-201,347,1) (11,-2,-623,1) (83,418,102,1) (-14,-361,-101,1) (498,-105,412,1) (126,35,-555,1) (-199,-226,-261,1) (11,-391,-11,1) (113,-312,-183,1) (254,-169,-251,1) (93,-311,-202,1) (-252,182,-237,1) (-9,351,-130,1) (-110,341,-110,1) (-210,67,-429,1) (390,88,15,1) (-447,-136,249,1) (-354,470,761,1) (349,-216,50,1) (443,-281,477,1) (410,-47,57,1) (19,-341,-157,1) (463,127,298,1) (271,-374,229,1) (-144,-423,174,1) (218,44,-425,1) (-175,196,-347,1) (-299,315,130,1) (22,91,-588,1) (131,311,-168,1) (-367,-3,-84,1) (-126,-315,-163,1) (360,20,-103,1) (-370,184,59,1) (303,-452,560,1) (403,188,167,1) (0,-103,-581,1) (346,-62,-129,1) (93,63,-573,1) (-145,169,-425,1) (-244,399,251,1) (493,451,1162,1) (-425,283,419,1) (-51,165,-504,1) (-110,-265,-294,1) (297,386,325,1) (109,481,349,1) (221,-396,198,1) (-414,-120,119,1) (406,-367,574,1) (-242,70,-369,1) (132,155,-457,1) (-109,-455,251,1) (154,483,404,1) (107,128,-512,1) (363,382,487,1) (96,289,-252,1) (457,-145,295,1) (-287,97,-256,1) (244,-52,-374,1) (-130,105,-512,1) (-468,-174,373,1) (-199,-365,67,1) (-88,180,-463,1) (-484,44,321,1) (438,85,172,1) (-348,68,-120,1) (476,-304,652,1) (-303,434,496,1) (303,-320,153,1) (37,141,-538,1) (-462,-391,841,1) (-95,494,388,1) (-37,118,-562,1) (66,-318,-201,1) (-459,435,975,1) (286,-428,436,1) (-263,-438,420,1) (-294,148,-190,1) (241,-279,-80,1) (-333,154,-85,1) (306,-182,-116,1) (-303,257,7,1) (14,-107,-577,1) (166,-208,-340,1) (73,-321,-190,1) (432,110,171,1) (-213,-188,-300,1) (79,249,-350,1) (429,-380,690,1) (430,469,995,1) (-469,191,402,1) (-484,-233,530,1) (252,-279,-58,1) (414,-32,65,1) (-58,-444,178,1) (-402,-277,329,1) (-126,-206,-390,1) (479,387,893,1) (187,120,-426,1) (-346,-265,136,1) (298,-439,502,1) (344,-440,623,1) (-128,-102,-516,1) (308,-223,-45,1) (17,213,-441,1) (-279,47,-303,1) (-121,-263,-288,1) (313,-394,389,1) (-43,202,-453,1) (74,398,31,1) (258,171,-240,1) (-404,-393,646,1) (464,-450,1047,1) (493,126,411,1) (170,-378,63,1) (360,-57,-92,1) (-318,179,-91,1) (3,53,-612,1) (-448,-214,362,1) (329,69,-171,1) (499,-474,1270,1) (-409,-147,131,1) (-238,404,255,1) (-41,218,-426,1) (81,-492,370,1) (92,-186,-451,1) (178,187,-357,1) (-80,117,-543,1) (237,-112,-348,1) (-281,-118,-252,1) (9,-446,172,1) (324,190,-59,1) (233,-198,-249,1) (-281,284,14,1) (88,-477,317,1) (-172,62,-490,1) (-452,-81,219,1) (414,-191,207,1) (-202,-152,-368,1) (-497,378,935,1) (-145,94,-504,1) (-332,-492,785,1) (-244,87,-355,1) (125,492,407,1) (475,343,749,1) (-151,-41,-525,1) (396,-351,496,1) (-375,104,-17,1) (-50,-157,-515,1) (-136,-487,398,1) (-135,191,-404,1) (74,-87,-571,1) (-415,-36,70,1) (221,-118,-372,1) (311,223,-37,1) (-264,-358,167,1) (-208,-97,-413,1) (-351,48,-121,1) (489,273,630,1) (15,439,148,1) (91,364,-60,1) (-126,-37,-554,1) (-2,-458,215,1) (-63,340,-145,1) (-95,-50,-577,1) (-320,-428,518,1) (92,-344,-116,1) (-38,-211,-439,1) (38,-251,-365,1) (273,-110,-277,1) (-221,-349,58,1) (38,326,-192,1) (-385,-213,150,1) (-184,-470,395,1) (377,-345,420,1) (-97,-185,-449,1) (-358,400,528,1) (-143,79,-516,1) (215,261,-166,1) (-496,394,981,1) (332,-498,809,1) (-38,488,334,1) (-36,250,-368,1) (1,212,-443,1) (236,-251,-148,1) (-423,-101,132,1) (114,315,-174,1) (13,400,16,1) (-393,42,1,1) (253,-239,-139,1) (444,-457,1000,1) (-97,319,-179,1) (-101,481,342,1) (9,-364,-93,1) (484,-121,371,1) (467,485,1189,1) (340,430,578,1) (-76,65,-583,1) (-94,-389,16,1) (-224,154,-328,1) (-313,-234,-12,1) (-472,301,629,1) (-444,41,171,1) (176,-338,-42,1) (-442,-96,194,1) (-77,-53,-588,1) (325,296,149,1) (345,281,168,1) (-219,480,489,1) (240,159,-292,1) (423,200,251,1) (-26,328,-190,1) (-400,-486,961,1) (-290,-290,49,1) (-211,363,81,1) (-103,54,-569,1) (391,-327,415,1) (110,-93,-540,1) (348,271,154,1) (-36,-272,-322,1) (-331,-59,-171,1) (174,493,469,1) (-287,-6,-294,1) (249,-7,-375,1) (-50,-36,-608,1) (-373,-152,25,1) (-360,100,-65,1) (-349,-261,135,1) (113,-140,-494,1) (-52,401,30,1) (-301,344,211,1) (-69,-435,152,1) (-484,-29,316,1) (340,286,165,1) (434,-457,965,1) (455,-149,293,1) (216,423,278,1) (63,-315,-210,1) (148,-469,343,1) (134,-413,130,1) (-343,481,772,1) (-274,256,-61,1) (-392,-36,-3,1) (-156,-33,-522,1) (412,-280,368,1) (165,231,-301,1) (150,229,-323,1) (223,165,-315,1) (-325,38,-195,1) (-73,-415,86,1) (80,-143,-516,1) (-65,-229,-397,1) (-245,497,604,1) (-45,402,30,1) (-497,-435,1121,1) (489,-341,797,1) (-479,-310,678,1) (414,-372,615,1) (154,-267,-243,1) (95,41,-580,1) (-48,-265,-333,1) (-253,-422,344,1) (464,469,1117,1) (242,-386,206,1) (-18,-356,-115,1) (-302,-463,598,1) (0,132,-554,1) (-193,255,-214,1) (104,262,-305,1) (132,106,-509,1) (326,96,-161,1) (264,346,133,1) (286,153,-202,1) (474,-85,303,1) (385,44,-23,1) (455,-187,344,1) (278,-323,102,1) (-110,217,-386,1) (-378,-393,565,1) (331,103,-143,1) (-249,-496,608,1) (140,250,-295,1) (136,446,245,1) (-20,-285,-297,1) (183,-412,189,1) (321,-16,-210,1) (183,60,-475,1) (-194,-56,-460,1) (-311,-245,3,1) (358,-451,702,1) (298,288,63,1) (-139,51,-536,1) (465,250,491,1) (-256,-438,405,1) (357,-450,696,1) (164,-417,179,1) (-447,-221,370,1) (332,188,-41,1) (-299,-212,-86,1) (403,383,612,1) (-125,199,-402,1) (-157,-467,347,1) (-266,148,-253,1) (-23,-78,-597,1) (402,-190,167,1) (-29,175,-497,1) (-426,331,540,1) (-299,-486,678,1) (57,-56,-598,1) (-425,-111,148,1) (-7,238,-396,1) (-29,46,-611,1) (-222,-291,-87,1) (-307,65,-229,1) (-413,-449,864,1) (439,285,472,1) (-107,472,313,1) (-484,-76,336,1) (-84,417,100,1) (233,386,189,1) (67,306,-231,1) (193,268,-187,1) (319,-275,85,1) (-313,393,385,1) (113,180,-443,1) (107,-441,199,1) (-299,99,-226,1) (-164,-91,-483,1) (291,401,358,1) (-4,341,-158,1) (315,-244,11,1) (-290,262,-12,1) (-250,-275,-71,1) (-339,166,-53,1) (-382,394,580,1) (27,184,-485,1) (175,-305,-129,1) (-73,-30,-598,1) (-81,114,-545,1) (-162,-493,453,1) (-231,444,378,1) (-435,-31,136,1) (18,-99,-583,1) (377,-216,131,1) (-223,-152,-332,1) (-399,-433,763,1) (104,-190,-436,1) (329,353,307,1) (34,489,337,1) (-6,151,-532,1) (358,-189,31,1) (9,-309,-241,1) (237,478,514,1) (110,-174,-454,1) (-209,116,-395,1) (94,-289,-254,1) (181,-462,361,1) (228,-443,369,1) (415,-167,176,1) (-262,-412,329,1) (-101,341,-117,1) (-103,-297,-228,1) (170,430,231,1) (-332,-361,338,1) (57,-499,385,1) (-365,367,447,1) (9,-174,-502,1) (79,-38,-593,1) (435,405,789,1) (253,26,-365,1) (-26,463,236,1) (-318,12,-218,1) (166,-262,-238,1) (-98,153,-491,1) (70,139,-526,1) (240,469,486,1) (-44,-388,-13,1) (-353,-399,511,1) (-482,-186,443,1) (-261,74,-329,1) (-185,-126,-423,1) (-84,323,-178,1) (199,494,510,1) (-239,109,-347,1) (374,-390,544,1) (-176,451,313,1) (-208,335,-1,1) (92,29,-586,1) (-288,-279,19,1) (-425,350,588,1) (460,-481,1148,1) (-219,-452,385,1) (-335,-119,-118,1) (-435,-21,134,1) (120,138,-489,1) (293,493,691,1) (-471,91,296,1) (167,351,-19,1) (-249,372,177,1) (339,-140,-85,1) (-329,265,90,1) (151,-167,-420,1) (-344,-308,229,1) (53,-270,-320,1) (-483,-12,309,1) (-252,-202,-206,1) (35,-88,-587,1) (178,99,-457,1) (390,-227,190,1) (-288,158,-192,1) (-259,-260,-85,1) (-275,407,341,1) (-262,-449,457,1) (-367,-415,603,1) (390,-7,-15,1) (-245,130,-316,1) (-381,-265,237,1) (462,-226,434,1) (-74,-10,-601,1) (3,-58,-610,1) (478,250,540,1) (239,-12,-394,1) (-362,-107,-53,1) (-437,-497,1128,1) (165,-226,-310,1) (161,406,139,1) (14,385,-30,1) (288,251,-39,1) (435,421,842,1) (335,300,185,1) (-111,-435,182,1) (-94,7,-588,1) (-201,-157,-363,1) (281,224,-107,1) (333,-241,52,1) (-359,286,218,1) (380,-251,205,1) (-378,-252,201,1) (-189,-376,84,1) (412,85,84,1) (284,293,42,1) (-426,144,185,1) (57,324,-190,1) (55,-47,-602,1) (134,-170,-436,1) (341,198,-1,1) (235,-177,-277,1) (496,-446,1155,1) (-421,195,237,1) (386,-162,77,1) (335,147,-88,1) (-178,190,-352,1) (395,-57,13,1) (437,-318,544,1) (66,325,-183,1) (266,-174,-219,1) (93,339,-129,1) (469,-375,818,1) (138,-1,-547,1) (77,-253,-343,1) (329,-107,-144,1) (444,39,170,1) (216,415,251,1) (92,294,-244,1) (85,-47,-586,1) (-393,-105,38,1) (-425,-72,119,1) (-439,470,1030,1) (370,497,911,1) (-373,-88,-36,1) (297,392,343,1) (237,-134,-327,1) (206,181,-322,1) (-10,-181,-492,1) (-344,-457,684,1) (65,484,330,1) (-65,-16,-605,1) (-2,-374,-64,1) (-126,-434,193,1) (420,458,920,1) (18,-498,369,1) (-172,93,-470,1) (-70,-112,-553,1) (38,-225,-415,1) (-139,164,-438,1) (186,-367,53,1) (31,-102,-578,1) (-2,-288,-291,1) (-445,488,1120,1) (30,-290,-283,1) (-494,-430,1091,1) (-331,-60,-171,1) (53,166,-502,1) (66,426,119,1) (231,-39,-404,1) (359,-275,194,1) (-38,-338,-160,1) (317,391,389,1) (50,-170,-498,1) (-358,410,561,1) (493,327,776,1) (-482,-1,305,1) (-299,16,-265,1) (210,-245,-207,1) (-21,-285,-297,1) (-36,-16,-617,1) (-216,132,-367,1) (423,336,543,1) (-227,-36,-412,1) (237,424,320,1) (71,-296,-253,1) (-138,232,-332,1) (-272,-243,-91,1) (-175,-131,-432,1) (-358,-207,60,1) (-328,-340,268,1) (291,-128,-219,1) (175,-24,-498,1) (126,-371,-9,1) (190,-435,277,1) (112,473,321,1) (196,10,-469,1) (284,468,574,1) (474,-4,275,1) (447,373,732,1) (-458,-374,774,1) (-290,273,10,1) (-379,-62,-33,1) (-494,-55,364,1) (306,-353,249,1) (237,477,511,1) (-194,3,-473,1) (-176,480,421,1) (478,449,1096,1) (-416,143,150,1) (195,91,-438,1) (184,-319,-81,1) (-150,128,-468,1) (-370,345,399,1) (50,386,-17,1) (176,-312,-110,1) (135,296,-200,1) (125,140,-482,1) (-283,-94,-268,1) (286,453,524,1) (-141,-432,202,1) (-68,182,-472,1) (-477,-115,339,1) (107,-393,39,1) (-496,95,396,1) (301,94,-226,1) (-245,481,541,1) (444,382,748,1) (-414,264,340,1) (-93,-436,171,1) (126,-442,221,1) (-249,-264,-96,1) (354,375,440,1) (375,-454,763,1) (-244,136,-311,1) (498,114,420,1) (203,-95,-422,1) (-228,226,-211,1) (290,378,284,1) (332,293,160,1) (-52,108,-566,1) (-138,202,-384,1) (65,-219,-415,1) (59,150,-519,1) (-479,466,1162,1) (213,146,-357,1) (463,381,814,1) (352,313,263,1) (231,397,220,1) (-455,-158,304,1) (371,158,26,1) (-479,-249,542,1) (429,246,354,1) (-484,282,631,1) (53,308,-233,1) (-294,-364,251,1) (-354,407,540,1) (200,-74,-441,1) (-58,-174,-489,1) (-54,-117,-557,1) (-486,-433,1070,1) (-119,477,343,1) (447,-291,514,1) (265,153,-249,1) (-419,309,460,1) (495,451,1169,1) (-57,-322,-196,1) (-153,236,-307,1) (-307,-395,377,1) (-236,-190,-256,1) (-101,-378,-11,1) (-308,-425,478,1) (47,133,-544,1) (-100,493,388,1) (-87,-465,271,1) (-128,-135,-485,1) (482,80,331,1) (-394,110,45,1) (160,414,164,1) (80,87,-567,1) (-168,70,-491,1) (264,179,-216,1) (-219,456,399,1) (283,44,-295,1) (432,-432,869,1) (443,-471,1048,1) (-241,76,-368,1) (392,-108,37,1) (44,382,-32,1) (304,78,-229,1) (-271,-355,174,1) (35,308,-239,1) (-250,-379,200,1) (-56,-361,-89,1) (200,-494,512,1) (-29,-254,-362,1) (269,-375,228,1) (26,200,-461,1) (407,-454,863,1) (108,474,321,1) (488,136,402,1) (-292,480,638,1) (-313,-425,490,1) (-153,230,-318,1) (457,-374,771,1) (-216,-339,22,1) (-230,318,-7,1) (469,19,257,1) (438,-112,193,1) (158,114,-471,1) (-107,-396,49,1) (359,-363,418,1) (-272,-140,-249,1) (336,-390,436,1) (-95,-81,-561,1) (-441,-132,223,1) (-469,-234,475,1) (-177,-283,-178,1) (-159,169,-408,1) (447,-227,381,1) (295,-294,70,1) (-67,-460,240,1) (-123,59,-549,1) (437,264,418,1) (-308,26,-241,1) (-368,-205,86,1) (-140,-232,-330,1) (22,219,-429,1) (-420,131,150,1) (-400,-2,16,1) (189,-33,-476,1) (28,454,203,1) (290,245,-47,1) (-230,-66,-394,1) (167,42,-505,1) (-296,372,280,1) (475,-256,540,1) (370,-173,43,1) (302,282,59,1) (-433,493,1098,1) (-217,-302,-70,1) (-237,142,-318,1) (-34,284,-296,1) (-163,45,-509,1) (-110,-64,-558,1) (-482,-446,1101,1) (402,46,31,1) (167,-234,-293,1) (-247,-423,336,1) (432,294,468,1) (-220,279,-118,1) (244,23,-383,1) (124,-453,258,1) (-200,-118,-408,1) (-387,-232,190,1) (164,-190,-371,1) (30,-218,-430,1) (275,-211,-143,1) (118,-205,-399,1) (178,-471,390,1) (-187,231,-270,1) (430,358,628,1) (214,73,-419,1) (-401,466,888,1) (149,-494,441,1) (235,428,329,1) (284,-45,-293,1) (-73,-117,-547,1) (1,226,-419,1) (264,113,-293,1) (494,-96,389,1) (422,-1,88,1) (185,173,-367,1) (288,-222,-94,1) (467,-59,262,1) (-194,-245,-233,1) (-352,-289,205,1) (-412,361,576,1) (283,-314,90,1) (302,-93,-224,1) (-309,12,-241,1) (-189,474,417,1) (466,237,469,1) (-167,-58,-498,1) (-62,-428,124,1) (-470,-93,294,1) (-25,452,195,1) (406,-365,568,1) (100,169,-469,1) (-88,42,-585,1) (-415,217,253,1) (297,-268,16,1) (428,384,698,1) (-432,186,261,1) (-454,369,745,1) (-431,-264,398,1) (-143,-121,-483,1) (-314,-202,-66,1) (-409,18,46,1) (240,28,-390,1) (89,269,-302,1) (435,-460,979,1) (196,316,-70,1) (-326,-229,11,1) (-40,86,-587,1) (313,44,-224,1) (-222,85,-397,1) (276,-319,87,1) (-56,343,-140,1) (367,-11,-84,1) (188,435,274,1) (225,-480,500,1) (-211,410,226,1) (-183,-121,-431,1) (-97,-468,289,1) (406,491,999,1) (301,316,138,1) (-494,-28,355,1) (107,-320,-168,1) (243,-458,451,1) (265,31,-339,1) (86,-482,335,1) (-409,-163,151,1) (-301,34,-256,1) (-345,-459,695,1) (342,475,746,1) (223,361,96,1) (-261,108,-304,1) (-346,117,-90,1) (-315,-2,-226,1) (476,485,1223,1) (-210,482,481,1) (-67,396,21,1) (-363,-349,390,1) (438,401,786,1) (181,-1,-492,1) (418,271,368,1) (335,-408,491,1) (-220,489,526,1) (-368,-222,115,1) (307,-418,452,1) (143,-180,-412,1) (83,296,-245,1) (436,68,155,1) (481,-90,334,1) (20,441,155,1) (199,-23,-463,1) (-151,70,-512,1) (113,-1,-572,1) (-17,-11,-622,1) (-345,481,777,1) (-118,425,154,1) (291,-26,-282,1) (-319,256,45,1) (105,-42,-572,1) (38,187,-478,1) (-66,-344,-132,1) (452,418,892,1) (60,408,56,1) (-197,-445,323,1) (324,31,-200,1) (-351,46,-122,1) (-381,147,43,1) (-495,107,402,1) (302,485,681,1) (488,202,492,1) (252,-63,-353,1) (382,-17,-38,1) (-482,-184,440,1) (204,249,-209,1) (-349,185,0,1) (240,-422,318,1) (78,-225,-396,1) (485,380,894,1) (-171,285,-181,1) (356,359,398,1) (433,-122,185,1) (477,55,298,1) (-118,59,-554,1) (-168,-158,-410,1) (23,-490,338,1) (-431,459,962,1) (391,51,-1,1) (476,-318,687,1) (46,155,-519,1) (430,197,271,1) (-184,146,-403,1) (274,393,294,1) (420,235,302,1) (249,-275,-73,1) (-5,80,-598,1) (-441,-97,191,1) (457,-488,1164,1) (457,-186,350,1) (70,-235,-383,1) (156,-432,220,1) (-226,224,-218,1) (-497,-360,882,1) (-249,478,538,1) (-178,296,-146,1) (109,-273,-278,1) (-32,424,99,1) (372,-282,247,1) (292,268,4,1) (452,16,194,1) (492,-78,368,1) (-428,-474,1007,1) (324,-496,780,1) (-463,256,495,1) (-182,107,-445,1) (473,174,392,1) (-231,172,-291,1) (176,-91,-466,1) (422,130,156,1) (230,194,-261,1) (-286,456,535,1) (-363,-387,502,1) (304,-146,-168,1) (404,47,37,1) (-219,-104,-388,1) (14,202,-459,1) (-33,39,-613,1) (1,-30,-620,1) (76,-267,-315,1) (287,-342,173,1) (-272,235,-106,1) (331,-3,-185,1) (-117,-17,-567,1) (405,-220,225,1) (-412,110,103,1) (473,-199,429,1) (41,-414,68,1) (-87,-180,-463,1) (-61,-208,-435,1) (366,220,105,1) (187,-145,-399,1) (-103,-371,-30,1) (394,398,630,1) (99,-55,-572,1) (-394,-139,74,1) (102,-167,-470,1) (-428,-92,142,1) (329,-46,-182,1) (390,209,159,1) (233,477,503,1) (-206,182,-321,1) (-247,335,69,1) (267,165,-229,1) (-370,-319,330,1) (457,496,1195,1) (400,119,72,1) (-174,-227,-296,1) (248,-305,-5,1) (-354,-178,4,1) (139,-249,-298,1) (182,-284,-168,1) (83,253,-340,1) (124,-112,-512,1) (-318,-11,-218,1) (-428,415,797,1) (-58,-134,-538,1) (72,194,-452,1) (-324,-186,-65,1) (-165,-195,-362,1) (-6,-233,-406,1) (-224,-130,-355,1) (385,102,10,1) (142,108,-496,1) (296,287,56,1) (429,-89,144,1) (-487,87,355,1) (126,95,-524,1) (-185,-275,-184,1) (482,-3,305,1) (214,-470,443,1) (-113,-369,-28,1) (-105,458,259,1) (324,70,-184,1) (-253,-366,168,1) (374,240,166,1) (-100,-374,-24,1) (-415,-239,293,1) (227,226,-213,1) (368,-2,-82,1) (-12,273,-325,1) (408,0,42,1) (-165,10,-514,1) (-429,149,201,1) (234,-472,486,1) (-379,-77,-25,1) (-443,7,161,1) (53,-49,-602,1) (-60,-147,-522,1) (186,-14,-484,1) (370,-98,-37,1) (386,495,952,1) (-14,-378,-51,1) (197,-312,-79,1) (489,-330,768,1) (175,237,-276,1) (-446,-349,659,1) (-453,63,212,1) (-279,196,-158,1) (-228,-252,-161,1) (316,195,-72,1) (-195,-201,-310,1) (-277,255,-56,1) (238,75,-374,1) (251,-100,-331,1) (-463,96,270,1) (301,422,450,1) (66,-238,-379,1) (-481,-262,576,1) (-51,-93,-578,1) (-400,220,209,1) (-40,-250,-367,1) (266,-30,-337,1) (-63,-230,-396,1) (217,-271,-141,1) (464,27,240,1) (-338,252,87,1) (-260,237,-128,1) (-22,139,-544,1) (273,-451,487,1) (-85,170,-479,1) (114,177,-446,1) (188,351,10,1) (-399,170,128,1) (-267,-300,21,1) (-135,193,-401,1) (-51,-393,4,1) (190,418,219,1) (43,459,226,1) (111,271,-280,1) (398,107,55,1) (-227,-464,443,1) (-166,13,-512,1) (272,311,59,1) (-373,20,-65,1) (359,42,-101,1) (-335,-52,-164,1) (-306,352,246,1) (-226,-206,-249,1) (-3,7,-623,1) (-6,362,-99,1) (-325,442,580,1) (468,364,782,1) (336,-14,-171,1) (299,-78,-241,1) (-267,172,-220,1) (-496,5,360,1) (207,-162,-347,1) (-46,-376,-49,1) (-380,473,848,1) (483,161,413,1) (-387,-94,10,1) (354,464,738,1) (180,-377,74,1) (-63,-338,-150,1) (116,-226,-365,1) (-164,34,-511,1) (-283,-325,119,1) (-155,202,-364,1) (473,266,554,1) (434,121,188,1) (269,-85,-305,1) (-197,-418,230,1) (-93,257,-324,1) (-294,26,-275,1) (205,-336,-4,1) (-338,318,237,1) (69,257,-340,1) (-276,-386,276,1) (-331,-115,-132,1) (229,-58,-400,1) (220,-262,-155,1) (158,395,100,1) (82,-164,-489,1) (343,-177,-27,1) (-255,-61,-348,1) (-432,159,223,1) (242,-351,103,1) (-458,-26,218,1) (-146,67,-520,1) (-346,17,-143,1) (229,471,473,1) (-438,219,335,1) (204,-215,-272,1) (332,372,370,1) (170,37,-502,1) (-210,-135,-374,1) (274,447,475,1) (-265,-168,-229,1) (-242,-446,406,1) (154,3,-528,1) (-8,221,-428,1) (-363,-291,242,1) (370,-322,338,1) (182,-301,-128,1) (245,336,67,1) (216,-51,-426,1) (282,277,1,1) (-357,-39,-107,1) (-463,475,1136,1) (-191,206,-308,1) (-13,98,-584,1) (-453,-264,475,1) (20,-219,-430,1) (67,278,-296,1) (-166,-303,-146,1) (-244,326,39,1) (417,-108,118,1) (-490,262,611,1) (70,192,-456,1) (461,-210,402,1) (3,152,-531,1) (238,-240,-166,1) (-96,380,-9,1) (221,-60,-413,1) (330,-495,791,1) (-378,-208,120,1) (102,-332,-141,1) (28,-403,29,1) (-52,-430,126,1) (374,282,253,1) (-234,-395,219,1) (83,-341,-131,1) (-3,92,-589,1) (420,-458,920,1) (-241,356,115,1) (-169,261,-237,1) (-17,-456,209,1) (386,423,687,1) (217,-198,-278,1) (229,221,-218,1) (-77,-202,-436,1) (90,23,-589,1) (-106,-487,369,1) (93,-256,-327,1) (294,358,234,1) (-152,-148,-443,1) (344,444,638,1) (412,385,648,1) (-322,243,27,1) (-309,439,529,1) (-298,-266,14,1) (435,-437,897,1) (-367,127,-20,1) (-136,361,-28,1) (-177,286,-171,1) (356,120,-59,1) (-149,-145,-450,1) (-136,447,249,1) (-268,-367,202,1) (280,80,-284,1) (-15,272,-326,1) (-101,-96,-546,1) (159,-240,-292,1) (81,-123,-536,1) (-50,-5,-613,1) (78,184,-463,1) (-95,141,-508,1) (316,-493,747,1) (152,-171,-414,1) (266,-17,-339,1) (448,-408,844,1) (337,437,594,1) (-45,259,-347,1) (-356,88,-85,1) (15,223,-423,1) (-452,-238,420,1) (-402,-49,32,1) (420,-143,163,1) (-493,-228,556,1) (306,2,-249,1) (350,-35,-128,1) (406,-34,40,1) (-244,413,296,1) (-55,407,50,1) (-283,-314,90,1) (-134,-359,-36,1) (-222,-322,-11,1) (-447,232,390,1) (437,-304,509,1) (-205,-73,-434,1) (419,-158,178,1) (188,292,-141,1) (83,-152,-503,1) (299,354,235,1) (-371,-224,127,1) (179,94,-460,1) (-343,-380,424,1) (349,-455,691,1) (65,232,-391,1) (-238,250,-147,1) (-427,-98,143,1) (-497,-250,614,1) (-46,235,-394,1) (-338,149,-77,1) (-495,88,387,1) (43,-153,-522,1) (-249,34,-371,1) (-386,333,415,1) (381,412,635,1) (163,-337,-63,1) (-183,79,-464,1) (-180,-63,-478,1) (-97,-136,-512,1) (-390,125,47,1) (226,-318,-14,1) (-498,229,578,1) (-68,-45,-597,1) (-61,93,-574,1) (-420,-57,94,1) (-343,122,-93,1) (289,-93,-255,1) (-368,403,567,1) (-284,290,35,1) (378,497,935,1) (453,-330,632,1) (51,-252,-359,1) (106,454,245,1) (111,82,-547,1) (-461,-288,558,1) (-216,-279,-125,1) (-287,152,-201,1) (168,-74,-488,1) (-280,247,-66,1) (368,-124,-20,1) (-156,133,-455,1) (283,-25,-300,1) (11,498,368,1) (-37,-224,-417,1) (351,-65,-114,1) (-296,486,671,1) (-49,102,-572,1) (415,-462,918,1) (-341,453,662,1) (-251,-58,-358,1) (-351,-39,-124,1) (-71,300,-243,1) (-396,354,504,1) (350,198,23,1) (-129,-330,-121,1) (-194,-371,77,1) (144,316,-141,1) (-398,-418,708,1) (-433,452,943,1) (17,-229,-412,1) (448,-22,181,1) (221,25,-425,1) (-132,258,-287,1) (183,-204,-323,1) (-399,-55,25,1) (-57,29,-607,1) (-280,46,-301,1) (-141,-285,-219,1) (-128,-468,317,1) (86,41,-587,1) (-163,214,-334,1) (-340,-372,392,1) (316,-258,41,1) (-306,243,-13,1) (258,-36,-352,1) (166,-289,-179,1) (-339,-334,282,1) (78,418,99,1) (349,373,419,1) (400,449,822,1) (-207,-182,-319,1) (-47,13,-614,1) (363,311,290,1) (227,-290,-81,1) (342,-212,23,1) (250,-346,105,1) (410,-219,240,1) (293,-373,276,1) (-25,11,-620,1) (384,438,733,1) (-347,-430,597,1) (-426,-182,234,1) (147,492,430,1) (-358,-5,-110,1) (367,-434,668,1) (288,-340,170,1) (19,-224,-421,1) (-195,-292,-130,1) (-377,-234,163,1) (457,-224,412,1) (-257,342,108,1) (57,-489,345,1) (468,-493,1224,1) (21,327,-194,1) (444,173,284,1) (396,491,967,1) (18,485,318,1) (-392,327,418,1) (-326,276,106,1) (486,192,468,1) (-473,483,1204,1) (496,-496,1344,1) (-334,-406,481,1) (-231,-401,232,1) (-130,11,-555,1) (440,426,876,1) (21,384,-32,1) (432,-482,1052,1) (186,351,7,1) (190,58,-465,1) (344,156,-53,1) (-449,304,552,1) (264,-461,505,1) (106,437,185,1) (314,67,-211,1) (104,340,-118,1) (26,75,-598,1) (344,191,-4,1) (169,-412,169,1) (289,-486,655,1) (99,205,-416,1) (439,-405,803,1) (64,346,-128,1) (-388,-275,280,1) (172,302,-140,1) (282,-8,-305,1) (-67,333,-162,1) (-229,-328,16,1) (371,377,495,1) (-416,161,172,1) (-81,187,-457,1) (-24,444,167,1) (-262,-205,-181,1) (111,406,84,1) (-117,-125,-506,1) (419,481,1003,1) (-445,333,611,1) (-449,118,238,1) (154,-337,-74,1) (343,-199,5,1) (464,100,277,1) (292,-128,-217,1) (-92,-461,260,1) (44,-245,-375,1) (415,127,129,1) (415,-191,211,1) (-210,-134,-375,1) (-271,27,-327,1) (161,339,-60,1) (-92,-481,335,1) (-311,-198,-80,1) (499,-256,634,1) (-390,-475,887,1) (361,263,174,1) (-313,179,-103,1) (-461,-374,785,1) (-245,331,54,1) (-2,162,-518,1) (369,-483,854,1) (416,259,336,1) (143,306,-167,1) (-457,432,958,1) (-352,-229,81,1) (-66,308,-226,1) (-415,341,530,1) (326,-226,5,1) (-382,300,319,1) (17,-273,-324,1) (324,-147,-117,1) (489,-492,1300,1) (-496,-388,962,1) (-238,334,49,1) (109,423,139,1) (178,125,-434,1) (315,-88,-195,1) (-256,96,-324,1) (-46,-349,-128,1) (243,225,-185,1) (85,26,-592,1) (309,-99,-202,1) (-173,-442,277,1) (19,-398,11,1) (74,245,-361,1) (426,427,831,1) (210,412,231,1) (434,213,311,1) (-329,22,-188,1) (108,-431,165,1) (-325,-292,139,1) (383,86,-7,1) (-49,-45,-606,1) (-485,102,358,1) (-327,239,32,1) (-338,199,-8,1) (24,62,-606,1) (-499,81,398,1) (-444,-397,795,1) (-369,301,283,1) (-496,-467,1232,1) (-14,415,65,1) (466,-326,669,1) (413,-388,660,1) (195,-4,-471,1) (-320,369,330,1) (204,-461,392,1) (-70,-370,-56,1) (-7,-56,-611,1) (231,165,-301,1) (-341,392,456,1) (-161,182,-387,1) (-70,-160,-501,1) (-262,-15,-348,1) (-58,-132,-540,1) (-239,-55,-383,1) (-100,246,-341,1) (-165,-159,-413,1) (419,-277,385,1) (-48,89,-582,1) (219,132,-362,1) (-67,-102,-564,1) (170,362,16,1) (27,-362,-96,1) (-218,-266,-150,1) (302,-60,-244,1) (-399,-383,599,1) (-403,30,29,1) (-44,-166,-505,1) (397,202,169,1) (-249,-183,-241,1) (-423,497,1080,1) (151,-82,-505,1) (391,373,544,1) (369,-44,-71,1) (67,-24,-603,1) (388,464,839,1) (-379,226,155,1) (-33,-242,-385,1) (200,-464,397,1) (-78,300,-239,1) (-348,18,-138,1) (-194,107,-427,1) (351,-204,35,1) (-21,28,-618,1) (46,295,-267,1) (105,18,-578,1) (-79,-115,-545,1) (-231,366,125,1) (340,336,290,1) (-182,203,-326,1) (275,-62,-305,1) (-96,-283,-266,1) (196,-114,-418,1) (416,231,281,1) (307,192,-99,1) (382,-200,119,1) (497,-36,369,1) (-373,-232,148,1) (442,154,252,1) (313,212,-52,1) (-266,-193,-191,1) (-392,-269,280,1) (191,-124,-416,1) (-427,6,105,1) (-313,-110,-183,1) (-316,462,629,1) (327,88,-165,1) (-346,-2,-144,1) (473,-454,1095,1) (-296,256,-11,1) (237,-439,371,1) (-469,209,430,1) (24,-343,-150,1) (476,-59,296,1) (311,264,41,1) (-372,-480,851,1) (-454,-265,481,1) (-249,236,-152,1) (111,-177,-449,1) (-283,297,49,1) (212,-99,-404,1) (234,14,-403,1) (488,388,931,1) (436,433,886,1) (-309,167,-130,1) (145,-248,-293,1) (198,-171,-349,1) (275,354,180,1) (-220,-308,-50,1) (140,-481,380,1) (-181,160,-390,1) (-435,54,144,1) (410,300,408,1) (-360,-292,235,1) (436,419,838,1) (-107,146,-492,1) (-92,-144,-506,1) (9,-105,-579,1) (-233,-83,-379,1) (86,434,159,1) (-463,337,688,1) (107,-135,-505,1) (87,-64,-577,1) (144,278,-231,1) (-448,162,284,1) (-427,211,283,1) (226,126,-355,1) (96,2,-586,1) (265,303,24,1) (-6,176,-499,1) (197,386,127,1) (-203,-420,246,1) (-283,305,68,1) (-25,-17,-620,1) (-303,-464,604,1) (-108,-267,-291,1) (372,498,921,1) (97,-66,-568,1) (-90,-284,-268,1) (-312,-39,-228,1) (378,-240,178,1) (-353,79,-100,1) (385,242,203,1) (-444,125,227,1) (20,49,-612,1) (-224,-308,-43,1) (-90,73,-570,1) (-229,126,-350,1) (-147,245,-297,1) (-415,50,75,1) (280,-24,-307,1) (282,127,-241,1) (-50,-145,-529,1) (-463,359,749,1) (70,-276,-299,1) (-205,-77,-431,1) (-17,-59,-608,1) (-157,-342,-57,1) (-467,467,1120,1) (177,82,-471,1) (-282,368,236,1) (491,290,676,1) (-386,93,6,1) (-381,359,472,1) (177,168,-385,1) (114,-372,-18,1) (-75,-283,-280,1) (77,279,-288,1) (-247,-89,-348,1) (-175,-24,-498,1) (205,247,-211,1) (458,-379,789,1) (224,-224,-222,1) (-222,257,-162,1) (-282,454,518,1) (-186,-65,-468,1) (297,-220,-77,1) (-299,411,409,1) (372,-181,60,1) (245,24,-381,1) (486,-166,431,1) (152,-114,-479,1) (50,-296,-263,1) (-359,302,256,1) (115,-35,-565,1) (-247,-205,-211,1) (-313,-314,162,1) (-84,411,80,1) (-39,193,-468,1) (143,178,-415,1) (123,456,268,1) (-411,-105,96,1) (-289,-211,-111,1) (-219,-441,346,1) (107,-499,418,1) (82,68,-578,1) (-165,-291,-176,1) (453,384,786,1) (-87,-431,149,1) (162,-497,469,1) (33,414,66,1) (-203,220,-265,1) (-424,212,275,1) (106,36,-573,1) (-119,-276,-262,1) (-310,-345,236,1) (-222,-127,-362,1) (-135,66,-533,1) (154,-77,-505,1) (-352,154,-33,1) (215,488,513,1) (-311,143,-155,1) (348,101,-98,1) (212,-15,-443,1) (103,-280,-267,1) (-126,400,79,1) (439,-51,157,1) (87,20,-591,1) (485,467,1189,1) (243,-350,102,1) (445,397,798,1) (-73,-206,-432,1) (-262,492,619,1) (447,160,277,1) (-385,76,-7,1) (140,329,-112,1) (40,329,-184,1) (-53,-137,-537,1) (-95,-366,-51,1) (347,-146,-56,1) (-304,383,332,1) (-232,145,-324,1) (-55,288,-279,1) (105,-112,-529,1) (6,254,-365,1) (-192,-121,-417,1) (-344,101,-109,1) (116,-377,-1,1) (23,-249,-373,1) (-263,-425,375,1) (391,-459,830,1) (114,195,-419,1) (-13,476,283,1) (-425,121,157,1) (298,-442,512,1) (474,493,1247,1) (440,-283,471,1) (113,-139,-495,1) (-307,248,0,1) (-14,446,172,1) (-469,364,786,1) (-423,132,161,1) (-45,-301,-253,1) (-370,205,91,1) (-65,-296,-256,1) (71,-25,-601,1) (317,-259,46,1) (462,268,517,1) (-184,58,-474,1) (41,-127,-552,1) (7,10,-623,1) (-211,223,-246,1) (-402,149,111,1) (203,-209,-284,1) (-128,-336,-106,1) (-288,-98,-253,1) (-497,-211,542,1) (-491,-43,347,1) (-13,-361,-101,1) (-363,422,615,1) (-158,208,-350,1) (-128,-365,-25,1) (448,-191,324,1) (402,-261,295,1) (366,-81,-61,1) (112,-152,-481,1) (428,400,748,1) (-453,-499,1193,1) (24,249,-373,1) (-209,395,175,1) (412,3,55,1) (-228,414,269,1) (291,-219,-93,1) (-154,-247,-284,1) (-81,-18,-596,1) (-350,260,136,1) (-335,22,-172,1) (394,-411,672,1) (330,272,107,1) (-173,172,-385,1) (-334,438,589,1) (-431,313,511,1) (-459,-431,962,1) (-188,289,-148,1) (-140,-318,-140,1) (176,362,24,1) (-46,65,-598,1) (128,234,-339,1) (410,380,626,1) (-372,-132,0,1) (-494,387,951,1) (32,27,-616,1) (257,120,-301,1) (-168,4,-510,1) (447,169,289,1) (360,498,886,1) (237,149,-310,1) (-486,305,693,1) (460,303,589,1) (-360,-382,478,1) (-46,71,-595,1) (104,-220,-386,1) (404,-40,35,1) (-93,-253,-333,1) (-35,-231,-405,1) (279,491,651,1) (-499,-126,435,1) (-202,4,-460,1) (-204,-223,-258,1) (-352,-368,413,1) (-250,384,216,1) (280,-237,-85,1) (165,215,-329,1) (-459,304,588,1) (332,-5,-182,1) (281,-122,-248,1) (-11,-140,-544,1) (157,-132,-455,1) (319,-461,633,1) (115,-241,-338,1) (-192,-131,-407,1) (-275,-192,-173,1) (242,23,-387,1) (312,-486,710,1) (299,459,576,1) (-355,-476,786,1) (319,424,502,1) (-214,-41,-433,1) (114,-173,-452,1) (-262,-78,-324,1) (321,299,146,1) (-215,-146,-353,1) (-68,152,-512,1) (-352,-30,-124,1) (-258,-93,-322,1) (277,110,-268,1) (131,-439,215,1) (-172,-371,45,1) (372,-159,30,1) (427,306,480,1) (-15,450,187,1) (100,-116,-529,1) (-288,-466,576,1) (497,38,370,1) (-228,-106,-370,1) (-166,-235,-292,1) (-331,118,-129,1) (118,100,-528,1) (-255,266,-80,1) (-455,-13,205,1) (-352,322,286,1) (-428,278,418,1) (382,-101,0,1) (407,229,248,1) (239,309,-13,1) (10,-301,-260,1) (235,-414,282,1) (82,446,198,1) (-381,55,-31,1) (-41,-110,-568,1) (448,292,520,1) (155,-408,138,1) (-115,-252,-316,1) (191,129,-411,1) (236,-409,268,1) (-364,33,-89,1) (-337,414,516,1) (-110,61,-560,1) (296,-406,386,1) (-224,80,-397,1) (103,-26,-578,1) (-210,188,-305,1) (-468,-289,586,1) (307,86,-217,1) (169,-328,-79,1) (9,-64,-607,1) (326,101,-157,1) (320,-450,595,1) (-233,-75,-384,1) (-462,15,230,1) (-326,10,-198,1) (177,-437,265,1) (399,-286,340,1) (358,492,857,1) (-11,-87,-592,1) (71,462,250,1) (203,-266,-175,1) (493,413,1030,1) (-484,54,324,1) (58,-312,-220,1) (-461,493,1198,1) (139,289,-212,1) (-462,405,886,1) (-311,-424,482,1) (383,203,127,1) (-251,-132,-302,1) (-144,-189,-397,1) (-257,69,-340,1) (-356,-290,219,1) (-467,56,261,1) (280,494,665,1) (-266,463,516,1) (-377,-495,924,1) (-8,180,-493,1) (-308,30,-240,1) (148,-319,-129,1) (-356,-88,-85,1) (-282,-475,596,1) (100,-207,-412,1) (407,-221,234,1) (41,-250,-367,1) (134,351,-59,1) (-8,-322,-208,1) (494,202,515,1) (-290,26,-284,1) (-43,-321,-204,1) (259,-54,-343,1) (-383,381,543,1) (-49,109,-566,1) (36,142,-537,1) (-386,-340,434,1) (322,-242,25,1) (71,-484,333,1) (-218,-353,64,1) (-192,-336,-24,1) (-75,349,-114,1) (-87,-466,275,1) (175,405,154,1) (-289,145,-205,1) (82,-80,-571,1) (-354,-486,822,1) (98,404,67,1) (-40,215,-432,1) (261,410,321,1) (-201,-228,-254,1) (27,-88,-589,1) (-69,-175,-482,1) (169,-160,-407,1) (450,-376,751,1) (147,-411,138,1) (48,-29,-611,1) (2,81,-597,1) (-378,-118,3,1) (291,266,-2,1) (463,-314,628,1) (411,476,958,1) (283,290,33,1) (-89,-27,-589,1) (26,-204,-454,1) (271,298,25,1) (323,-341,258,1) (-296,-377,295,1) (327,-319,211,1) (-38,253,-361,1) (-196,-416,222,1) (341,351,334,1) (55,-182,-479,1) (-93,176,-465,1) (199,-327,-37,1) (-83,137,-521,1) (-142,-197,-387,1) (89,-383,-5,1) (-432,499,1118,1) (89,94,-556,1) (-229,-164,-306,1) (-133,-431,190,1) (-6,70,-604,1) (-309,-204,-75,1) (251,152,-279,1) (-476,-470,1166,1) (235,365,130,1) (381,-235,177,1) (-342,-237,68,1) (440,357,660,1) (-64,-168,-494,1) (-31,293,-276,1) (134,-467,320,1) (409,202,208,1) (-492,-26,347,1) (-229,-222,-216,1) (309,137,-166,1) (-154,-222,-331,1) (-318,36,-214,1) (73,432,144,1) (-337,97,-131,1) (462,397,860,1) (-63,318,-203,1) (-362,94,-64,1) (-444,-447,964,1) (-74,-9,-601,1) (-115,395,53,1) (-240,427,335,1) (-356,195,35,1) (434,117,184,1) (465,-313,633,1) (-99,77,-560,1) (32,178,-492,1) (259,-457,479,1) (-273,166,-215,1) (-295,323,141,1) (103,-422,131,1) (-265,-104,-299,1) (-285,328,131,1) (-48,-233,-397,1) (-270,442,449,1) (151,-400,107,1) (-323,145,-122,1) (-498,-179,496,1) (-185,436,273,1) (437,-244,378,1) (-402,-186,161,1) (332,130,-115,1) (491,66,357,1) (172,-307,-128,1) (-292,377,285,1) (310,454,585,1) (-275,-318,83,1) (-356,-471,770,1) (133,-90,-520,1) (-242,50,-379,1) (-463,-143,315,1) (227,181,-286,1) (-142,-477,367,1) (495,-231,569,1) (459,-274,519,1) (-133,-252,-298,1) (-466,496,1228,1) (-285,99,-259,1) (143,-93,-507,1) (306,-5,-249,1) (-102,92,-548,1) (-76,122,-541,1) (273,67,-307,1) (150,-119,-477,1) (477,407,948,1) (430,-261,388,1) (132,169,-439,1) (97,154,-491,1) (139,365,-13,1) (89,365,-59,1) (-293,336,171,1) (398,-322,424,1) (-474,-28,278,1) (321,-67,-193,1) (-246,-209,-206,1) (330,345,287,1) (215,-73,-417,1) (93,-243,-352,1) (-447,473,1070,1) (-291,459,557,1) (378,-303,315,1) (-326,-14,-197,1) (365,270,200,1) (-385,-20,-29,1) (110,203,-410,1) (-180,317,-92,1) (15,-307,-245,1) (494,40,358,1) (164,290,-179,1) (472,417,962,1) (-443,277,468,1) (237,271,-105,1) (-320,-195,-62,1) (-497,-268,651,1) (-247,-288,-47,1) (-334,-393,440,1) (-92,-161,-486,1) (92,-251,-337,1) (-416,206,238,1) (228,194,-265,1) (-115,-477,339,1) (-14,399,13,1) (-285,-45,-290,1) (-86,378,-22,1) (-279,-138,-236,1) (271,-223,-131,1) (-386,-17,-26,1) (-477,-207,457,1) (288,-475,610,1) (24,-484,315,1)core++-1.7/progs/chull/inputs/README0100644000175000001440000000162007437361201016436 0ustar joachimusersREADME for CONVEX HULL data files ============================================================= This directory contains sample input files for the chull program (and its variant chull4). The input files for chull begin with small letters: cube, points1, points2, etc. The input files for chull4 begins with capital letters: Cube, Points1, Points2, etc. ============================================================= DIFFERENCE between chull and chull4 is just in the format of the input files. (1) chull input file: this is just a sequence of numbers x1 x2 x3 x4 x5 ... So the first point is (x1, x2, x3), and the next point is (x4, x5, x6), etc. (2) chull4 input file : this is a sequence of quadruples of the form (x1, y1, z1, w1) (x2, y2, z2, w2) (x3, y3, z3, w3) ... where the fourth coordinate (w's) is the homogenizing coordinate (usually set to 1). core++-1.7/progs/chull/inputs/cube0100644000175000001440000000007407437361200016420 0ustar joachimusers0 0 0 0 10 0 10 10 0 10 0 0 0 0 10 0 10 10 10 10 10 10 0 10 core++-1.7/progs/chull/inputs/degen0100644000175000001440000000004107437361201016557 0ustar joachimusers0 0 0 0 0 11 0 11 0 11 0 0 1 3 7 core++-1.7/progs/chull/inputs/para10000100644000175000001440000003176007437361201016735 0ustar joachimusers-264 190 -200 -378 144 30 -496 213 541 392 -412 669 -105 95 -543 281 279 3 117 -258 -302 153 331 -91 196 -458 368 184 416 203 -97 -70 -566 -332 17 -181 413 -310 442 309 176 -117 -285 -191 -152 191 -50 -467 498 313 760 -431 1 119 460 -436 983 395 30 3 344 149 -61 -378 -439 718 -223 452 392 257 -181 -228 112 148 -485 221 -483 504 316 -287 105 429 80 138 -305 -194 -101 -253 145 -283 -221 -465 436 213 -245 -202 35 149 -530 -181 -94 -457 -346 -362 379 -470 -224 460 -301 -193 -112 -297 455 557 125 314 -166 78 -179 -471 331 -131 -116 34 235 -398 -150 31 -529 -209 44 -441 336 37 -166 -336 -410 500 71 377 -35 -156 -419 175 1 162 -518 -14 154 -528 300 16 -262 429 498 1104 322 -392 405 428 -78 133 421 -19 86 242 227 -183 350 -249 114 -62 -325 -185 281 228 -99 218 92 -399 -260 382 230 181 310 -108 234 -499 591 390 -290 321 162 -148 -431 363 -63 -80 367 268 202 -90 164 -483 375 -187 78 -439 271 440 294 302 86 -26 119 -564 -471 411 939 293 309 101 114 -14 -570 -123 353 -64 -157 -467 347 138 -448 255 -467 3 248 -239 195 -243 354 -400 517 -393 196 147 367 17 -83 -165 217 -326 329 -105 -146 -37 98 -579 -327 436 564 -308 -299 113 322 484 728 -89 -54 -580 -139 -261 -273 288 -106 -247 376 340 404 -74 -145 -517 -424 -404 748 -316 -325 198 -297 380 306 -483 219 501 -310 233 -22 23 85 -592 -328 -403 456 257 -417 336 -212 457 391 405 -252 286 441 -209 328 193 -222 -277 30 -44 -612 171 -119 -450 -229 -428 318 235 -153 -309 -332 419 519 21 -130 -554 274 38 -317 -436 463 994 -254 86 -336 23 -83 -594 182 -245 -251 0 470 259 -313 -120 -174 -307 -396 380 170 385 84 -119 -325 -144 -184 -473 406 56 87 -580 -402 -234 241 433 -235 347 -340 -71 -141 134 433 198 466 197 400 372 -312 319 -241 -130 -323 104 440 193 125 -421 147 385 311 356 -42 -447 182 414 -396 689 437 -230 351 -222 -271 -132 -204 333 -13 315 -106 -181 -425 223 297 158 -266 -240 -373 -232 148 -357 -431 629 464 -244 475 -302 -141 -179 359 -386 487 483 438 1076 498 270 659 -129 -473 337 159 -26 -519 463 429 969 252 -333 73 -300 60 -249 481 93 336 134 179 -423 -273 368 216 306 -6 -249 374 -67 -46 499 -395 996 131 -167 -443 463 244 471 -208 376 114 217 -463 422 -277 243 -80 195 196 -317 182 99 -452 -77 348 -115 299 483 667 305 -133 -180 92 -41 -583 93 -65 -572 -260 -438 414 -80 -411 77 -5 -106 -578 -307 -399 390 227 -368 124 344 36 -145 -470 -295 607 -245 224 -182 401 436 779 -201 -201 -300 259 -427 373 -243 39 -381 -61 349 -121 498 -492 1336 -241 -287 -61 -431 179 247 -198 63 -451 -452 -6 193 163 274 -217 125 -18 -559 267 108 -291 296 312 116 -252 -4 -369 188 -341 -17 294 487 670 417 366 607 -281 -68 -289 -220 -457 405 -95 -213 -406 -198 117 -412 -144 480 380 418 418 774 -497 -112 414 57 277 -303 -486 19 322 95 -493 384 -209 -117 -394 -246 286 -54 -454 -88 231 55 -492 356 -195 -104 -428 -273 236 -102 175 -231 -287 -384 462 819 70 232 -388 -207 25 -449 126 -314 -165 28 242 -386 -220 256 -168 298 71 -248 262 -436 411 453 349 684 498 -97 405 -121 207 -393 274 -292 17 -82 -75 -574 -24 33 -617 -138 -478 366 -259 154 -260 46 366 -79 339 -451 649 354 57 -109 -172 329 -72 -212 -398 189 -125 -475 341 -335 -197 -19 -484 -223 512 -81 -132 -527 -242 -399 247 -382 -35 -35 19 42 -615 440 -473 1045 403 461 875 -233 32 -402 -17 -392 -7 -154 31 -525 461 402 872 359 266 174 -335 460 671 -384 -310 350 -400 -81 42 -295 -411 400 195 123 -411 -43 452 200 224 74 -401 -108 -282 -258 -409 -193 194 -256 493 610 -256 11 -361 0 226 -419 118 345 -91 -268 55 -324 223 -434 328 -204 387 141 -499 -89 403 -448 -399 815 329 -243 45 -311 -1 -236 379 145 34 -74 78 -577 -306 317 152 295 -216 -89 -400 -485 957 -248 -157 -279 25 251 -369 -456 -382 791 72 -225 -400 172 -230 -293 -159 467 349 -368 -159 19 -146 -316 -139 -59 -342 -141 -60 130 -541 157 -206 -355 -250 -442 407 372 -56 -57 375 142 19 227 474 481 156 479 391 -208 -344 22 205 -165 -346 -226 -248 -173 109 445 215 21 449 184 388 153 72 -234 -283 -84 336 206 -2 -126 -249 -312 -189 -494 495 44 61 -601 -436 -109 184 438 -491 1107 206 387 145 164 160 -413 -346 320 264 -159 -12 -522 -431 92 153 -428 -411 784 376 241 174 -238 -432 349 52 467 259 -58 302 -245 -246 -53 -370 -179 314 -101 10 212 -443 293 -77 -256 220 -26 -427 -215 -141 -359 -390 -62 0 -346 -50 -134 425 -278 407 -483 497 1297 -289 -395 334 493 -438 1115 345 -270 143 -370 -128 -10 -328 71 -173 -351 -75 -108 -30 -286 -292 3 -343 -153 425 376 664 -44 -314 -221 -290 65 -270 123 -136 -489 24 85 -592 -494 -4 352 295 -389 329 -36 357 -108 455 193 353 486 -197 476 364 32 -89 -49 -235 -393 24 420 84 -22 -498 370 -448 -40 185 427 427 834 415 -412 744 -387 -45 -16 210 -24 -445 -56 -291 -272 -464 -51 247 204 331 -19 59 -357 -100 163 -10 -517 335 124 -113 292 175 -160 -369 -282 238 439 154 241 -386 -108 18 156 -335 -77 351 58 -117 -432 241 355 145 -320 -130 -329 -170 -75 155 114 -475 39 190 -473 -461 -282 544 -4 97 -586 -139 -366 -10 -438 -329 576 257 353 138 345 387 451 -453 259 465 17 -340 -160 -373 -352 428 -176 477 410 205 -109 -408 194 -175 -350 70 364 -74 154 -300 -168 -46 -332 -174 390 -8 -15 -114 -139 -494 -436 246 378 -5 -374 -64 416 -273 366 478 237 514 -410 -29 52 106 -341 -113 97 253 -330 -17 50 -612 -67 373 -49 -281 257 -43 -81 -442 183 -114 118 -516 11 54 -611 -17 439 148 344 -458 688 160 -186 -382 -333 51 -169 40 -380 -39 -237 129 -332 -380 234 172 -290 -222 -90 -194 462 380 260 355 150 -130 109 -508 -451 -398 823 -497 -393 982 -12 120 -565 117 -483 364 -421 95 121 455 422 916 136 90 -517 -289 302 75 -384 250 216 421 -121 143 -145 -484 397 -412 64 71 -206 -107 -408 2 -471 263 -276 371 231 137 -228 -340 473 139 348 -122 -64 -547 -265 495 637 -48 -187 -474 65 -118 -551 -290 -324 132 471 -80 289 477 -438 1053 -355 373 436 -60 -1 -609 389 27 -15 -461 -342 694 420 40 88 -314 -381 351 -114 323 -154 -110 -166 -465 -63 268 -320 269 171 -217 238 -304 -27 483 -222 506 77 -332 -159 -47 23 -612 87 -95 -557 85 232 -379 -247 -294 -33 -383 27 -34 -256 -226 -157 -78 283 -279 -40 40 -610 -355 -242 114 429 -22 114 194 172 -354 -277 -159 -215 -115 -82 -543 -201 162 -357 495 -33 360 -410 -7 48 -471 -6 263 -447 260 445 247 -447 419 466 363 771 79 -315 -201 -387 468 851 72 15 -602 -412 329 488 -81 65 -580 -2 -433 126 287 338 162 -49 -319 -207 -387 -411 651 -349 79 -111 -322 143 -127 107 172 -459 196 -157 -371 -106 248 -332 -216 -268 -149 -198 -32 -462 -156 -223 -327 -89 415 96 291 -2 -285 219 -315 -35 -461 -307 603 -249 325 46 -494 202 515 -382 290 296 -369 196 74 467 274 548 -221 114 -376 -55 121 -553 -332 404 470 -285 -31 -295 -153 58 -516 245 258 -117 -51 11 -612 -269 -357 175 195 -231 -258 -165 446 280 -430 -159 216 123 -450 246 -42 -112 -566 -319 -370 330 -170 454 316 -92 444 198 -126 -496 423 426 41 108 407 -384 628 -271 174 -208 229 486 530 -402 -285 347 -307 -260 23 409 -39 51 75 330 -165 30 415 68 -72 80 -577 -152 315 -134 260 -23 -351 -379 189 93 384 -460 812 -462 387 829 465 78 265 269 -443 450 62 498 383 230 -234 -193 459 327 646 -20 -373 -65 -458 -136 289 88 116 -538 -330 -407 474 6 97 -585 172 354 -4 -112 -93 -538 -194 8 -472 -429 -334 558 47 -392 0 -472 -13 268 185 297 -134 43 -278 -307 270 -252 -78 -13 204 -456 -450 466 1054 331 -408 480 -194 -106 -428 207 -25 -449 -14 -311 -236 -453 -366 732 -482 -66 322 40 -177 -492 441 111 203 -12 -37 -617 218 16 -432 450 -121 244 -212 -32 -439 100 -467 288 216 -437 326 236 265 -120 -496 42 367 356 -191 29 435 39 139 283 -103 -260 227 330 17 30 244 -382 -261 -455 476 -458 -344 688 155 30 -524 118 -151 -476 -479 43 301 227 -192 -270 -198 -160 -364 202 -136 -386 -449 -58 196 -132 93 -519 -226 176 -295 3 312 -234 -65 399 29 14 -260 -352 -96 -267 -301 -22 -51 -611 -226 133 -348 -421 303 452 -273 -73 -304 323 269 83 -371 -394 547 255 -69 -344 -55 -68 -593 294 -4 -277 374 -363 462 -436 -377 705 313 66 -214 434 -277 436 -59 -77 -586 -38 344 -144 155 439 243 -232 428 324 48 -153 -520 207 274 -152 273 5 -325 18 402 23 111 -251 -322 -192 -469 403 180 -423 221 26 29 -617 -286 89 -264 151 -498 459 -369 60 -64 -276 71 -298 482 185 442 -110 112 -525 99 158 -484 16 -378 -51 -302 395 365 252 202 -206 -111 129 -507 -212 137 -368 436 -181 267 -208 344 22 321 -298 143 -91 -53 -579 -297 39 -264 -74 -415 87 464 -414 923 -26 52 -610 184 -393 129 -457 306 586 -414 -260 332 176 338 -42 441 -460 1000 -58 -295 -262 176 -146 -414 23 468 254 -158 -158 -424 264 43 -337 250 -314 20 245 -236 -160 -332 -354 318 -152 -392 83 -269 322 80 159 414 162 428 201 270 195 440 302 -153 327 -102 356 -114 -64 -256 -464 499 -462 97 267 58 438 157 400 244 254 -44 125 -553 429 -324 532 389 -427 710 -179 -288 -163 -320 51 -203 -491 338 797 -59 437 154 14 -389 -17 426 -71 122 -43 228 -408 -240 343 77 471 -204 430 380 44 -38 353 360 393 -43 228 -408 79 413 83 -171 -17 -505 -436 -307 513 55 -115 -558 -96 234 -367 435 -87 163 47 -149 -526 -175 -464 359 -38 -274 -317 -36 418 80 453 224 397 236 399 235 91 -82 -563 347 -74 -120 375 51 -50 263 379 227 -37 326 -193 -453 -314 591 -50 227 -407 -403 362 550 -251 -53 -360 -338 -215 18 408 -113 93 248 302 -12 -185 -53 -475 13 -310 -238 -59 -420 95 107 -236 -355 5 -43 -616 314 -15 -228 -305 168 -138 447 214 358 439 -318 551 -361 141 -22 -222 390 181 225 -362 102 -350 108 -87 25 397 9 -115 339 -111 -180 398 139 -496 260 630 477 111 335 -43 -457 219 312 441 543 -262 -45 -341 363 -266 186 -356 278 192 -85 -217 -406 -106 193 -429 -241 -241 -159 -107 -104 -534 -92 420 115 -219 -139 -354 235 100 -362 -266 238 -114 -165 -314 -120 -176 -166 -389 142 -133 -472 -379 59 -35 104 76 -557 -103 337 -127 219 -350 58 -273 44 -317 419 -265 359 302 -213 -77 131 -314 -160 -237 26 -396 -34 123 -558 -264 -459 497 356 474 781 -125 -483 371 -227 208 -244 158 139 -446 329 -308 188 -282 -120 -248 89 -470 291 -426 238 328 -243 -449 418 -243 -349 99 -215 -465 426 -62 415 80 -280 200 -150 -83 185 -459 -202 152 -368 225 -371 129 101 -425 139 -355 374 439 283 302 61 -12 87 -592 494 206 522 466 58 258 235 -485 538 -229 491 550 -435 28 136 -382 -150 49 62 55 -596 -260 281 -37 -270 156 -234 -59 27 -606 -216 -359 78 155 384 62 -285 299 58 233 497 581 76 -303 -233 59 45 -601 402 0 22 -422 112 138 15 -151 -531 79 79 -573 376 196 95 428 -87 139 -274 -356 183 -331 -45 -177 299 109 -218 481 -442 1083 249 111 -326 442 463 1015 -115 150 -480 436 460 983 346 -30 -141 -19 223 -423 470 58 273 -189 -40 -474 406 389 640 -486 257 585 60 442 172 -355 285 205 -439 -187 287 -285 359 216 421 -329 518 417 145 155 281 334 138 84 -359 -80 -41 -5 -616 -424 -219 287 464 56 249 409 -410 717 -211 -156 -348 495 -347 837 -142 228 -335 212 -225 -241 372 -28 -67 -165 -339 -55 186 -331 -47 -443 356 668 -439 202 310 112 394 47 -239 252 -141 -171 255 -246 328 109 -145 194 -141 -393 87 79 -568 -52 376 -47 422 -81 114 -496 -245 600 -378 216 134 29 493 351 -337 363 357 -371 349 414 -492 -314 738 180 -432 252 387 -232 190 462 -377 798 -234 377 163 322 374 350 46 -343 -144 -64 -400 32 104 -213 -399 -209 -248 -203 -381 281 272 -412 -356 562 119 -284 -244 492 126 408 -99 148 -496 194 -237 -248 415 131 133 -115 409 98 396 -263 280 207 245 -212 283 363 223 -344 382 433 -58 -57 -597 379 -60 -34 233 -393 211 58 214 -427 387 145 59 357 -19 -112 361 325 320 -417 -263 348 -52 276 -308 0 -162 -518 -118 384 21 -278 -247 -70 -403 428 758 497 379 938 266 -372 212 236 -316 -1 70 91 -571 123 -222 -366 197 -344 4 491 59 354 301 324 158 -485 137 392 124 -403 87 373 -453 753 372 -152 22 -116 -271 -276 -292 105 -238 -19 -196 -468 9 -47 -614 -342 -250 94 81 393 20 -67 -374 -46 -41 -469 262 -96 -369 -42 -313 -130 -164 189 487 467 -331 204 -19 99 292 -243 300 -53 -252 338 148 -79 295 -303 91 376 302 306 -167 -219 -320 -214 285 -115 -62 35 -603 -159 -194 -372 468 -33 256 265 498 649 370 395 547 -340 -285 163 60 -378 -37 -116 -261 -297 220 -349 57 -486 -357 830 489 161 436 437 -339 599 13 414 62 462 345 706 -330 -277 118 105 107 -533 258 446 438 412 201 216 -112 152 -481 174 -267 -217 23 334 -175 -53 -442 168 455 330 639 -204 151 -366 481 -191 447 293 445 511 470 205 427 -419 -42 85 94 -481 337 -222 263 -149 -259 382 228 -155 498 464 303 -268 30 174 -334 -56 384 -176 89 -102 -118 -526 -367 345 391 -61 -437 155 150 234 -314 213 106 -397 -482 -19 306 26 487 327 -339 107 -118 -80 254 -340 125 197 -406 -8 365 -90 55 336 -160 339 -167 -52 -456 -12 208 -1 427 105 311 396 390 -216 443 347 216 222 -239 -158 -69 -504 194 447 326 -52 -349 -125 -51 -89 -581 -189 -469 398 330 -459 654 155 3 -527 32 -5 -619 -467 -156 345 -191 -135 -404 -113 297 -219 363 -211 81 83 235 -375 72 2 -602 -74 -231 -388 -17 267 -337 199 -348 19 190 -378 92 -198 -386 129 32 113 -568 -356 -162 -11 153 298 -174 340 -340 301 -232 372 145 3 77 -599 -288 389 313 -151 -449 273 -347 431 600 285 224 -98 -92 -314 -195 492 390 952 453 166 307 -482 118 361 288 -181 -160 231 -205 -242 431 374 678 132 59 -540 147 -53 -526 219 414 253 -206 -303 -86 -34 6 -618 -438 314 538 56 -286 -284 221 -184 -292 438 -396 770 1 405 32 494 -71 372 47 -478 299 -190 -195 -327 252 104 -326 -288 101 -251 -288 270 0 -277 158 -216 -36 -387 -19 452 161 297 78 -67 -581 222 -132 -356 488 435 1085 -436 -221 331 348 -333 304 279 229 -102 -364 -316 305 -249 -378 195 -295 60 -261 -73 457 232 -361 138 -26 33 -150 -529 -117 256 -306 347 368 399 435 -17 134 -79 -157 -500 -320 288 117 -194 -410 199 351 84 -102 438 -162 248 142 -371 7 21 392 -7 -249 226 -171 -73 177 -477 158 65 -506 -210 -334 -1 415 172 183 421 398 718 -6 264 -344 308 476 662 -339 -374 395 -369 448 723 -69 -279 -293 275 -366 214 core++-1.7/progs/chull/inputs/points0100644000175000001440000000063207437361201017017 0ustar joachimusers-368 -331 -241 240 305 212 -45 19 -136 89 168 -43 188 -362 -41 -284 351 -285 294 -300 -279 -320 317 153 198 -207 159 241 -74 100 -168 -160 -244 169 149 -367 -332 -36 171 -346 -24 -68 309 22 303 -334 -280 44 -3 293 211 -116 -20 90 -298 110 -141 245 -134 228 -348 204 -250 -320 56 -368 213 310 -39 37 -195 176 230 17 56 -121 -71 -45 -129 162 -145 153 -119 -44 277 -64 -140 -317 -58 -241 352 14 -62 290 -180 -130 core++-1.7/progs/chull/inputs/points10100644000175000001440000000063207437361201017100 0ustar joachimusers-368 -331 -241 240 305 212 -45 19 -136 89 168 -43 188 -362 -41 -284 351 -285 294 -300 -279 -320 317 153 198 -207 159 241 -74 100 -168 -160 -244 169 149 -367 -332 -36 171 -346 -24 -68 309 22 303 -334 -280 44 -3 293 211 -116 -20 90 -298 110 -141 245 -134 228 -348 204 -250 -320 56 -368 213 310 -39 37 -195 176 230 17 56 -121 -71 -45 -129 162 -145 153 -119 -44 277 -64 -140 -317 -58 -241 352 14 -62 290 -180 -130 core++-1.7/progs/chull/inputs/points20100644000175000001440000000233007437361201017076 0ustar joachimusers-309 61 -239 394 112 51 56 -178 455 -451 31 -176 -17 -361 314 -49 398 -119 -120 -288 -259 141 -217 -378 68 64 348 25 -66 -65 -408 78 180 -431 133 108 -51 252 45 -319 233 137 258 -111 277 341 -132 -125 72 -320 161 -345 -130 336 -198 -116 12 245 -164 291 61 203 -359 98 338 63 229 -403 98 21 -113 -239 287 96 195 -9 192 -232 112 -299 64 -470 82 86 92 -93 304 43 260 106 -51 -199 241 -115 62 369 35 162 328 409 191 -114 -30 130 212 473 -4 54 5 -79 -97 318 -51 334 -95 441 -59 394 -265 -111 370 150 -179 298 -153 -61 -414 105 -99 -131 -108 -93 176 -207 -109 92 -231 331 -38 3 -304 172 -143 -66 -55 203 372 30 -217 -252 398 174 154 398 -79 -245 -250 164 315 -135 74 -143 23 -183 392 -70 -44 -135 -196 376 120 -87 87 457 -31 187 -274 220 89 -274 -23 153 432 364 -47 -172 -177 29 -448 -5 337 334 -226 -215 102 -283 47 333 -64 311 -272 184 -249 -239 484 108 -46 394 -34 -110 170 -170 -74 7 -64 225 175 -275 308 133 -280 333 -385 156 33 140 167 -155 111 255 152 227 -155 21 330 -367 -59 -100 -258 155 -370 40 8 88 425 0 -123 -64 386 -101 -241 -238 -83 -105 -339 -176 63 414 -123 413 250 49 -212 316 402 52 -244 185 5 -210 -15 29 430 -236 -131 -29 -227 128 215 -17 180 407 -16 172 257 -64 -126 -430 43 -283 -197 -63 -345 161 227 170 233 -118 52 -308 core++-1.7/progs/chull/inputs/points30100644000175000001440000000151107437361201017077 0ustar joachimusers350 357 0 -459 149 0 -381 312 0 199 146 0 -462 -185 0 -302 -499 0 194 291 0 109 -448 0 -298 -477 0 -80 91 0 -396 -361 0 -129 130 0 475 -209 0 357 -354 0 163 38 0 495 -5 0 78 119 0 114 -135 0 -207 94 0 -170 408 0 -316 -169 0 78 474 0 439 129 0 -348 461 0 -476 242 0 -460 -337 0 -412 169 0 -387 -122 0 2 -242 0 -484 -485 0 -271 11 0 93 347 0 -400 457 0 -384 193 0 443 -55 0 77 -397 0 275 -370 0 -448 189 0 258 -297 0 125 281 0 444 165 0 443 -493 0 -191 -468 0 -116 310 0 -211 -100 0 325 17 0 410 -107 0 -160 -175 0 -45 177 0 -256 399 0 -271 -154 0 150 -142 0 -103 -186 0 -409 100 0 439 372 0 19 79 0 290 26 0 387 321 0 409 173 0 -414 -216 0 -27 102 0 -331 365 0 441 -347 0 -335 -129 0 330 -92 0 -254 -466 0 253 395 0 -108 -374 0 -316 -18 0 225 -402 0 -171 -281 0 176 -405 0 244 39 0 415 129 0 -313 412 0 159 78 0 -443 -1 0 -6 -291 0 163 365 0 core++-1.7/progs/chull/inputs/points40100644000175000001440000000140207437361201017077 0ustar joachimusers-486 -453 1141 -414 -452 879 299 480 655 -61 424 110 -361 420 603 124 -263 -285 -275 343 149 412 -181 186 62 -74 -586 -291 -334 161 112 -315 -176 -446 -254 429 262 -390 259 244 -269 -96 -182 -117 -436 -429 -168 225 -71 -344 -130 -121 -297 -212 -389 317 383 -397 -250 256 212 226 -239 -14 436 137 44 -127 -551 -270 -418 366 299 -61 -251 -253 -114 -315 123 -200 -403 132 -140 -475 -91 -149 -501 90 227 -385 233 161 -302 -466 -363 771 316 -88 -193 -160 427 207 -296 -58 -259 -348 415 549 -357 137 -38 327 187 -56 -468 268 539 283 -30 -299 -355 -432 626 -210 276 -142 -73 198 -445 -398 -100 49 335 153 -81 -67 471 281 -56 344 -137 -214 -154 -345 -477 227 492 -3 438 143 370 -391 535 240 32 -389 -406 271 329 -225 376 144 -283 -236 -80 -216 53 -425 271 211 -151 -273 373 230 core++-1.7/progs/chull/outputs/0040755000175000001440000000000010147210064015753 5ustar joachimuserscore++-1.7/progs/chull/outputs/README0100644000175000001440000000010207444161352016634 0ustar joachimusersREADME file This directory contains outputs from sample programs core++-1.7/progs/chullGraham/0040755000175000001440000000000010147210064015350 5ustar joachimuserscore++-1.7/progs/chullGraham/Makefile0100644000175000001440000000410110144501633017003 0ustar joachimusers# Makefile for chullGraham # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.12 2004/11/10 21:09:47 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= graham MORETARGETS= graham4 grahamIEEE n=1 p=graham${n} default: $(TARGETS) more: $(MORETARGETS) curr: ${p} ./${p} < inputs/i4 > outputs/i4-${n}.ps ./${p} -l < inputs/i4 > outputs/i4-${n}.leda ./${p} < inputs/i10 > outputs/i10-${n}.ps ./${p} -l < inputs/i10 > outputs/i10-${n}.leda test: $(TARGETS) ./graham -l < inputs/i4 > outputs/i4.leda ./graham < inputs/i10 > outputs/i10.ps ./graham -l < inputs/i10 > outputs/i10.leda ./graham < inputs/i19 > outputs/i19.ps ./graham -l < inputs/i19 > outputs/i19.leda ./graham < inputs/square1000 > outputs/square1000.ps ./graham -l < inputs/square1000 > outputs/square1000.leda moretest: $(MORETARGETS) ./grahamIEEE -l < inputs/i4 > outputs/i4-ieee.leda ./graham4 -l < inputs/i19 > outputs/i19w.leda ./graham4 < inputs/i19w > outputs/i19w.ps ./graham4 < inputs/square2000w > outputs/square2000w.ps ./graham4 -l < inputs/square2000w > outputs/square2000w.leda ./graham4 -l < inputs/square1000w > outputs/square1000w.leda graham: graham.o graham4: graham4.o grahamIEEE: grahamIEEE.o graham${n}: graham${n}.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/chullGraham/README0100644000175000001440000000234307735610622016244 0ustar joachimusersREADME file for chullGraham CORE Library: $Id: README,v 1.2 2003/09/28 16:51:30 exact Exp $ chullGraham contains O'Rourke's implementation of Graham's algorithm for computing the convex hull of a set of planar points. These are the files and subdirectories in the chullGraham directory: README This file. Makefile Makefile to compile and test programs data/ subdirectory containing sample input files: (see README file in this subdirectory) graham.ccp CORE version of graham-orig.c Input is 2D bigFloats points (non-homogeneous coordinates) Output can in one of two forms: (a) postscript file to display convex hull (b) convex hull points as 4D bigFloat points in homogenous coordinates NOTE: the 4D points have the form (x,y,0,1). graham4.ccp A version of graham.ccp in which the input and output are 4D integer points in homogenous coordinates. These are for compatibility with LEDA window applications. graham-orig.c O'Rourke's original C source code Input are integer 2D points. Read leading comments there. macros.h Include file for O'Rourke's original program. core++-1.7/progs/chullGraham/graham.cpp0100644000175000001440000003407107735625616017343 0ustar joachimusers/***************************************************************** File: graham.ccp purpose: This is a CORE library version of O'Rourke's implementation of Graham's convex hull algorithm. Changes to O'Rourke's program: -- all printf and scanf are converted to std::cout and std::cin -- input numbers are assumed to be double instead of int -- input points are 2D points Usage: % graham [-l] < input_file >! output_file If the optional switch (-l) is not given, then graham output a postscript file to draw a projection of the convex hull. The switch modifies this behavior: -l This forces graham to output the convex hull in a form suitable for display using LEDA's window sytem The maximum number of points is 3000 (this is easily changed). Author: Hui Jin (hj228@cs.nyu.edu), August 1999 CORE Library: $Id: graham.cpp,v 1.8 2003/09/28 18:42:22 exact Exp $ ****************************************************************** O'Rourke's Original Comments: ****************************************************************** This code is described in "Computational Geometry in C" (Second Edition), Chapter 3. It is not written to be comprehensible without the explanation in that book. Input: 2n integer coordinates of points in the plane. Output: the convex hull, cw, in PostScript; other output precedes the PS. NB: The original array storing the points is overwritten. Compile: gcc -o graham graham.c macros.h Written by Joseph O'Rourke. Last modified: October 1997 Questions to orourke@cs.smith.edu. -------------------------------------------------------------------- This code is Copyright 1998 by Joseph O'Rourke. It may be freely redistributed in its entirety provided that this copyright notice is not removed. -------------------------------------------------------------------- */ #include "macros.h" #define CORE_LEVEL 3 #include "CORE/CORE.h" #define EXIT_FAILURE 1 #define X 0 #define Y 1 //typedef enum { FALSE, TRUE } bool; #define DIM 2 /* Dimension of points */ //typedef int tPointi[DIM]; /* Type integer point */ typedef double tPointi[DIM]; /* Type integer point */ /*----------Point(s) Structure-------------*/ typedef struct tPointStructure tsPoint; typedef tsPoint *tPoint; struct tPointStructure { int vnum; tPointi v; bool delete_bit; }; /* Global variables */ #define PMAX 3000 /* Max # of points */ typedef tsPoint tPointArray[PMAX]; static tPointArray P; int n = 0; /* Actual # of points */ int ndelete_bit = 0; /* Number delete_bitd */ bool toLeda = false; const int HOMOGENIZING_FACTOR = 1; /*----------Stack Structure-------------*/ typedef struct tStackCell tsStack; /* Used on in NEW() */ typedef tsStack *tStack; struct tStackCell { tPoint p; tStack next; }; /*----------Function Prototypes-------------*/ tStack Pop( tStack s ); void PrintStack( tStack t ); void PrintToLeda( tStack t ); tStack Push( tPoint p, tStack top ); tStack Graham( void ); void Squash( void ); void Copy( int i, int j ); void PrintPostscript( tStack t ); extern "C" int Compare( const void *tp1, const void *tp2 ); void FindLowest( void ); void Swap( int i, int j ); //int AreaSign( tPointi a, tPointi b, tPointi c ); double AreaSign( tPointi a, tPointi b, tPointi c ); bool Left( tPointi a, tPointi b, tPointi c ); int ReadPoints( void ); void PrintPoints( void ); /*----------Main Program-------------*/ int main(int argc, char *argv[]) { tStack top; if (argc > 1 && argv[1][0] == '-' ) { if( argv[1][1] == 'l' ) { toLeda = true; //std::cerr << "Output for LEDA\n" ; } } n = ReadPoints(); // std::cout << "before qsort\n"; PrintPoints(); FindLowest(); //PrintPoints(); qsort( &P[1], /* pointer to 1st elem */ n-1, /* number of elems */ sizeof( tsPoint ), /* size of each elem */ Compare /* -1,0,+1 compare function */ ); //std::cerr << "After sorting, ndelete_bit = " << ndelete_bit << ":\n"; // std::cout << "after qsort\n"; PrintPoints(); if (ndelete_bit > 0) { Squash(); //std::cerr << "After squashing:\n"; } top = Graham(); //std::cerr << "Hull:\n"; //PrintStack( top ); if (toLeda) PrintToLeda( top ); else PrintPostscript( top ); return 0; } /*--------------------------------------------------------------------- FindLowest finds the rightmost lowest point and swaps with 0-th. The lowest point has the min y-coord, and amongst those, the max x-coord: so it is rightmost among the lowest. ---------------------------------------------------------------------*/ void FindLowest( void ) { int i; int m = 0; /* Index of lowest so far. */ for ( i = 1; i < n; i++ ) if ( (P[i].v[Y] < P[m].v[Y]) || ((P[i].v[Y] == P[m].v[Y]) && (P[i].v[X] > P[m].v[X])) ) m = i; //std::cerr << "Swapping " << m << " with 0\n"; Swap(0,m); /* Swap P[0] and P[m] */ } void Swap( int i, int j ) { //int temp; double temp; int temp1; bool temp2; /* Uses swap macro. */ SWAP( temp1, P[i].vnum, P[j].vnum ); SWAP( temp, P[i].v[X], P[j].v[X] ); SWAP( temp, P[i].v[Y], P[j].v[Y] ); SWAP( temp2, P[i].delete_bit, P[j].delete_bit ); } /*--------------------------------------------------------------------- Compare: returns -1,0,+1 if p1 < p2, =, or > respectively; here "<" means smaller angle. Follows the conventions of qsort. ---------------------------------------------------------------------*/ int Compare( const void *tpi, const void *tpj ) { //int a; /* area */ double a; /* area */ //int x, y; /* projections of ri & rj in 1st quadrant */ double x, y; /* projections of ri & rj in 1st quadrant */ tPoint pi, pj; pi = (tPoint)tpi; pj = (tPoint)tpj; a = AreaSign( P[0].v, pi->v, pj->v ); if (a > 0) return -1; else if (a < 0) return 1; else { /* Collinear with P[0] */ x = fabs( pi->v[X] - P[0].v[X] ) - fabs( pj->v[X] - P[0].v[X] ); y = fabs( pi->v[Y] - P[0].v[Y] ) - fabs( pj->v[Y] - P[0].v[Y] ); ndelete_bit++; if ( (x < 0) || (y < 0) ) { pi->delete_bit = true; return -1; } else if ( (x > 0) || (y > 0) ) { pj->delete_bit = true; return 1; } else { /* points are coincident */ if (pi->vnum > pj->vnum) pj->delete_bit = true; else pi->delete_bit = true; return 0; } } } /*--------------------------------------------------------------------- Pops off top elment of stack s, frees up the cell, and returns new top. ---------------------------------------------------------------------*/ tStack Pop( tStack s ) { tStack top; top = s->next; FREE( s ); return top; } /*--------------------------------------------------------------------- Get a new cell, fill it with p, and push it onto the stack. Return pointer to new stack top. ---------------------------------------------------------------------*/ tStack Push( tPoint p, tStack top ) { tStack s; /* Get new cell and fill it with point. */ //NEW( s, tsStack ); s = new tsStack; s->p = p; s->next = top; return s; } /*--------------------------------------------------------------------- ---------------------------------------------------------------------*/ void PrintStack( tStack t ) { if (!t) std::cerr << "Empty stack\n"; while (t) { std::cerr << "vnum=" << t->p->vnum << "\tx=" << t->p->v[X] << "\ty=" << t->p->v[Y] << "\n"; t = t->next; } } /*--------------------------------------------------------------------- Performs the Graham scan on an array of angularly sorted points P. ---------------------------------------------------------------------*/ tStack Graham() { tStack top; int i; tPoint p1, p2; /* Top two points on stack. */ /* Initialize stack. */ top = NULL; top = Push ( &P[0], top ); top = Push ( &P[1], top ); /* Bottom two elements will never be removed. */ i = 2; while ( i < n ) { //std::cerr << "Stack at top of while loop, i=" << i //<< ", vnum=" << P[i].vnum << ":\n"; //PrintStack( top ); if( !top->next) { //std::cerr << "Error\n"; exit(EXIT_FAILURE); } p1 = top->next->p; p2 = top->p; if ( Left( p1->v , p2->v, P[i].v ) ) { top = Push ( &P[i], top ); i++; } else top = Pop( top ); //std::cerr << "Stack at bot of while loop, i=" << i //<< ", vnum=" << P[i].vnum << ":\n"; //PrintStack( top ); //putchar('\n'); } return top; } /*--------------------------------------------------------------------- Squash removes all elements from P marked delete_bit. ---------------------------------------------------------------------*/ void Squash( void ) { int i, j; i = 0; j = 0; /*printf("Squash: n=%d\n",n);*/ while ( i < n ) { /*printf("i=%d,j=%d\n",i,j);*/ if ( !P[i].delete_bit ) { /* if not marked for deletion */ Copy( i, j ); /* Copy P[i] to P[j]. */ j++; } /* else do nothing: delete_bit by skipping. */ i++; } n = j; //std::cerr << "After Squash: n=" << n << "\n"; //PrintPoints(); } void Copy( int i, int j ) { P[j].v[X] = P[i].v[X]; P[j].v[Y] = P[i].v[Y]; P[j].vnum = P[i].vnum; P[j].delete_bit = P[i].delete_bit; } /*--------------------------------------------------------------------- Returns twice the signed area of the triangle determined by a,b,c. The area is positive if a,b,c are oriented ccw, negative if cw, and zero if the points are collinear. ---------------------------------------------------------------------*/ //int Area2( tPointi a, tPointi b, tPointi c ) double Area2( tPointi a, tPointi b, tPointi c ) { return (b[X] - a[X]) * (c[Y] - a[Y]) - (c[X] - a[X]) * (b[Y] - a[Y]); } /*--------------------------------------------------------------------- Returns true iff c is strictly to the left of the directed line through a to b. ---------------------------------------------------------------------*/ bool Left( tPointi a, tPointi b, tPointi c ) { return Area2( a, b, c ) > 0; } /*--------------------------------------------------------------------- Reads in the coordinates of the points from stdin, puts them into P, and returns n, the number of vertices. Initializes other fields of point structure. NOTE: Limited commenting in input files allowed -- before the start of data, lines beginning with # is allowed and are discarded. ---------------------------------------------------------------------*/ int ReadPoints( void ) { int n = 0; char buf[256]; // Removal initial comment lines (line must begin with #) while (std::cin.peek() == '#') std::cin.getline(buf, 256); while ( (n < PMAX) && (std::cin) ) { std::cin >> P[n].v[0] >> P[n].v[1]; P[n].vnum = n; P[n].delete_bit = false; /*printf("vnum=%3d, x=%4d, y=%4d, delete_bit=%d\n", P[n].vnum, P[n].v[X], P[n].v[Y], P[n].delete_bit);*/ ++n; } if (n < PMAX) ; //std::cerr << "n = " << n << " vertices read\n"; else { std::cerr << "Error in ReadPoints: too many points; max is " << PMAX << "\n"; exit(EXIT_FAILURE); } return n; } void PrintPoints( void ) { int i; std::cerr << "Points:\n"; for( i = 0; i < n; i++ ) std::cerr << "vnum=" << P[i].vnum << " x=" << P[i].v[X] << "y=" << P[i].v[Y] << " delete_bit=" << P[i].delete_bit << "\n"; } void PrintToLeda ( tStack t) { while (t) { std::cout << "(" << t->p->v[X] << ", " << t->p->v[Y] << ", " << 0 << ", " << HOMOGENIZING_FACTOR << ")\n"; t = t->next; } } void PrintPostscript( tStack t) { int i; //int xmin, ymin, xmax, ymax; double xmin, ymin, xmax, ymax; xmin = xmax = P[0].v[X]; ymin = ymax = P[0].v[Y]; for (i = 1; i < n; i++) { if ( P[i].v[X] > xmax ) xmax = P[i].v[X]; else if ( P[i].v[X] < xmin ) xmin = P[i].v[X]; if ( P[i].v[Y] > ymax ) ymax = P[i].v[Y]; else if ( P[i].v[Y] < ymin ) ymin = P[i].v[Y]; } /* PostScript header */ std::cout << "%%!PS\n"; std::cout << "%%%%Creator: graham.c \n"; std::cout << "%%%%BoundingBox: " << xmin << " " << ymin << " " << xmax << " " << ymax << std::endl; std::cout << "%%%%EndComments\n"; std::cout << ".00 .00 setlinewidth\n"; double scale = 500.0 / ((ymax-ymin) >= (xmax - xmin) ? ymax - ymin: xmax - xmin); double radius = 3/scale; std::cout << -xmin*scale+72 << " " << -ymin*scale+120 << " translate\n" ; /* The +72 shifts the figure one inch from the lower left corner */ std::cout << scale << " " << scale << " scale" << std::endl; /* Draw the points as little circles. */ std::cout << "newpath\n"; std::cout << "\n%%Points:\n"; for (i = 0; i < n; i++) std::cout << P[i].v[X] << "\t" << P[i].v[Y] << "\t" << radius << " 0 360\tarc\tstroke\n"; std::cout << "closepath\n"; /* Draw the polygon. */ std::cout << "\n%%Hull:\n"; std::cout << "newpath\n"; std::cout << t->p->v[X] << "\t" << t->p->v[Y] << "\tmoveto\n"; while (t) { std::cout << t->p->v[X] << "\t" << t->p->v[Y] << "\tlineto\n"; t = t->next; } std::cout << "closepath stroke\n"; std::cout << "showpage\n%%%%EOF\n"; } //int AreaSign( tPointi a, tPointi b, tPointi c ) double AreaSign( tPointi a, tPointi b, tPointi c ) { double area2; area2 = ( b[0] - a[0] ) * (double)( c[1] - a[1] ) - ( c[0] - a[0] ) * (double)( b[1] - a[1] ); /* The area should be an integer. */ // if ( area2 > 0.5 ) return 1; // else if ( area2 < -0.5 ) return -1; // else return 0; /* The comment (that area is integer) * is wrong for the Core Version of this code, and causes * error in Level 3! * Anyway, we prefer to just return the area, not its sign. * (Chee, 9/28/2003) */ return(area2); } core++-1.7/progs/chullGraham/graham4.cpp0100644000175000001440000003314210010457456017406 0ustar joachimusers/***************************************************************** File: graham4.ccp purpose: This is a variant of graham.ccp. It reads the leading comments in that file. The present version aims to adapt our input and outpoint point formats to conform to LEDA's convex hull examples (to take advantage of its window display). Therefore, the input points (1) have integer coordinates (2) are in homogeneous coordinates, in the form (x, y, z, w) where w is the homogenizing coordinate (often w=1). and z is 0 because graham is a 2D algorithm. Usage: % graham4 [-l] < input_file >! output_file If the optional switch (-l) is not given, then graham output a postscript file to draw a projection of the convex hull. The switch modifies this behavior: -l This forces graham to output the convex hull in a form suitable for display using LEDA's window sytem Author: Hui Jin (hj228@cs.nyu.edu), August 1999 ****************************************************************** O'Rourke's Original Comments: ****************************************************************** This code is described in "Computational Geometry in C" (Second Edition), Chapter 3. It is not written to be comprehensible without the explanation in that book. Input: 2n integer coordinates of points in the plane. Output: the convex hull, cw, in PostScript; other output precedes the PS. NB: The original array storing the points is overwritten. Compile: gcc -o graham graham.c macros.h Written by Joseph O'Rourke. Last modified: October 1997 Questions to orourke@cs.smith.edu. -------------------------------------------------------------------- This code is Copyright 1998 by Joseph O'Rourke. It may be freely redistributed in its entirety provided that this copyright notice is not removed. -------------------------------------------------------------------- */ #include "macros.h" #ifndef CORE_LEVEL #define CORE_LEVEL 3 #endif #include "CORE.h" #define EXIT_FAILURE 1 #define X 0 #define Y 1 #define DIM 2 /* Dimension of points */ typedef int tPointi[DIM]; /* Type integer point */ /*----------Point(s) Structure-------------*/ typedef struct tPointStructure tsPoint; typedef tsPoint *tPoint; struct tPointStructure { int vnum; tPointi v; bool delete_bit; }; /* Global variables */ #define PMAX 3000 /* Max # of points */ typedef tsPoint tPointArray[PMAX]; static tPointArray P; int n = 0; /* Actual # of points */ int ndelete_bit = 0; /* Number delete_bitd */ bool toLeda = false; int RATE = 1; /*----------Stack Structure-------------*/ typedef struct tStackCell tsStack; /* Used on in NEW() */ typedef tsStack *tStack; struct tStackCell { tPoint p; tStack next; }; /*----------Function Prototypes-------------*/ tStack Pop( tStack s ); void PrintStack( tStack t ); void PrintToLeda( tStack t ); tStack Push( tPoint p, tStack top ); tStack Graham( void ); void Squash( void ); void Copy( int i, int j ); void PrintPostscript( tStack t ); extern "C" int Compare( const void *tp1, const void *tp2 ); void FindLowest( void ); void Swap( int i, int j ); int AreaSign( tPointi a, tPointi b, tPointi c ); bool Left( tPointi a, tPointi b, tPointi c ); int ReadPoints( void ); void PrintPoints( void ); int main(int argc, char *argv[]) { tStack top; if (argc > 1 && argv[1][0] == '-' ) { if( argv[1][1] == 'l' ) { toLeda = true; //std::cerr << "Output for LEDA\n" ; } } n = ReadPoints(); FindLowest(); //PrintPoints(); qsort( &P[1], /* pointer to 1st elem */ n-1, /* number of elems */ sizeof( tsPoint ), /* size of each elem */ Compare /* -1,0,+1 compare function */ ); //std::cerr << "After sorting, ndelete_bit = " << ndelete_bit << ":\n"; //PrintPoints(); if (ndelete_bit > 0) { Squash(); //std::cerr << "After squashing:\n"; } top = Graham(); //std::cerr << "Hull:\n"; //PrintStack( top ); if (toLeda) PrintToLeda( top ); else PrintPostscript( top ); return 0; } /*--------------------------------------------------------------------- FindLowest finds the rightmost lowest point and swaps with 0-th. The lowest point has the min y-coord, and amongst those, the max x-coord: so it is rightmost among the lowest. ---------------------------------------------------------------------*/ void FindLowest( void ) { int i; int m = 0; /* Index of lowest so far. */ for ( i = 1; i < n; i++ ) if ( (P[i].v[Y] < P[m].v[Y]) || ((P[i].v[Y] == P[m].v[Y]) && (P[i].v[X] > P[m].v[X])) ) m = i; //std::cerr << "Swapping " << m << " with 0\n"; Swap(0,m); /* Swap P[0] and P[m] */ } void Swap( int i, int j ) { int temp; int temp1; bool temp2; /* Uses swap macro. */ SWAP( temp1, P[i].vnum, P[j].vnum ); SWAP( temp, P[i].v[X], P[j].v[X] ); SWAP( temp, P[i].v[Y], P[j].v[Y] ); SWAP( temp2, P[i].delete_bit, P[j].delete_bit ); } /*--------------------------------------------------------------------- Compare: returns -1,0,+1 if p1 < p2, =, or > respectively; here "<" means smaller angle. Follows the conventions of qsort. ---------------------------------------------------------------------*/ int Compare( const void *tpi, const void *tpj ) { int a; /* area */ int x, y; /* projections of ri & rj in 1st quadrant */ tPoint pi, pj; pi = (tPoint)tpi; pj = (tPoint)tpj; a = AreaSign( P[0].v, pi->v, pj->v ); if (a > 0) return -1; else if (a < 0) return 1; else { /* Collinear with P[0] */ x = ::abs( pi->v[X] - P[0].v[X] ) - ::abs( pj->v[X] - P[0].v[X] ); y = ::abs( pi->v[Y] - P[0].v[Y] ) - ::abs( pj->v[Y] - P[0].v[Y] ); //x = fabs( pi->v[X] - P[0].v[X] ) - fabs( pj->v[X] - P[0].v[X] ); //y = fabs( pi->v[Y] - P[0].v[Y] ) - fabs( pj->v[Y] - P[0].v[Y] ); ndelete_bit++; if ( (x < 0) || (y < 0) ) { pi->delete_bit = true; return -1; } else if ( (x > 0) || (y > 0) ) { pj->delete_bit = true; return 1; } else { /* points are coincident */ if (pi->vnum > pj->vnum) pj->delete_bit = true; else pi->delete_bit = true; return 0; } } } /*--------------------------------------------------------------------- Pops off top elment of stack s, frees up the cell, and returns new top. ---------------------------------------------------------------------*/ tStack Pop( tStack s ) { tStack top; top = s->next; FREE( s ); return top; } /*--------------------------------------------------------------------- Get a new cell, fill it with p, and push it onto the stack. Return pointer to new stack top. ---------------------------------------------------------------------*/ tStack Push( tPoint p, tStack top ) { tStack s; /* Get new cell and fill it with point. */ //NEW( s, tsStack ); s = new tsStack; s->p = p; s->next = top; return s; } /*--------------------------------------------------------------------- ---------------------------------------------------------------------*/ void PrintStack( tStack t ) { if (!t) std::cerr << "Empty stack\n"; while (t) { std::cerr << "vnum=" << t->p->vnum << "\tx=" << t->p->v[X] << "\ty=" << t->p->v[Y] << "\n"; t = t->next; } } /*--------------------------------------------------------------------- Performs the Graham scan on an array of angularly sorted points P. ---------------------------------------------------------------------*/ tStack Graham() { tStack top; int i; tPoint p1, p2; /* Top two points on stack. */ /* Initialize stack. */ top = NULL; top = Push ( &P[0], top ); top = Push ( &P[1], top ); /* Bottom two elements will never be removed. */ i = 2; while ( i < n ) { //std::cerr << "Stack at top of while loop, i=" << i //<< ", vnum=" << P[i].vnum << ":\n"; //PrintStack( top ); if( !top->next) { //std::cerr << "Error\n"; exit(EXIT_FAILURE); } p1 = top->next->p; p2 = top->p; if ( Left( p1->v , p2->v, P[i].v ) ) { top = Push ( &P[i], top ); i++; } else top = Pop( top ); //std::cerr << "Stack at bot of while loop, i=" << i //<< ", vnum=" << P[i].vnum << ":\n"; //PrintStack( top ); //putchar('\n'); } return top; } /*--------------------------------------------------------------------- Squash removes all elements from P marked delete_bit. ---------------------------------------------------------------------*/ void Squash( void ) { int i, j; i = 0; j = 0; /*printf("Squash: n=%d\n",n);*/ while ( i < n ) { /*printf("i=%d,j=%d\n",i,j);*/ if ( !P[i].delete_bit ) { /* if not marked for deletion */ Copy( i, j ); /* Copy P[i] to P[j]. */ j++; } /* else do nothing: delete_bit by skipping. */ i++; } n = j; //std::cerr << "After Squash: n=" << n << "\n"; //PrintPoints(); } void Copy( int i, int j ) { P[j].v[X] = P[i].v[X]; P[j].v[Y] = P[i].v[Y]; P[j].vnum = P[i].vnum; P[j].delete_bit = P[i].delete_bit; } /*--------------------------------------------------------------------- Returns twice the signed area of the triangle determined by a,b,c. The area is positive if a,b,c are oriented ccw, negative if cw, and zero if the points are collinear. ---------------------------------------------------------------------*/ int Area2( tPointi a, tPointi b, tPointi c ) { return (b[X] - a[X]) * (c[Y] - a[Y]) - (c[X] - a[X]) * (b[Y] - a[Y]); } /*--------------------------------------------------------------------- Returns true iff c is strictly to the left of the directed line through a to b. ---------------------------------------------------------------------*/ bool Left( tPointi a, tPointi b, tPointi c ) { return Area2( a, b, c ) > 0; } /*--------------------------------------------------------------------- Reads in the coordinates of the points from stdin, puts them into P, and returns n, the number of vertices. Initializes other fields of point structure. ---------------------------------------------------------------------*/ int ReadPoints( void ) { int n = 0; int z, rate; char buf[256]; // Removal initial comment lines (line must begin with #) while (std::cin.peek() == '#') std::cin.getline(buf, 256); std::cin.get(); while ( (n < PMAX) && !std::cin.eof() ) { std::cin >> P[n].v[0]; std::cin.get(); std::cin >> P[n].v[1]; std::cin.get(); std::cin >> z; std::cin.get(); std::cin >> rate; std::cin.get(); std::cin.getline(buf, 256); std::cin.get(); P[n].vnum = n; P[n].delete_bit = false; /* printf("vnum=%3d, x=%4d, y=%4d, delete_bit=%d\n", P[n].vnum, P[n].v[X], P[n].v[Y], P[n].delete_bit); */ ++n; } if (n < PMAX) ; //std::cerr << "n = " << n << " vertices read\n"; else { std::cerr << "Error in ReadPoints: too many points; max is " << PMAX << "\n"; exit(EXIT_FAILURE); } return n; } void PrintPoints( void ) { int i; std::cerr << "Points:\n"; for( i = 0; i < n; i++ ) std::cerr << "vnum=" << P[i].vnum << " x=" << P[i].v[X] << "y=" << P[i].v[Y] << " delete_bit=" << P[i].delete_bit << "\n"; } void PrintToLeda ( tStack t) { while (t) { std::cout << "(" << t->p->v[X] << ", " << t->p->v[Y] << ", " << 0 << "," << RATE << ")\n"; t = t->next; } } void PrintPostscript( tStack t) { int i; int xmin, ymin, xmax, ymax; xmin = xmax = P[0].v[X]; ymin = ymax = P[0].v[Y]; for (i = 1; i < n; i++) { if ( P[i].v[X] > xmax ) xmax = P[i].v[X]; else if ( P[i].v[X] < xmin ) xmin = P[i].v[X]; if ( P[i].v[Y] > ymax ) ymax = P[i].v[Y]; else if ( P[i].v[Y] < ymin ) ymin = P[i].v[Y]; } /* PostScript header */ std::cout << "%%!PS\n"; std::cout << "%%%%Creator: graham.c \n"; std::cout << "%%%%BoundingBox: " << xmin << " " << ymin << " " << xmax << " " << ymax << std::endl; std::cout << "%%%%EndComments\n"; std::cout << ".00 .00 setlinewidth\n"; double scale = 500.0 / ((ymax-ymin) >= (xmax - xmin) ? ymax - ymin: xmax - xmin); double radius = 3/scale; std::cout << -xmin*scale+72 << " " << -ymin*scale+120 << " translate\n" ; /* The +72 shifts the figure one inch from the lower left corner */ std::cout << scale << " " << scale << " scale" << std::endl; /* Draw the points as little circles. */ std::cout << "newpath\n"; std::cout << "\n%%Points:\n"; for (i = 0; i < n; i++) std::cout << P[i].v[X] << "\t" << P[i].v[Y] << "\t" << radius << " 0 360\tarc\tstroke\n"; std::cout << "closepath\n"; /* Draw the polygon. */ std::cout << "\n%%Hull:\n"; std::cout << "newpath\n"; std::cout << t->p->v[X] << "\t" << t->p->v[Y] << "\tmoveto\n"; while (t) { std::cout << t->p->v[X] << "\t" << t->p->v[Y] << "\tlineto\n"; t = t->next; } std::cout << "closepath stroke\n"; std::cout << "showpage\n%%%%EOF\n"; } int AreaSign( tPointi a, tPointi b, tPointi c ) { double area2; area2 = ( b[0] - a[0] ) * (double)( c[1] - a[1] ) - ( c[0] - a[0] ) * (double)( b[1] - a[1] ); /* The area should be an integer. */ if ( area2 > 0.5 ) return 1; else if ( area2 < -0.5 ) return -1; else return 0; } core++-1.7/progs/chullGraham/grahamIEEE.cpp0100644000175000001440000003257107735625616017776 0ustar joachimusers/***************************************************************** File: graham1.ccp purpose: This is just the Level 1 version of graham.cpp Author: Hui Jin (hj228@cs.nyu.edu), August 1999 CORE Library: $Id: grahamIEEE.cpp,v 1.1 2003/09/28 18:42:22 exact Exp $ ****************************************************************** O'Rourke's Original Comments: ****************************************************************** This code is described in "Computational Geometry in C" (Second Edition), Chapter 3. It is not written to be comprehensible without the explanation in that book. Input: 2n integer coordinates of points in the plane. Output: the convex hull, cw, in PostScript; other output precedes the PS. NB: The original array storing the points is overwritten. Compile: gcc -o graham graham.c macros.h Written by Joseph O'Rourke. Last modified: October 1997 Questions to orourke@cs.smith.edu. -------------------------------------------------------------------- This code is Copyright 1998 by Joseph O'Rourke. It may be freely redistributed in its entirety provided that this copyright notice is not removed. -------------------------------------------------------------------- */ #include "macros.h" #define CORE_LEVEL 1 #include "CORE/CORE.h" #define EXIT_FAILURE 1 #define X 0 #define Y 1 //typedef enum { FALSE, TRUE } bool; #define DIM 2 /* Dimension of points */ //typedef int tPointi[DIM]; /* Type integer point */ typedef double tPointi[DIM]; /* Type integer point */ /*----------Point(s) Structure-------------*/ typedef struct tPointStructure tsPoint; typedef tsPoint *tPoint; struct tPointStructure { int vnum; tPointi v; bool delete_bit; }; /* Global variables */ #define PMAX 3000 /* Max # of points */ typedef tsPoint tPointArray[PMAX]; static tPointArray P; int n = 0; /* Actual # of points */ int ndelete_bit = 0; /* Number delete_bitd */ bool toLeda = false; const int HOMOGENIZING_FACTOR = 1; /*----------Stack Structure-------------*/ typedef struct tStackCell tsStack; /* Used on in NEW() */ typedef tsStack *tStack; struct tStackCell { tPoint p; tStack next; }; /*----------Function Prototypes-------------*/ tStack Pop( tStack s ); void PrintStack( tStack t ); void PrintToLeda( tStack t ); tStack Push( tPoint p, tStack top ); tStack Graham( void ); void Squash( void ); void Copy( int i, int j ); void PrintPostscript( tStack t ); extern "C" int Compare( const void *tp1, const void *tp2 ); void FindLowest( void ); void Swap( int i, int j ); //int AreaSign( tPointi a, tPointi b, tPointi c ); double AreaSign( tPointi a, tPointi b, tPointi c ); bool Left( tPointi a, tPointi b, tPointi c ); int ReadPoints( void ); void PrintPoints( void ); /*----------Main Program-------------*/ int main(int argc, char *argv[]) { tStack top; if (argc > 1 && argv[1][0] == '-' ) { if( argv[1][1] == 'l' ) { toLeda = true; //std::cerr << "Output for LEDA\n" ; } } n = ReadPoints(); // std::cout << "before qsort\n"; PrintPoints(); FindLowest(); //PrintPoints(); qsort( &P[1], /* pointer to 1st elem */ n-1, /* number of elems */ sizeof( tsPoint ), /* size of each elem */ Compare /* -1,0,+1 compare function */ ); //std::cerr << "After sorting, ndelete_bit = " << ndelete_bit << ":\n"; // std::cout << "after qsort\n"; PrintPoints(); if (ndelete_bit > 0) { Squash(); //std::cerr << "After squashing:\n"; } top = Graham(); //std::cerr << "Hull:\n"; //PrintStack( top ); if (toLeda) PrintToLeda( top ); else PrintPostscript( top ); return 0; } /*--------------------------------------------------------------------- FindLowest finds the rightmost lowest point and swaps with 0-th. The lowest point has the min y-coord, and amongst those, the max x-coord: so it is rightmost among the lowest. ---------------------------------------------------------------------*/ void FindLowest( void ) { int i; int m = 0; /* Index of lowest so far. */ for ( i = 1; i < n; i++ ) if ( (P[i].v[Y] < P[m].v[Y]) || ((P[i].v[Y] == P[m].v[Y]) && (P[i].v[X] > P[m].v[X])) ) m = i; //std::cerr << "Swapping " << m << " with 0\n"; Swap(0,m); /* Swap P[0] and P[m] */ } void Swap( int i, int j ) { //int temp; double temp; int temp1; bool temp2; /* Uses swap macro. */ SWAP( temp1, P[i].vnum, P[j].vnum ); SWAP( temp, P[i].v[X], P[j].v[X] ); SWAP( temp, P[i].v[Y], P[j].v[Y] ); SWAP( temp2, P[i].delete_bit, P[j].delete_bit ); } /*--------------------------------------------------------------------- Compare: returns -1,0,+1 if p1 < p2, =, or > respectively; here "<" means smaller angle. Follows the conventions of qsort. ---------------------------------------------------------------------*/ int Compare( const void *tpi, const void *tpj ) { //int a; /* area */ double a; /* area */ //int x, y; /* projections of ri & rj in 1st quadrant */ double x, y; /* projections of ri & rj in 1st quadrant */ tPoint pi, pj; pi = (tPoint)tpi; pj = (tPoint)tpj; a = AreaSign( P[0].v, pi->v, pj->v ); if (a > 0) return -1; else if (a < 0) return 1; else { /* Collinear with P[0] */ x = fabs( pi->v[X] - P[0].v[X] ) - fabs( pj->v[X] - P[0].v[X] ); y = fabs( pi->v[Y] - P[0].v[Y] ) - fabs( pj->v[Y] - P[0].v[Y] ); ndelete_bit++; if ( (x < 0) || (y < 0) ) { pi->delete_bit = true; return -1; } else if ( (x > 0) || (y > 0) ) { pj->delete_bit = true; return 1; } else { /* points are coincident */ if (pi->vnum > pj->vnum) pj->delete_bit = true; else pi->delete_bit = true; return 0; } } } /*--------------------------------------------------------------------- Pops off top elment of stack s, frees up the cell, and returns new top. ---------------------------------------------------------------------*/ tStack Pop( tStack s ) { tStack top; top = s->next; FREE( s ); return top; } /*--------------------------------------------------------------------- Get a new cell, fill it with p, and push it onto the stack. Return pointer to new stack top. ---------------------------------------------------------------------*/ tStack Push( tPoint p, tStack top ) { tStack s; /* Get new cell and fill it with point. */ //NEW( s, tsStack ); s = new tsStack; s->p = p; s->next = top; return s; } /*--------------------------------------------------------------------- ---------------------------------------------------------------------*/ void PrintStack( tStack t ) { if (!t) std::cerr << "Empty stack\n"; while (t) { std::cerr << "vnum=" << t->p->vnum << "\tx=" << t->p->v[X] << "\ty=" << t->p->v[Y] << "\n"; t = t->next; } } /*--------------------------------------------------------------------- Performs the Graham scan on an array of angularly sorted points P. ---------------------------------------------------------------------*/ tStack Graham() { tStack top; int i; tPoint p1, p2; /* Top two points on stack. */ /* Initialize stack. */ top = NULL; top = Push ( &P[0], top ); top = Push ( &P[1], top ); /* Bottom two elements will never be removed. */ i = 2; while ( i < n ) { //std::cerr << "Stack at top of while loop, i=" << i //<< ", vnum=" << P[i].vnum << ":\n"; //PrintStack( top ); if( !top->next) { //std::cerr << "Error\n"; exit(EXIT_FAILURE); } p1 = top->next->p; p2 = top->p; if ( Left( p1->v , p2->v, P[i].v ) ) { top = Push ( &P[i], top ); i++; } else top = Pop( top ); //std::cerr << "Stack at bot of while loop, i=" << i //<< ", vnum=" << P[i].vnum << ":\n"; //PrintStack( top ); //putchar('\n'); } return top; } /*--------------------------------------------------------------------- Squash removes all elements from P marked delete_bit. ---------------------------------------------------------------------*/ void Squash( void ) { int i, j; i = 0; j = 0; /*printf("Squash: n=%d\n",n);*/ while ( i < n ) { /*printf("i=%d,j=%d\n",i,j);*/ if ( !P[i].delete_bit ) { /* if not marked for deletion */ Copy( i, j ); /* Copy P[i] to P[j]. */ j++; } /* else do nothing: delete_bit by skipping. */ i++; } n = j; //std::cerr << "After Squash: n=" << n << "\n"; //PrintPoints(); } void Copy( int i, int j ) { P[j].v[X] = P[i].v[X]; P[j].v[Y] = P[i].v[Y]; P[j].vnum = P[i].vnum; P[j].delete_bit = P[i].delete_bit; } /*--------------------------------------------------------------------- Returns twice the signed area of the triangle determined by a,b,c. The area is positive if a,b,c are oriented ccw, negative if cw, and zero if the points are collinear. ---------------------------------------------------------------------*/ //int Area2( tPointi a, tPointi b, tPointi c ) double Area2( tPointi a, tPointi b, tPointi c ) { return (b[X] - a[X]) * (c[Y] - a[Y]) - (c[X] - a[X]) * (b[Y] - a[Y]); } /*--------------------------------------------------------------------- Returns true iff c is strictly to the left of the directed line through a to b. ---------------------------------------------------------------------*/ bool Left( tPointi a, tPointi b, tPointi c ) { return Area2( a, b, c ) > 0; } /*--------------------------------------------------------------------- Reads in the coordinates of the points from stdin, puts them into P, and returns n, the number of vertices. Initializes other fields of point structure. NOTE: Limited commenting in input files allowed -- before the start of data, lines beginning with # is allowed and are discarded. ---------------------------------------------------------------------*/ int ReadPoints( void ) { int n = 0; char buf[256]; // Removal initial comment lines (line must begin with #) while (std::cin.peek() == '#') std::cin.getline(buf, 256); while ( (n < PMAX) && (std::cin) ) { std::cin >> P[n].v[0] >> P[n].v[1]; P[n].vnum = n; P[n].delete_bit = false; /*printf("vnum=%3d, x=%4d, y=%4d, delete_bit=%d\n", P[n].vnum, P[n].v[X], P[n].v[Y], P[n].delete_bit);*/ ++n; } if (n < PMAX) ; //std::cerr << "n = " << n << " vertices read\n"; else { std::cerr << "Error in ReadPoints: too many points; max is " << PMAX << "\n"; exit(EXIT_FAILURE); } return n; } void PrintPoints( void ) { int i; std::cerr << "Points:\n"; for( i = 0; i < n; i++ ) std::cerr << "vnum=" << P[i].vnum << " x=" << P[i].v[X] << "y=" << P[i].v[Y] << " delete_bit=" << P[i].delete_bit << "\n"; } void PrintToLeda ( tStack t) { while (t) { std::cout << "(" << t->p->v[X] << ", " << t->p->v[Y] << ", " << 0 << ", " << HOMOGENIZING_FACTOR << ")\n"; t = t->next; } } void PrintPostscript( tStack t) { int i; //int xmin, ymin, xmax, ymax; double xmin, ymin, xmax, ymax; xmin = xmax = P[0].v[X]; ymin = ymax = P[0].v[Y]; for (i = 1; i < n; i++) { if ( P[i].v[X] > xmax ) xmax = P[i].v[X]; else if ( P[i].v[X] < xmin ) xmin = P[i].v[X]; if ( P[i].v[Y] > ymax ) ymax = P[i].v[Y]; else if ( P[i].v[Y] < ymin ) ymin = P[i].v[Y]; } /* PostScript header */ std::cout << "%%!PS\n"; std::cout << "%%%%Creator: graham.c \n"; std::cout << "%%%%BoundingBox: " << xmin << " " << ymin << " " << xmax << " " << ymax << std::endl; std::cout << "%%%%EndComments\n"; std::cout << ".00 .00 setlinewidth\n"; double scale = 500.0 / ((ymax-ymin) >= (xmax - xmin) ? ymax - ymin: xmax - xmin); double radius = 3/scale; std::cout << -xmin*scale+72 << " " << -ymin*scale+120 << " translate\n" ; /* The +72 shifts the figure one inch from the lower left corner */ std::cout << scale << " " << scale << " scale" << std::endl; /* Draw the points as little circles. */ std::cout << "newpath\n"; std::cout << "\n%%Points:\n"; for (i = 0; i < n; i++) std::cout << P[i].v[X] << "\t" << P[i].v[Y] << "\t" << radius << " 0 360\tarc\tstroke\n"; std::cout << "closepath\n"; /* Draw the polygon. */ std::cout << "\n%%Hull:\n"; std::cout << "newpath\n"; std::cout << t->p->v[X] << "\t" << t->p->v[Y] << "\tmoveto\n"; while (t) { std::cout << t->p->v[X] << "\t" << t->p->v[Y] << "\tlineto\n"; t = t->next; } std::cout << "closepath stroke\n"; std::cout << "showpage\n%%%%EOF\n"; } //int AreaSign( tPointi a, tPointi b, tPointi c ) double AreaSign( tPointi a, tPointi b, tPointi c ) { double area2; area2 = ( b[0] - a[0] ) * (double)( c[1] - a[1] ) - ( c[0] - a[0] ) * (double)( b[1] - a[1] ); /* The area should be an integer. */ // if ( area2 > 0.5 ) return 1; // else if ( area2 < -0.5 ) return -1; // else return 0; /* The comment (that area is integer) * is wrong for the Core Version of this code, and causes * error in Level 3! * Anyway, we prefer to just return the area, not its sign. * (Chee, 9/28/2003) */ return(area2); } core++-1.7/progs/chullGraham/macros.h0100644000175000001440000000045007437361201017011 0ustar joachimusers#define EXIT_FAILURE 1 //char *malloc(); #define NEW(p, type) if ((p=(type *) malloc (sizeof(type))) == NULL) {\ printf ("NEW: Out of Memory!\n");\ exit(EXIT_FAILURE);\ } #define FREE(p) if (p) { free ((char *) p); p = NULL; } #define SWAP(t,x,y) { t = x; x = y; y = t; } core++-1.7/progs/chullGraham/inputs/0040755000175000001440000000000010147210064016672 5ustar joachimuserscore++-1.7/progs/chullGraham/inputs/README0100644000175000001440000000246607735625544017605 0ustar joachimusersREADME for chullGraham data files ============================================================= This directory contains sample input files for the graham convex hull program (and its variant graham4). The input files for the graham program ends in a number (the number of points): i4, i10, i19, square1000, etc The input files for the graham4 program ends in a number and the "w" suffix, indicating the xyzw-format: i4w, i10w, i19w, square1000w, square2000w, etc ============================================================= DIFFERENCE between graham and graham4 is just in the format of the input files. (1) graham input file: this is just a sequence of numbers x1 x2 x3 x4 x5 ... So the first point is (x1, x2), and the next point is (x3, x4), etc. (2) graham4 input file : this is a sequence of quadruples of the form (x1, y1, z1, w1) (x2, y2, z2, w2) (x3, y3, z3, w3) ... where the z-coordinates are 0, the w-coordinates are the homogenizing coordinate (usually set to 1). Each quadruple must be in its own line. ============================================================= COMMENTS ON THE INPUT FILES: i4: This input file (with 4 points) will cause an error in Level 1 of graham.cpp ============================================================= core++-1.7/progs/chullGraham/inputs/i100100644000175000001440000000017607735625544017235 0ustar joachimusers# file i10 # Input set with 10 points # 7.1 4.0 6.0 5.0 3.0 3.0 0.1 5.0 -2.0 3.0 -2.0 2.0 -5.0 1.0 0.0 0.0 -3.0 -2.0 3.0 -2.0 core++-1.7/progs/chullGraham/inputs/i190100644000175000001440000000013207735610471017227 0ustar joachimusers3 3 3 5 0 1 2 5 -2 2 -3 2 6 5 -3 4 -5 2 -5 -1 1 -2 -3 -2 4 2 5 1 -5 1 3 -2 0 5 0 0 7 4 core++-1.7/progs/chullGraham/inputs/i19w0100644000175000001440000000040207735610556017422 0ustar joachimusers(3, 3, 0, 1) (3, 5, 0, 1) (0, 1, 0, 1) (2, 5, 0, 1) (-2, 2, 0, 1) (-3, 2, 0, 1) (6, 5, 0, 1) (-3, 4, 0, 1) (-5, 2, 0, 1) (-5, -1, 0, 1) (1, -2, 0, 1) (-3, -2, 0, 1) (4, 2, 0, 1) (5, 1, 0, 1) (-5, 1, 0, 1) (3, -2, 0, 1) (0, 5, 0, 1) (0, 0, 0, 1) (7, 4, 0, 1) core++-1.7/progs/chullGraham/inputs/i40100644000175000001440000000024707735625544017157 0ustar joachimusers# This input set of 4 points will cause # graham.cpp to fail in Level 1. # --Chee Yap (9/29/03) 0.0 0.0 1.0 1.0 1.0 1.0000000000000001 2.0 2.0000000000000001 core++-1.7/progs/chullGraham/inputs/i4w0100644000175000001440000000011007735610556017330 0ustar joachimusers(0.0, 0.0, 0, 1) (1.0, 0.1, 0, 1) (1.0, 0.2, 0, 1) (2.0, 0.3, 0, 1) core++-1.7/progs/chullGraham/inputs/square10000100644000175000001440000002130407735625544020441 0ustar joachimusers# file square1000 # Input set with 1000 Points, randomly generated in a square. # -452 84 415 21 -491 -424 -269 271 1 -267 486 252 -79 -392 88 128 96 332 377 337 -401 -440 -452 275 39 83 292 251 338 104 298 330 -336 188 -173 -328 263 57 442 -261 289 403 490 -314 54 313 81 -139 165 -107 -40 225 -60 -290 -261 489 336 81 262 142 244 -75 468 415 -337 0 333 -99 -235 211 -134 -50 197 419 -262 -247 -244 403 146 215 103 -439 424 341 -441 400 305 395 -44 42 12 -325 466 -45 -434 -396 454 398 4 -306 84 369 143 -244 264 381 9 259 -370 209 -163 -310 108 -347 -251 -17 457 -381 439 -26 130 -411 -85 -440 -346 18 -473 -317 111 365 325 366 104 181 -150 98 -85 -21 -218 251 169 389 403 417 -152 335 -489 -238 -216 140 -150 198 199 4 -309 187 30 -313 369 -384 -472 170 482 131 -174 -193 -295 241 286 -14 -33 -70 -149 -154 -178 198 -344 -168 459 -60 471 -216 -387 145 287 -196 -193 -207 -10 -348 -92 17 321 -135 -376 -378 172 -172 362 -67 313 -195 362 -361 150 -341 336 305 -10 270 -280 -64 -470 -167 -444 316 136 -138 -416 -399 13 -8 118 -191 356 241 -69 3 -456 -232 435 356 72 272 495 -303 430 306 -105 52 -303 330 81 29 385 -128 -360 -277 -44 -259 235 447 358 -480 278 74 -50 -243 117 217 -333 -52 -235 439 -82 -39 344 -300 -62 -285 251 135 -480 -193 -361 405 178 -221 -397 -391 19 337 -469 -148 356 309 425 -219 -459 17 498 -293 464 -262 -379 -142 198 465 57 -388 -345 -217 246 -326 89 384 -446 -258 -362 -344 -149 156 493 -119 324 -335 407 -419 -295 -101 -446 -88 -161 -209 32 196 488 -28 -272 -425 126 10 320 300 -426 180 353 -185 317 165 -51 477 -478 -69 276 -314 -186 356 -109 212 409 302 -474 -325 -191 221 -361 281 448 -287 -118 -67 -491 -343 6 188 321 -20 494 -39 428 446 -18 -165 197 168 148 29 -466 -165 -87 335 -139 88 -381 -443 226 399 438 -243 -87 446 -87 419 109 -102 215 -435 -133 -349 492 -212 133 -198 485 -224 449 -11 -191 -240 401 -381 120 -36 -263 176 -335 -388 156 -421 -132 -455 280 463 109 -346 153 173 20 303 140 308 -89 442 268 186 366 -268 494 -399 -392 -412 220 72 -175 -128 236 -64 -497 314 303 -453 314 58 -102 211 137 -454 -293 -84 185 326 102 257 -12 -56 488 -43 44 -429 45 -260 142 369 111 -146 -220 113 -357 -442 160 456 115 144 -171 -198 -243 -126 8 172 -465 -3 -27 136 -271 460 -445 -308 -107 99 -238 437 338 404 281 -76 -267 -464 -488 -125 -407 171 -193 207 -209 135 47 -9 -306 -481 487 166 154 -309 102 209 -118 494 -217 144 406 -404 23 162 19 255 197 30 -395 289 -323 -89 -29 -33 -478 -45 -494 445 -318 -476 408 347 177 -426 -76 -139 -44 -107 143 -425 -226 238 97 435 -268 -173 107 262 -69 -129 438 342 342 -120 363 -228 -132 368 -308 49 391 -425 -129 43 -351 295 404 104 -337 22 178 -63 -264 -250 -153 -33 76 454 -296 -200 -383 323 -383 -4 161 -112 363 4 80 -113 -130 154 258 413 302 28 292 -119 190 -211 -466 -398 24 -217 -51 491 358 -122 -330 340 177 -213 138 294 282 -225 -343 121 278 236 -376 -134 240 -488 -357 -257 303 24 433 -433 57 -490 91 340 -42 57 173 335 226 -12 -12 -398 -243 270 -124 -87 -134 -371 -375 -152 -248 -10 -436 -237 132 -194 -459 -369 -286 -392 188 -276 198 3 181 -270 -349 -8 455 139 479 443 240 -289 188 -409 123 -471 -281 247 -124 -29 -288 -61 233 344 245 274 474 458 381 137 -343 54 -385 338 283 -234 -195 213 404 -241 131 119 -31 -206 209 -433 -178 427 314 198 -127 -499 -388 -418 344 356 355 294 290 211 -94 446 -260 21 259 286 -461 210 165 -203 -183 -241 265 110 467 332 432 369 121 105 -282 121 216 -201 -59 48 -371 -290 -187 339 115 -266 -446 -389 493 -449 396 -493 260 36 -196 -448 294 -456 162 236 375 69 81 -29 -351 298 -432 364 -428 8 -113 -300 217 199 -486 -193 433 -433 -82 401 -383 -211 407 376 325 -314 428 94 -270 65 -194 -420 -391 386 51 -243 159 118 -404 230 -399 -17 429 317 -343 442 -401 -435 16 465 -400 305 348 475 105 -491 378 -326 -262 -82 -21 -182 26 -160 368 282 498 -39 378 203 61 -164 107 -147 -8 24 -49 57 7 467 -3 106 247 -180 57 -173 -171 -90 0 66 328 479 383 -171 -206 226 -413 -232 -338 464 470 222 -225 53 -450 266 -448 1 -202 59 -57 295 -360 -335 -410 196 -9 -82 -418 490 484 409 444 342 -287 -286 44 -201 -19 205 -262 -74 -97 12 478 -48 -246 -494 452 51 64 -130 -179 203 34 -89 -125 328 -44 490 287 -160 409 105 52 -402 -376 351 78 328 -436 -294 76 457 158 329 462 85 -145 1 455 176 -320 -36 -438 54 -36 389 -71 152 -176 -187 -268 375 -89 -145 201 488 -342 265 467 -136 -184 400 -380 337 81 -26 -186 11 -375 -7 475 -314 -478 -86 -449 -494 342 202 -171 -370 433 -321 40 -237 380 4 -80 120 -54 283 435 -179 279 -470 -366 -164 3 -53 346 128 439 296 313 460 -315 363 465 -498 40 -231 -368 -52 -53 171 210 -198 -350 -394 421 96 388 331 416 143 360 -475 478 -161 -29 299 466 -115 71 254 -180 255 93 -240 257 -392 28 388 56 475 34 -259 -248 184 -154 -351 -245 -290 479 -354 352 315 -329 305 -371 141 79 -430 -498 -375 323 -179 380 -109 81 112 -1 -416 -25 -470 -466 -230 -214 167 116 -66 421 325 -112 -457 152 -322 -287 -68 -194 353 -125 354 -389 -326 -349 490 64 231 77 -462 314 -473 -433 348 -490 -163 -391 177 452 42 73 252 429 115 -121 -417 327 310 -112 156 295 263 -15 405 436 135 370 -25 -159 -78 13 -369 -52 79 478 -42 415 -438 -390 342 103 182 69 7 -227 447 89 -425 232 477 230 3 215 -309 -117 126 325 -271 -424 -358 150 88 -228 -426 -357 -275 31 -467 -214 140 375 388 -203 -81 -130 69 -158 459 144 -451 411 -151 51 101 39 434 -298 -160 -362 -223 -19 287 365 252 360 476 -134 -485 -263 389 -400 -222 -216 -31 346 125 -97 -35 173 -211 314 -300 389 -172 -391 -434 167 -254 -157 -377 -492 -317 374 368 -335 325 -291 -321 -463 -310 -456 -364 -33 -173 105 -212 451 253 99 -228 42 298 -364 369 406 -298 12 -373 44 134 -365 226 -16 390 -216 -314 -456 -179 -125 -413 -44 341 -87 -464 -395 -161 -481 357 438 -210 -126 211 -75 -282 93 126 229 219 -355 -161 353 370 322 330 235 -419 279 -99 -134 365 357 -317 -246 392 -213 92 410 -381 5 -325 -8 -308 100 209 284 -299 -86 -22 -154 252 -193 -309 49 -388 426 129 -397 180 -494 -31 20 362 151 273 229 437 -159 115 -469 345 289 22 -488 -136 -294 295 65 119 -251 410 -154 55 -424 394 166 -1 269 156 4 -287 -348 -159 363 424 -455 275 -260 159 305 -439 -76 -198 -428 287 7 367 -173 -398 -409 -288 -53 145 -212 -183 -214 -236 315 -470 420 -206 -258 -453 134 -420 470 178 354 -314 -187 134 -254 236 435 -183 -2 -82 -341 325 19 -251 -488 465 393 -201 -243 -345 63 -453 -316 -42 -160 -74 4 473 5 -51 127 -165 134 439 468 379 150 379 -328 -377 -228 -170 447 290 79 459 230 -53 -267 487 101 295 -491 285 -272 -151 -314 231 -203 190 -344 423 289 337 468 144 -38 322 315 85 -431 -380 7 358 198 -59 63 -379 174 25 221 -56 34 -19 172 382 166 -122 -346 -168 33 -447 -169 -202 389 -226 441 -173 -429 231 411 -361 350 -107 496 24 334 35 144 -17 -465 -160 426 68 321 73 -75 -38 451 79 293 -41 131 -400 256 -5 -127 172 321 -56 -122 207 82 -296 -424 54 227 409 -436 -154 -133 -402 185 -232 166 -19 341 -434 443 267 144 211 -299 -250 310 457 245 -341 104 41 102 482 -276 -341 -339 -201 212 387 -317 275 -292 49 373 392 316 14 -151 132 79 -233 -126 -301 477 75 -52 263 7 -332 421 -414 209 -2 -457 432 156 -297 -294 -156 -435 -112 -406 -228 436 466 -360 227 -45 -12 -165 -490 254 208 -292 206 -242 155 -56 264 323 -160 350 7 337 392 -86 -31 -429 119 312 -365 405 -93 417 347 46 119 -223 -491 453 -214 262 137 -7 -57 394 -376 387 134 446 -298 -41 -72 -485 -174 341 -17 -104 -65 -230 31 -84 -350 437 -192 496 -42 426 -251 -34 355 34 -297 -33 -497 145 -164 -374 7 469 -453 209 -97 -26 223 229 -210 -319 -400 224 -50 130 -385 99 42 -78 71 499 -177 319 -60 -347 -172 142 119 -170 -237 455 -45 269 399 1 -47 -222 474 -349 -261 -169 -419 462 280 211 -448 -145 -272 -27 425 -297 296 219 142 448 -478 -240 43 -148 22 -27 306 -234 -153 -217 219 124 -268 369 105 -29 -324 186 -92 455 -128 -40 -215 99 432 -315 301 203 403 -81 127 425 178 -355 -248 -325 117 -467 -60 463 -185 -366 63 47 -357 -346 328 -100 -416 -325 359 -131 274 267 53 50 -55 -68 468 -453 -168 121 -309 83 295 307 115 -289 246 430 -156 -216 -48 -178 -74 -56 -25 -270 343 59 -96 178 427 -347 -80 -45 203 364 386 146 411 -307 -257 -423 275 -487 384 -134 -277 105 -229 67 388 222 388 -211 -359 -161 18 483 397 422 136 299 -450 -469 -271 252 395 -409 -126 281 -217 116 357 -466 128 216 -101 351 -204 169 -107 -341 -134 -244 -52 6 94 465 -36 -34 362 -424 -260 412 -394 -31 139 59 256 341 103 89 374 -293 -220 -252 -467 76 416 -75 234 -243 180 -343 262 -250 -402 -298 215 459 -223 455 346 -118 -101 -39 -142 457 -52 -411 273 -473 177 123 -267 457 370 -235 8 262 189 -283 -156 -126 256 93 -29 457 -216 -95 -291 -286 -273 90 112 187 447 44 -390 -488 -208 -364 188 414 -132 120 260 132 -397 -3 -204 -180 -10 140 193 -279 -292 -361 -347 -9 43 -139 204 269 451 -209 -69 373 334 41 384 -398 176 48 -480 -357 250 151 -254 -278 447 65 212 62 -267 432 269 -129 -439 -264 413 -79 439 158 -153 -294 -436 -304 -485 104 -445 -384 -244 102 -393 -225 245 356 425 490 -446 347 30 265 -116 262 172 -371 -392 232 -136 -371 -222 153 -25 -17 217 170 -2 -204 225 113 51 -198 219 325 -478 51 226 104 48 16 -156 432 -247 -464 -140 223 -101 -144 351 176 -199 -365 200 core++-1.7/progs/chullGraham/inputs/square1000w0100644000175000001440000004326707735610556020641 0ustar joachimusers(-452, 84, 0, 1) (415, 21, 0, 1) (-491, -424, 0, 1) (-269, 271, 0, 1) (1, -267, 0, 1) (486, 252, 0, 1) (-79, -392, 0, 1) (88, 128, 0, 1) (96, 332, 0, 1) (377, 337, 0, 1) (-401, -440, 0, 1) (-452, 275, 0, 1) (39, 83, 0, 1) (292, 251, 0, 1) (338, 104, 0, 1) (298, 330, 0, 1) (-336, 188, 0, 1) (-173, -328, 0, 1) (263, 57, 0, 1) (442, -261, 0, 1) (289, 403, 0, 1) (490, -314, 0, 1) (54, 313, 0, 1) (81, -139, 0, 1) (165, -107, 0, 1) (-40, 225, 0, 1) (-60, -290, 0, 1) (-261, 489, 0, 1) (336, 81, 0, 1) (262, 142, 0, 1) (244, -75, 0, 1) (468, 415, 0, 1) (-337, 0, 0, 1) (333, -99, 0, 1) (-235, 211, 0, 1) (-134, -50, 0, 1) (197, 419, 0, 1) (-262, -247, 0, 1) (-244, 403, 0, 1) (146, 215, 0, 1) (103, -439, 0, 1) (424, 341, 0, 1) (-441, 400, 0, 1) (305, 395, 0, 1) (-44, 42, 0, 1) (12, -325, 0, 1) (466, -45, 0, 1) (-434, -396, 0, 1) (454, 398, 0, 1) (4, -306, 0, 1) (84, 369, 0, 1) (143, -244, 0, 1) (264, 381, 0, 1) (9, 259, 0, 1) (-370, 209, 0, 1) (-163, -310, 0, 1) (108, -347, 0, 1) (-251, -17, 0, 1) (457, -381, 0, 1) (439, -26, 0, 1) (130, -411, 0, 1) (-85, -440, 0, 1) (-346, 18, 0, 1) (-473, -317, 0, 1) (111, 365, 0, 1) (325, 366, 0, 1) (104, 181, 0, 1) (-150, 98, 0, 1) (-85, -21, 0, 1) (-218, 251, 0, 1) (169, 389, 0, 1) (403, 417, 0, 1) (-152, 335, 0, 1) (-489, -238, 0, 1) (-216, 140, 0, 1) (-150, 198, 0, 1) (199, 4, 0, 1) (-309, 187, 0, 1) (30, -313, 0, 1) (369, -384, 0, 1) (-472, 170, 0, 1) (482, 131, 0, 1) (-174, -193, 0, 1) (-295, 241, 0, 1) (286, -14, 0, 1) (-33, -70, 0, 1) (-149, -154, 0, 1) (-178, 198, 0, 1) (-344, -168, 0, 1) (459, -60, 0, 1) (471, -216, 0, 1) (-387, 145, 0, 1) (287, -196, 0, 1) (-193, -207, 0, 1) (-10, -348, 0, 1) (-92, 17, 0, 1) (321, -135, 0, 1) (-376, -378, 0, 1) (172, -172, 0, 1) (362, -67, 0, 1) (313, -195, 0, 1) (362, -361, 0, 1) (150, -341, 0, 1) (336, 305, 0, 1) (-10, 270, 0, 1) (-280, -64, 0, 1) (-470, -167, 0, 1) (-444, 316, 0, 1) (136, -138, 0, 1) (-416, -399, 0, 1) (13, -8, 0, 1) (118, -191, 0, 1) (356, 241, 0, 1) (-69, 3, 0, 1) (-456, -232, 0, 1) (435, 356, 0, 1) (72, 272, 0, 1) (495, -303, 0, 1) (430, 306, 0, 1) (-105, 52, 0, 1) (-303, 330, 0, 1) (81, 29, 0, 1) (385, -128, 0, 1) (-360, -277, 0, 1) (-44, -259, 0, 1) (235, 447, 0, 1) (358, -480, 0, 1) (278, 74, 0, 1) (-50, -243, 0, 1) (117, 217, 0, 1) (-333, -52, 0, 1) (-235, 439, 0, 1) (-82, -39, 0, 1) (344, -300, 0, 1) (-62, -285, 0, 1) (251, 135, 0, 1) (-480, -193, 0, 1) (-361, 405, 0, 1) (178, -221, 0, 1) (-397, -391, 0, 1) (19, 337, 0, 1) (-469, -148, 0, 1) (356, 309, 0, 1) (425, -219, 0, 1) (-459, 17, 0, 1) (498, -293, 0, 1) (464, -262, 0, 1) (-379, -142, 0, 1) (198, 465, 0, 1) (57, -388, 0, 1) (-345, -217, 0, 1) (246, -326, 0, 1) (89, 384, 0, 1) (-446, -258, 0, 1) (-362, -344, 0, 1) (-149, 156, 0, 1) (493, -119, 0, 1) (324, -335, 0, 1) (407, -419, 0, 1) (-295, -101, 0, 1) (-446, -88, 0, 1) (-161, -209, 0, 1) (32, 196, 0, 1) (488, -28, 0, 1) (-272, -425, 0, 1) (126, 10, 0, 1) (320, 300, 0, 1) (-426, 180, 0, 1) (353, -185, 0, 1) (317, 165, 0, 1) (-51, 477, 0, 1) (-478, -69, 0, 1) (276, -314, 0, 1) (-186, 356, 0, 1) (-109, 212, 0, 1) (409, 302, 0, 1) (-474, -325, 0, 1) (-191, 221, 0, 1) (-361, 281, 0, 1) (448, -287, 0, 1) (-118, -67, 0, 1) (-491, -343, 0, 1) (6, 188, 0, 1) (321, -20, 0, 1) (494, -39, 0, 1) (428, 446, 0, 1) (-18, -165, 0, 1) (197, 168, 0, 1) (148, 29, 0, 1) (-466, -165, 0, 1) (-87, 335, 0, 1) (-139, 88, 0, 1) (-381, -443, 0, 1) (226, 399, 0, 1) (438, -243, 0, 1) (-87, 446, 0, 1) (-87, 419, 0, 1) (109, -102, 0, 1) (215, -435, 0, 1) (-133, -349, 0, 1) (492, -212, 0, 1) (133, -198, 0, 1) (485, -224, 0, 1) (449, -11, 0, 1) (-191, -240, 0, 1) (401, -381, 0, 1) (120, -36, 0, 1) (-263, 176, 0, 1) (-335, -388, 0, 1) (156, -421, 0, 1) (-132, -455, 0, 1) (280, 463, 0, 1) (109, -346, 0, 1) (153, 173, 0, 1) (20, 303, 0, 1) (140, 308, 0, 1) (-89, 442, 0, 1) (268, 186, 0, 1) (366, -268, 0, 1) (494, -399, 0, 1) (-392, -412, 0, 1) (220, 72, 0, 1) (-175, -128, 0, 1) (236, -64, 0, 1) (-497, 314, 0, 1) (303, -453, 0, 1) (314, 58, 0, 1) (-102, 211, 0, 1) (137, -454, 0, 1) (-293, -84, 0, 1) (185, 326, 0, 1) (102, 257, 0, 1) (-12, -56, 0, 1) (488, -43, 0, 1) (44, -429, 0, 1) (45, -260, 0, 1) (142, 369, 0, 1) (111, -146, 0, 1) (-220, 113, 0, 1) (-357, -442, 0, 1) (160, 456, 0, 1) (115, 144, 0, 1) (-171, -198, 0, 1) (-243, -126, 0, 1) (8, 172, 0, 1) (-465, -3, 0, 1) (-27, 136, 0, 1) (-271, 460, 0, 1) (-445, -308, 0, 1) (-107, 99, 0, 1) (-238, 437, 0, 1) (338, 404, 0, 1) (281, -76, 0, 1) (-267, -464, 0, 1) (-488, -125, 0, 1) (-407, 171, 0, 1) (-193, 207, 0, 1) (-209, 135, 0, 1) (47, -9, 0, 1) (-306, -481, 0, 1) (487, 166, 0, 1) (154, -309, 0, 1) (102, 209, 0, 1) (-118, 494, 0, 1) (-217, 144, 0, 1) (406, -404, 0, 1) (23, 162, 0, 1) (19, 255, 0, 1) (197, 30, 0, 1) (-395, 289, 0, 1) (-323, -89, 0, 1) (-29, -33, 0, 1) (-478, -45, 0, 1) (-494, 445, 0, 1) (-318, -476, 0, 1) (408, 347, 0, 1) (177, -426, 0, 1) (-76, -139, 0, 1) (-44, -107, 0, 1) (143, -425, 0, 1) (-226, 238, 0, 1) (97, 435, 0, 1) (-268, -173, 0, 1) (107, 262, 0, 1) (-69, -129, 0, 1) (438, 342, 0, 1) (342, -120, 0, 1) (363, -228, 0, 1) (-132, 368, 0, 1) (-308, 49, 0, 1) (391, -425, 0, 1) (-129, 43, 0, 1) (-351, 295, 0, 1) (404, 104, 0, 1) (-337, 22, 0, 1) (178, -63, 0, 1) (-264, -250, 0, 1) (-153, -33, 0, 1) (76, 454, 0, 1) (-296, -200, 0, 1) (-383, 323, 0, 1) (-383, -4, 0, 1) (161, -112, 0, 1) (363, 4, 0, 1) (80, -113, 0, 1) (-130, 154, 0, 1) (258, 413, 0, 1) (302, 28, 0, 1) (292, -119, 0, 1) (190, -211, 0, 1) (-466, -398, 0, 1) (24, -217, 0, 1) (-51, 491, 0, 1) (358, -122, 0, 1) (-330, 340, 0, 1) (177, -213, 0, 1) (138, 294, 0, 1) (282, -225, 0, 1) (-343, 121, 0, 1) (278, 236, 0, 1) (-376, -134, 0, 1) (240, -488, 0, 1) (-357, -257, 0, 1) (303, 24, 0, 1) (433, -433, 0, 1) (57, -490, 0, 1) (91, 340, 0, 1) (-42, 57, 0, 1) (173, 335, 0, 1) (226, -12, 0, 1) (-12, -398, 0, 1) (-243, 270, 0, 1) (-124, -87, 0, 1) (-134, -371, 0, 1) (-375, -152, 0, 1) (-248, -10, 0, 1) (-436, -237, 0, 1) (132, -194, 0, 1) (-459, -369, 0, 1) (-286, -392, 0, 1) (188, -276, 0, 1) (198, 3, 0, 1) (181, -270, 0, 1) (-349, -8, 0, 1) (455, 139, 0, 1) (479, 443, 0, 1) (240, -289, 0, 1) (188, -409, 0, 1) (123, -471, 0, 1) (-281, 247, 0, 1) (-124, -29, 0, 1) (-288, -61, 0, 1) (233, 344, 0, 1) (245, 274, 0, 1) (474, 458, 0, 1) (381, 137, 0, 1) (-343, 54, 0, 1) (-385, 338, 0, 1) (283, -234, 0, 1) (-195, 213, 0, 1) (404, -241, 0, 1) (131, 119, 0, 1) (-31, -206, 0, 1) (209, -433, 0, 1) (-178, 427, 0, 1) (314, 198, 0, 1) (-127, -499, 0, 1) (-388, -418, 0, 1) (344, 356, 0, 1) (355, 294, 0, 1) (290, 211, 0, 1) (-94, 446, 0, 1) (-260, 21, 0, 1) (259, 286, 0, 1) (-461, 210, 0, 1) (165, -203, 0, 1) (-183, -241, 0, 1) (265, 110, 0, 1) (467, 332, 0, 1) (432, 369, 0, 1) (121, 105, 0, 1) (-282, 121, 0, 1) (216, -201, 0, 1) (-59, 48, 0, 1) (-371, -290, 0, 1) (-187, 339, 0, 1) (115, -266, 0, 1) (-446, -389, 0, 1) (493, -449, 0, 1) (396, -493, 0, 1) (260, 36, 0, 1) (-196, -448, 0, 1) (294, -456, 0, 1) (162, 236, 0, 1) (375, 69, 0, 1) (81, -29, 0, 1) (-351, 298, 0, 1) (-432, 364, 0, 1) (-428, 8, 0, 1) (-113, -300, 0, 1) (217, 199, 0, 1) (-486, -193, 0, 1) (433, -433, 0, 1) (-82, 401, 0, 1) (-383, -211, 0, 1) (407, 376, 0, 1) (325, -314, 0, 1) (428, 94, 0, 1) (-270, 65, 0, 1) (-194, -420, 0, 1) (-391, 386, 0, 1) (51, -243, 0, 1) (159, 118, 0, 1) (-404, 230, 0, 1) (-399, -17, 0, 1) (429, 317, 0, 1) (-343, 442, 0, 1) (-401, -435, 0, 1) (16, 465, 0, 1) (-400, 305, 0, 1) (348, 475, 0, 1) (105, -491, 0, 1) (378, -326, 0, 1) (-262, -82, 0, 1) (-21, -182, 0, 1) (26, -160, 0, 1) (368, 282, 0, 1) (498, -39, 0, 1) (378, 203, 0, 1) (61, -164, 0, 1) (107, -147, 0, 1) (-8, 24, 0, 1) (-49, 57, 0, 1) (7, 467, 0, 1) (-3, 106, 0, 1) (247, -180, 0, 1) (57, -173, 0, 1) (-171, -90, 0, 1) (0, 66, 0, 1) (328, 479, 0, 1) (383, -171, 0, 1) (-206, 226, 0, 1) (-413, -232, 0, 1) (-338, 464, 0, 1) (470, 222, 0, 1) (-225, 53, 0, 1) (-450, 266, 0, 1) (-448, 1, 0, 1) (-202, 59, 0, 1) (-57, 295, 0, 1) (-360, -335, 0, 1) (-410, 196, 0, 1) (-9, -82, 0, 1) (-418, 490, 0, 1) (484, 409, 0, 1) (444, 342, 0, 1) (-287, -286, 0, 1) (44, -201, 0, 1) (-19, 205, 0, 1) (-262, -74, 0, 1) (-97, 12, 0, 1) (478, -48, 0, 1) (-246, -494, 0, 1) (452, 51, 0, 1) (64, -130, 0, 1) (-179, 203, 0, 1) (34, -89, 0, 1) (-125, 328, 0, 1) (-44, 490, 0, 1) (287, -160, 0, 1) (409, 105, 0, 1) (52, -402, 0, 1) (-376, 351, 0, 1) (78, 328, 0, 1) (-436, -294, 0, 1) (76, 457, 0, 1) (158, 329, 0, 1) (462, 85, 0, 1) (-145, 1, 0, 1) (455, 176, 0, 1) (-320, -36, 0, 1) (-438, 54, 0, 1) (-36, 389, 0, 1) (-71, 152, 0, 1) (-176, -187, 0, 1) (-268, 375, 0, 1) (-89, -145, 0, 1) (201, 488, 0, 1) (-342, 265, 0, 1) (467, -136, 0, 1) (-184, 400, 0, 1) (-380, 337, 0, 1) (81, -26, 0, 1) (-186, 11, 0, 1) (-375, -7, 0, 1) (475, -314, 0, 1) (-478, -86, 0, 1) (-449, -494, 0, 1) (342, 202, 0, 1) (-171, -370, 0, 1) (433, -321, 0, 1) (40, -237, 0, 1) (380, 4, 0, 1) (-80, 120, 0, 1) (-54, 283, 0, 1) (435, -179, 0, 1) (279, -470, 0, 1) (-366, -164, 0, 1) (3, -53, 0, 1) (346, 128, 0, 1) (439, 296, 0, 1) (313, 460, 0, 1) (-315, 363, 0, 1) (465, -498, 0, 1) (40, -231, 0, 1) (-368, -52, 0, 1) (-53, 171, 0, 1) (210, -198, 0, 1) (-350, -394, 0, 1) (421, 96, 0, 1) (388, 331, 0, 1) (416, 143, 0, 1) (360, -475, 0, 1) (478, -161, 0, 1) (-29, 299, 0, 1) (466, -115, 0, 1) (71, 254, 0, 1) (-180, 255, 0, 1) (93, -240, 0, 1) (257, -392, 0, 1) (28, 388, 0, 1) (56, 475, 0, 1) (34, -259, 0, 1) (-248, 184, 0, 1) (-154, -351, 0, 1) (-245, -290, 0, 1) (479, -354, 0, 1) (352, 315, 0, 1) (-329, 305, 0, 1) (-371, 141, 0, 1) (79, -430, 0, 1) (-498, -375, 0, 1) (323, -179, 0, 1) (380, -109, 0, 1) (81, 112, 0, 1) (-1, -416, 0, 1) (-25, -470, 0, 1) (-466, -230, 0, 1) (-214, 167, 0, 1) (116, -66, 0, 1) (421, 325, 0, 1) (-112, -457, 0, 1) (152, -322, 0, 1) (-287, -68, 0, 1) (-194, 353, 0, 1) (-125, 354, 0, 1) (-389, -326, 0, 1) (-349, 490, 0, 1) (64, 231, 0, 1) (77, -462, 0, 1) (314, -473, 0, 1) (-433, 348, 0, 1) (-490, -163, 0, 1) (-391, 177, 0, 1) (452, 42, 0, 1) (73, 252, 0, 1) (429, 115, 0, 1) (-121, -417, 0, 1) (327, 310, 0, 1) (-112, 156, 0, 1) (295, 263, 0, 1) (-15, 405, 0, 1) (436, 135, 0, 1) (370, -25, 0, 1) (-159, -78, 0, 1) (13, -369, 0, 1) (-52, 79, 0, 1) (478, -42, 0, 1) (415, -438, 0, 1) (-390, 342, 0, 1) (103, 182, 0, 1) (69, 7, 0, 1) (-227, 447, 0, 1) (89, -425, 0, 1) (232, 477, 0, 1) (230, 3, 0, 1) (215, -309, 0, 1) (-117, 126, 0, 1) (325, -271, 0, 1) (-424, -358, 0, 1) (150, 88, 0, 1) (-228, -426, 0, 1) (-357, -275, 0, 1) (31, -467, 0, 1) (-214, 140, 0, 1) (375, 388, 0, 1) (-203, -81, 0, 1) (-130, 69, 0, 1) (-158, 459, 0, 1) (144, -451, 0, 1) (411, -151, 0, 1) (51, 101, 0, 1) (39, 434, 0, 1) (-298, -160, 0, 1) (-362, -223, 0, 1) (-19, 287, 0, 1) (365, 252, 0, 1) (360, 476, 0, 1) (-134, -485, 0, 1) (-263, 389, 0, 1) (-400, -222, 0, 1) (-216, -31, 0, 1) (346, 125, 0, 1) (-97, -35, 0, 1) (173, -211, 0, 1) (314, -300, 0, 1) (389, -172, 0, 1) (-391, -434, 0, 1) (167, -254, 0, 1) (-157, -377, 0, 1) (-492, -317, 0, 1) (374, 368, 0, 1) (-335, 325, 0, 1) (-291, -321, 0, 1) (-463, -310, 0, 1) (-456, -364, 0, 1) (-33, -173, 0, 1) (105, -212, 0, 1) (451, 253, 0, 1) (99, -228, 0, 1) (42, 298, 0, 1) (-364, 369, 0, 1) (406, -298, 0, 1) (12, -373, 0, 1) (44, 134, 0, 1) (-365, 226, 0, 1) (-16, 390, 0, 1) (-216, -314, 0, 1) (-456, -179, 0, 1) (-125, -413, 0, 1) (-44, 341, 0, 1) (-87, -464, 0, 1) (-395, -161, 0, 1) (-481, 357, 0, 1) (438, -210, 0, 1) (-126, 211, 0, 1) (-75, -282, 0, 1) (93, 126, 0, 1) (229, 219, 0, 1) (-355, -161, 0, 1) (353, 370, 0, 1) (322, 330, 0, 1) (235, -419, 0, 1) (279, -99, 0, 1) (-134, 365, 0, 1) (357, -317, 0, 1) (-246, 392, 0, 1) (-213, 92, 0, 1) (410, -381, 0, 1) (5, -325, 0, 1) (-8, -308, 0, 1) (100, 209, 0, 1) (284, -299, 0, 1) (-86, -22, 0, 1) (-154, 252, 0, 1) (-193, -309, 0, 1) (49, -388, 0, 1) (426, 129, 0, 1) (-397, 180, 0, 1) (-494, -31, 0, 1) (20, 362, 0, 1) (151, 273, 0, 1) (229, 437, 0, 1) (-159, 115, 0, 1) (-469, 345, 0, 1) (289, 22, 0, 1) (-488, -136, 0, 1) (-294, 295, 0, 1) (65, 119, 0, 1) (-251, 410, 0, 1) (-154, 55, 0, 1) (-424, 394, 0, 1) (166, -1, 0, 1) (269, 156, 0, 1) (4, -287, 0, 1) (-348, -159, 0, 1) (363, 424, 0, 1) (-455, 275, 0, 1) (-260, 159, 0, 1) (305, -439, 0, 1) (-76, -198, 0, 1) (-428, 287, 0, 1) (7, 367, 0, 1) (-173, -398, 0, 1) (-409, -288, 0, 1) (-53, 145, 0, 1) (-212, -183, 0, 1) (-214, -236, 0, 1) (315, -470, 0, 1) (420, -206, 0, 1) (-258, -453, 0, 1) (134, -420, 0, 1) (470, 178, 0, 1) (354, -314, 0, 1) (-187, 134, 0, 1) (-254, 236, 0, 1) (435, -183, 0, 1) (-2, -82, 0, 1) (-341, 325, 0, 1) (19, -251, 0, 1) (-488, 465, 0, 1) (393, -201, 0, 1) (-243, -345, 0, 1) (63, -453, 0, 1) (-316, -42, 0, 1) (-160, -74, 0, 1) (4, 473, 0, 1) (5, -51, 0, 1) (127, -165, 0, 1) (134, 439, 0, 1) (468, 379, 0, 1) (150, 379, 0, 1) (-328, -377, 0, 1) (-228, -170, 0, 1) (447, 290, 0, 1) (79, 459, 0, 1) (230, -53, 0, 1) (-267, 487, 0, 1) (101, 295, 0, 1) (-491, 285, 0, 1) (-272, -151, 0, 1) (-314, 231, 0, 1) (-203, 190, 0, 1) (-344, 423, 0, 1) (289, 337, 0, 1) (468, 144, 0, 1) (-38, 322, 0, 1) (315, 85, 0, 1) (-431, -380, 0, 1) (7, 358, 0, 1) (198, -59, 0, 1) (63, -379, 0, 1) (174, 25, 0, 1) (221, -56, 0, 1) (34, -19, 0, 1) (172, 382, 0, 1) (166, -122, 0, 1) (-346, -168, 0, 1) (33, -447, 0, 1) (-169, -202, 0, 1) (389, -226, 0, 1) (441, -173, 0, 1) (-429, 231, 0, 1) (411, -361, 0, 1) (350, -107, 0, 1) (496, 24, 0, 1) (334, 35, 0, 1) (144, -17, 0, 1) (-465, -160, 0, 1) (426, 68, 0, 1) (321, 73, 0, 1) (-75, -38, 0, 1) (451, 79, 0, 1) (293, -41, 0, 1) (131, -400, 0, 1) (256, -5, 0, 1) (-127, 172, 0, 1) (321, -56, 0, 1) (-122, 207, 0, 1) (82, -296, 0, 1) (-424, 54, 0, 1) (227, 409, 0, 1) (-436, -154, 0, 1) (-133, -402, 0, 1) (185, -232, 0, 1) (166, -19, 0, 1) (341, -434, 0, 1) (443, 267, 0, 1) (144, 211, 0, 1) (-299, -250, 0, 1) (310, 457, 0, 1) (245, -341, 0, 1) (104, 41, 0, 1) (102, 482, 0, 1) (-276, -341, 0, 1) (-339, -201, 0, 1) (212, 387, 0, 1) (-317, 275, 0, 1) (-292, 49, 0, 1) (373, 392, 0, 1) (316, 14, 0, 1) (-151, 132, 0, 1) (79, -233, 0, 1) (-126, -301, 0, 1) (477, 75, 0, 1) (-52, 263, 0, 1) (7, -332, 0, 1) (421, -414, 0, 1) (209, -2, 0, 1) (-457, 432, 0, 1) (156, -297, 0, 1) (-294, -156, 0, 1) (-435, -112, 0, 1) (-406, -228, 0, 1) (436, 466, 0, 1) (-360, 227, 0, 1) (-45, -12, 0, 1) (-165, -490, 0, 1) (254, 208, 0, 1) (-292, 206, 0, 1) (-242, 155, 0, 1) (-56, 264, 0, 1) (323, -160, 0, 1) (350, 7, 0, 1) (337, 392, 0, 1) (-86, -31, 0, 1) (-429, 119, 0, 1) (312, -365, 0, 1) (405, -93, 0, 1) (417, 347, 0, 1) (46, 119, 0, 1) (-223, -491, 0, 1) (453, -214, 0, 1) (262, 137, 0, 1) (-7, -57, 0, 1) (394, -376, 0, 1) (387, 134, 0, 1) (446, -298, 0, 1) (-41, -72, 0, 1) (-485, -174, 0, 1) (341, -17, 0, 1) (-104, -65, 0, 1) (-230, 31, 0, 1) (-84, -350, 0, 1) (437, -192, 0, 1) (496, -42, 0, 1) (426, -251, 0, 1) (-34, 355, 0, 1) (34, -297, 0, 1) (-33, -497, 0, 1) (145, -164, 0, 1) (-374, 7, 0, 1) (469, -453, 0, 1) (209, -97, 0, 1) (-26, 223, 0, 1) (229, -210, 0, 1) (-319, -400, 0, 1) (224, -50, 0, 1) (130, -385, 0, 1) (99, 42, 0, 1) (-78, 71, 0, 1) (499, -177, 0, 1) (319, -60, 0, 1) (-347, -172, 0, 1) (142, 119, 0, 1) (-170, -237, 0, 1) (455, -45, 0, 1) (269, 399, 0, 1) (1, -47, 0, 1) (-222, 474, 0, 1) (-349, -261, 0, 1) (-169, -419, 0, 1) (462, 280, 0, 1) (211, -448, 0, 1) (-145, -272, 0, 1) (-27, 425, 0, 1) (-297, 296, 0, 1) (219, 142, 0, 1) (448, -478, 0, 1) (-240, 43, 0, 1) (-148, 22, 0, 1) (-27, 306, 0, 1) (-234, -153, 0, 1) (-217, 219, 0, 1) (124, -268, 0, 1) (369, 105, 0, 1) (-29, -324, 0, 1) (186, -92, 0, 1) (455, -128, 0, 1) (-40, -215, 0, 1) (99, 432, 0, 1) (-315, 301, 0, 1) (203, 403, 0, 1) (-81, 127, 0, 1) (425, 178, 0, 1) (-355, -248, 0, 1) (-325, 117, 0, 1) (-467, -60, 0, 1) (463, -185, 0, 1) (-366, 63, 0, 1) (47, -357, 0, 1) (-346, 328, 0, 1) (-100, -416, 0, 1) (-325, 359, 0, 1) (-131, 274, 0, 1) (267, 53, 0, 1) (50, -55, 0, 1) (-68, 468, 0, 1) (-453, -168, 0, 1) (121, -309, 0, 1) (83, 295, 0, 1) (307, 115, 0, 1) (-289, 246, 0, 1) (430, -156, 0, 1) (-216, -48, 0, 1) (-178, -74, 0, 1) (-56, -25, 0, 1) (-270, 343, 0, 1) (59, -96, 0, 1) (178, 427, 0, 1) (-347, -80, 0, 1) (-45, 203, 0, 1) (364, 386, 0, 1) (146, 411, 0, 1) (-307, -257, 0, 1) (-423, 275, 0, 1) (-487, 384, 0, 1) (-134, -277, 0, 1) (105, -229, 0, 1) (67, 388, 0, 1) (222, 388, 0, 1) (-211, -359, 0, 1) (-161, 18, 0, 1) (483, 397, 0, 1) (422, 136, 0, 1) (299, -450, 0, 1) (-469, -271, 0, 1) (252, 395, 0, 1) (-409, -126, 0, 1) (281, -217, 0, 1) (116, 357, 0, 1) (-466, 128, 0, 1) (216, -101, 0, 1) (351, -204, 0, 1) (169, -107, 0, 1) (-341, -134, 0, 1) (-244, -52, 0, 1) (6, 94, 0, 1) (465, -36, 0, 1) (-34, 362, 0, 1) (-424, -260, 0, 1) (412, -394, 0, 1) (-31, 139, 0, 1) (59, 256, 0, 1) (341, 103, 0, 1) (89, 374, 0, 1) (-293, -220, 0, 1) (-252, -467, 0, 1) (76, 416, 0, 1) (-75, 234, 0, 1) (-243, 180, 0, 1) (-343, 262, 0, 1) (-250, -402, 0, 1) (-298, 215, 0, 1) (459, -223, 0, 1) (455, 346, 0, 1) (-118, -101, 0, 1) (-39, -142, 0, 1) (457, -52, 0, 1) (-411, 273, 0, 1) (-473, 177, 0, 1) (123, -267, 0, 1) (457, 370, 0, 1) (-235, 8, 0, 1) (262, 189, 0, 1) (-283, -156, 0, 1) (-126, 256, 0, 1) (93, -29, 0, 1) (457, -216, 0, 1) (-95, -291, 0, 1) (-286, -273, 0, 1) (90, 112, 0, 1) (187, 447, 0, 1) (44, -390, 0, 1) (-488, -208, 0, 1) (-364, 188, 0, 1) (414, -132, 0, 1) (120, 260, 0, 1) (132, -397, 0, 1) (-3, -204, 0, 1) (-180, -10, 0, 1) (140, 193, 0, 1) (-279, -292, 0, 1) (-361, -347, 0, 1) (-9, 43, 0, 1) (-139, 204, 0, 1) (269, 451, 0, 1) (-209, -69, 0, 1) (373, 334, 0, 1) (41, 384, 0, 1) (-398, 176, 0, 1) (48, -480, 0, 1) (-357, 250, 0, 1) (151, -254, 0, 1) (-278, 447, 0, 1) (65, 212, 0, 1) (62, -267, 0, 1) (432, 269, 0, 1) (-129, -439, 0, 1) (-264, 413, 0, 1) (-79, 439, 0, 1) (158, -153, 0, 1) (-294, -436, 0, 1) (-304, -485, 0, 1) (104, -445, 0, 1) (-384, -244, 0, 1) (102, -393, 0, 1) (-225, 245, 0, 1) (356, 425, 0, 1) (490, -446, 0, 1) (347, 30, 0, 1) (265, -116, 0, 1) (262, 172, 0, 1) (-371, -392, 0, 1) (232, -136, 0, 1) (-371, -222, 0, 1) (153, -25, 0, 1) (-17, 217, 0, 1) (170, -2, 0, 1) (-204, 225, 0, 1) (113, 51, 0, 1) (-198, 219, 0, 1) (325, -478, 0, 1) (51, 226, 0, 1) (104, 48, 0, 1) (16, -156, 0, 1) (432, -247, 0, 1) (-464, -140, 0, 1) (223, -101, 0, 1) (-144, 351, 0, 1) (176, -199, 0, 1) (-365, 200, 0, 1) core++-1.7/progs/chullGraham/inputs/square2000w0100644000175000001440000007557207735610556020646 0ustar joachimusers(471,132,0,1) (496,171,0,1) (-280,22,0,1) (472,439,0,1) (-177,494,0,1) (-35,-476,0,1) (480,-456,0,1) (71,-28,0,1) (-113,-22,0,1) (224,-123,0,1) (13,-440,0,1) (-425,411,0,1) (-85,425,0,1) (63,-102,0,1) (-298,197,0,1) (-426,-352,0,1) (-196,-455,0,1) (318,23,0,1) (66,265,0,1) (-63,388,0,1) (234,401,0,1) (411,190,0,1) (444,-42,0,1) (-363,-194,0,1) (435,360,0,1) (183,-76,0,1) (419,257,0,1) (-190,-191,0,1) (158,372,0,1) (207,359,0,1) (44,280,0,1) (347,324,0,1) (299,-154,0,1) (-135,39,0,1) (282,-271,0,1) (-251,159,0,1) (-385,438,0,1) (78,72,0,1) (-450,384,0,1) (-17,409,0,1) (42,406,0,1) (304,-226,0,1) (-309,-412,0,1) (431,-461,0,1) (294,265,0,1) (82,49,0,1) (246,-95,0,1) (-152,20,0,1) (250,213,0,1) (-465,7,0,1) (441,-217,0,1) (-359,-469,0,1) (-304,219,0,1) (103,-255,0,1) (78,-439,0,1) (-371,-405,0,1) (466,432,0,1) (-132,-368,0,1) (-225,-330,0,1) (289,-485,0,1) (252,-186,0,1) (261,-368,0,1) (161,-244,0,1) (381,-151,0,1) (-210,-137,0,1) (-235,72,0,1) (4,-204,0,1) (267,-302,0,1) (398,275,0,1) (458,-384,0,1) (369,399,0,1) (-477,-288,0,1) (-494,-482,0,1) (-14,-324,0,1) (307,1,0,1) (427,-404,0,1) (-263,-466,0,1) (256,-8,0,1) (414,-419,0,1) (282,-248,0,1) (-155,-171,0,1) (255,140,0,1) (-428,452,0,1) (13,-442,0,1) (202,-54,0,1) (-327,46,0,1) (-180,-304,0,1) (258,-174,0,1) (-287,-281,0,1) (1,219,0,1) (-97,-410,0,1) (455,-64,0,1) (346,-77,0,1) (-175,426,0,1) (-320,76,0,1) (-254,8,0,1) (-193,386,0,1) (79,-266,0,1) (-126,137,0,1) (436,320,0,1) (309,-43,0,1) (-385,-310,0,1) (-60,-307,0,1) (-91,440,0,1) (-313,-397,0,1) (-182,-223,0,1) (-466,253,0,1) (-402,-44,0,1) (-447,135,0,1) (129,-256,0,1) (-382,435,0,1) (-395,197,0,1) (-356,-21,0,1) (-191,-445,0,1) (-226,-407,0,1) (12,-112,0,1) (-427,201,0,1) (328,-235,0,1) (-415,243,0,1) (-49,-312,0,1) (-463,227,0,1) (-279,289,0,1) (324,176,0,1) (342,322,0,1) (-214,-54,0,1) (-458,-97,0,1) (-144,-354,0,1) (-425,-1,0,1) (124,-117,0,1) (54,397,0,1) (-24,-459,0,1) (-239,48,0,1) (241,-436,0,1) (312,326,0,1) (306,-262,0,1) (342,465,0,1) (-291,107,0,1) (264,384,0,1) (-76,62,0,1) (-355,369,0,1) (103,47,0,1) (-300,248,0,1) (122,198,0,1) (-152,-273,0,1) (-280,-45,0,1) (-233,-20,0,1) (43,289,0,1) (309,-175,0,1) (-497,297,0,1) (-358,467,0,1) (248,206,0,1) (364,-353,0,1) (-257,345,0,1) (30,-310,0,1) (69,-373,0,1) (388,416,0,1) (-393,-410,0,1) (-389,61,0,1) (-143,91,0,1) (39,-160,0,1) (-391,-197,0,1) (-376,-67,0,1) (-195,420,0,1) (75,-253,0,1) (400,-202,0,1) (453,239,0,1) (-55,-329,0,1) (222,-65,0,1) (-273,125,0,1) (60,-146,0,1) (-12,-49,0,1) (-40,77,0,1) (61,433,0,1) (-373,34,0,1) (-252,-264,0,1) (337,-129,0,1) (168,-383,0,1) (-234,-282,0,1) (-136,-359,0,1) (16,-208,0,1) (379,460,0,1) (-38,76,0,1) (-130,-47,0,1) (303,494,0,1) (-368,-43,0,1) (-62,91,0,1) (-490,499,0,1) (86,442,0,1) (-399,-404,0,1) (-334,-164,0,1) (432,36,0,1) (-476,302,0,1) (-303,-113,0,1) (442,212,0,1) (178,297,0,1) (147,-384,0,1) (-152,68,0,1) (-374,486,0,1) (56,-243,0,1) (-81,493,0,1) (347,-72,0,1) (467,-91,0,1) (-155,-456,0,1) (4,10,0,1) (-121,-89,0,1) (-478,-142,0,1) (-66,323,0,1) (55,321,0,1) (240,-258,0,1) (-26,12,0,1) (389,89,0,1) (360,381,0,1) (-367,485,0,1) (342,188,0,1) (-282,-264,0,1) (156,-460,0,1) (163,99,0,1) (-52,142,0,1) (451,-7,0,1) (-163,14,0,1) (-146,271,0,1) (-188,408,0,1) (67,-472,0,1) (-375,-484,0,1) (39,105,0,1) (-126,369,0,1) (237,-165,0,1) (187,-100,0,1) (52,422,0,1) (-469,91,0,1) (61,129,0,1) (-485,44,0,1) (-254,465,0,1) (-488,-258,0,1) (-222,26,0,1) (95,-476,0,1) (337,-22,0,1) (90,364,0,1) (102,105,0,1) (-121,91,0,1) (-315,252,0,1) (-65,421,0,1) (-438,-403,0,1) (-204,113,0,1) (-173,-320,0,1) (55,455,0,1) (-306,-426,0,1) (-323,-366,0,1) (-415,-82,0,1) (-89,110,0,1) (-66,-77,0,1) (-35,-238,0,1) (-458,104,0,1) (140,132,0,1) (288,-132,0,1) (-457,185,0,1) (-71,-361,0,1) (480,-482,0,1) (-367,-218,0,1) (-303,187,0,1) (-287,-110,0,1) (260,-111,0,1) (23,345,0,1) (306,434,0,1) (-70,293,0,1) (-157,352,0,1) (-267,-158,0,1) (-410,-226,0,1) (445,229,0,1) (406,208,0,1) (-428,448,0,1) (-132,1,0,1) (-438,-176,0,1) (18,-305,0,1) (105,214,0,1) (381,317,0,1) (-421,117,0,1) (-319,101,0,1) (-63,486,0,1) (10,366,0,1) (254,353,0,1) (194,486,0,1) (-330,283,0,1) (-264,-410,0,1) (-13,-383,0,1) (297,59,0,1) (-460,-359,0,1) (-465,-399,0,1) (-36,52,0,1) (-205,-456,0,1) (-259,-348,0,1) (361,-181,0,1) (268,-483,0,1) (419,-320,0,1) (-95,-479,0,1) (232,-267,0,1) (214,194,0,1) (-98,-28,0,1) (429,-9,0,1) (459,-479,0,1) (-237,-7,0,1) (-440,-97,0,1) (27,-340,0,1) (366,-446,0,1) (-45,410,0,1) (-206,106,0,1) (246,112,0,1) (-151,262,0,1) (6,28,0,1) (240,410,0,1) (48,-52,0,1) (-382,-262,0,1) (-383,19,0,1) (209,-479,0,1) (143,-459,0,1) (-252,-389,0,1) (-400,150,0,1) (137,-241,0,1) (-8,190,0,1) (213,-123,0,1) (483,-206,0,1) (-402,70,0,1) (142,359,0,1) (-448,-355,0,1) (75,461,0,1) (193,-445,0,1) (430,-386,0,1) (73,114,0,1) (-366,58,0,1) (-267,-326,0,1) (305,-157,0,1) (-227,-70,0,1) (480,31,0,1) (421,145,0,1) (-280,-227,0,1) (104,13,0,1) (-130,-351,0,1) (-369,-295,0,1) (-300,-225,0,1) (279,-363,0,1) (467,276,0,1) (-309,372,0,1) (389,263,0,1) (-38,-204,0,1) (194,-329,0,1) (-424,-488,0,1) (-57,6,0,1) (491,473,0,1) (-98,112,0,1) (-332,175,0,1) (-309,181,0,1) (-480,-161,0,1) (311,-276,0,1) (39,-439,0,1) (175,-496,0,1) (253,365,0,1) (375,117,0,1) (103,-188,0,1) (114,399,0,1) (284,474,0,1) (-298,-45,0,1) (483,-349,0,1) (357,70,0,1) (-182,7,0,1) (260,498,0,1) (26,-425,0,1) (284,250,0,1) (113,345,0,1) (227,-237,0,1) (348,-44,0,1) (-397,198,0,1) (-452,205,0,1) (162,79,0,1) (490,-79,0,1) (29,482,0,1) (123,483,0,1) (441,273,0,1) (315,-14,0,1) (-434,-203,0,1) (-278,-460,0,1) (323,-204,0,1) (323,48,0,1) (408,143,0,1) (-250,-354,0,1) (-34,205,0,1) (-252,-360,0,1) (253,452,0,1) (-375,-110,0,1) (7,-410,0,1) (310,-489,0,1) (-452,-92,0,1) (493,488,0,1) (-344,284,0,1) (-51,-278,0,1) (-444,170,0,1) (-239,378,0,1) (465,-441,0,1) (-99,348,0,1) (202,151,0,1) (493,-357,0,1) (-169,-284,0,1) (-218,-441,0,1) (-356,-94,0,1) (-52,150,0,1) (-4,-266,0,1) (160,43,0,1) (141,128,0,1) (6,297,0,1) (-113,454,0,1) (-57,100,0,1) (-246,-204,0,1) (40,-188,0,1) (197,-136,0,1) (-177,-168,0,1) (-368,153,0,1) (48,-87,0,1) (212,191,0,1) (319,-365,0,1) (-184,-210,0,1) (-132,475,0,1) (332,78,0,1) (-187,281,0,1) (465,-258,0,1) (274,-117,0,1) (341,-497,0,1) (178,-143,0,1) (-186,-150,0,1) (220,-197,0,1) (172,-473,0,1) (-66,-199,0,1) (74,346,0,1) (-260,140,0,1) (-378,55,0,1) (429,-10,0,1) (5,236,0,1) (-26,-441,0,1) (-476,-270,0,1) (-234,-119,0,1) (-418,-466,0,1) (-62,-206,0,1) (-116,-367,0,1) (96,-469,0,1) (-340,-495,0,1) (-169,233,0,1) (351,-182,0,1) (473,-34,0,1) (-60,3,0,1) (-129,429,0,1) (-418,-122,0,1) (-458,-394,0,1) (107,-460,0,1) (-129,85,0,1) (-80,-48,0,1) (65,-47,0,1) (390,358,0,1) (336,-70,0,1) (367,-343,0,1) (-66,-327,0,1) (390,-240,0,1) (-9,338,0,1) (226,430,0,1) (-184,-428,0,1) (334,-201,0,1) (-347,-313,0,1) (-160,-242,0,1) (293,-121,0,1) (128,-147,0,1) (298,-444,0,1) (417,-273,0,1) (445,250,0,1) (-462,442,0,1) (-345,404,0,1) (-425,89,0,1) (-447,464,0,1) (348,43,0,1) (277,49,0,1) (-52,-432,0,1) (120,-243,0,1) (-133,273,0,1) (-57,206,0,1) (-494,-289,0,1) (-439,134,0,1) (63,358,0,1) (189,-45,0,1) (-440,109,0,1) (-320,-402,0,1) (26,-165,0,1) (100,423,0,1) (-471,39,0,1) (246,71,0,1) (-209,-229,0,1) (-141,390,0,1) (-250,225,0,1) (138,192,0,1) (-94,144,0,1) (402,-34,0,1) (-247,-60,0,1) (-200,441,0,1) (394,-141,0,1) (25,-450,0,1) (-44,-474,0,1) (-116,-67,0,1) (126,-218,0,1) (-39,-360,0,1) (-497,-492,0,1) (-69,-227,0,1) (-499,289,0,1) (-361,-249,0,1) (-11,276,0,1) (442,394,0,1) (-105,320,0,1) (-164,147,0,1) (-265,135,0,1) (63,-395,0,1) (493,-437,0,1) (-346,-75,0,1) (-411,37,0,1) (357,214,0,1) (318,-207,0,1) (353,320,0,1) (-200,-241,0,1) (-431,-199,0,1) (-477,-293,0,1) (51,11,0,1) (482,-32,0,1) (-119,-147,0,1) (-237,216,0,1) (499,-2,0,1) (-174,38,0,1) (102,-206,0,1) (100,255,0,1) (218,188,0,1) (-233,50,0,1) (-123,-440,0,1) (343,-294,0,1) (379,-382,0,1) (-36,447,0,1) (-82,-13,0,1) (-371,468,0,1) (497,-413,0,1) (-88,-147,0,1) (-61,174,0,1) (-456,-87,0,1) (-353,-131,0,1) (450,248,0,1) (163,26,0,1) (-22,-144,0,1) (-311,244,0,1) (406,66,0,1) (303,224,0,1) (271,158,0,1) (341,-290,0,1) (80,-265,0,1) (196,209,0,1) (-322,169,0,1) (295,89,0,1) (-291,-261,0,1) (-459,121,0,1) (-115,-91,0,1) (47,-391,0,1) (-453,-452,0,1) (86,-97,0,1) (-264,-194,0,1) (-216,301,0,1) (-416,47,0,1) (241,323,0,1) (257,-203,0,1) (-467,-72,0,1) (-289,-428,0,1) (275,299,0,1) (-431,483,0,1) (-487,-391,0,1) (79,-102,0,1) (17,-399,0,1) (6,64,0,1) (-352,-433,0,1) (466,-116,0,1) (-128,-275,0,1) (-340,-44,0,1) (-293,207,0,1) (-328,-495,0,1) (-61,-32,0,1) (-462,366,0,1) (-52,-252,0,1) (438,-302,0,1) (-478,-344,0,1) (-465,-410,0,1) (235,-68,0,1) (106,335,0,1) (437,-355,0,1) (483,-414,0,1) (-158,-149,0,1) (-190,1,0,1) (306,16,0,1) (-317,477,0,1) (21,121,0,1) (-79,58,0,1) (-37,368,0,1) (305,-124,0,1) (-458,326,0,1) (-143,-303,0,1) (360,-54,0,1) (431,-233,0,1) (-473,242,0,1) (-321,-328,0,1) (200,-342,0,1) (-243,-483,0,1) (8,67,0,1) (17,-211,0,1) (-442,200,0,1) (-259,78,0,1) (-204,161,0,1) (-389,258,0,1) (5,415,0,1) (-391,46,0,1) (217,-35,0,1) (242,52,0,1) (410,149,0,1) (319,437,0,1) (-134,497,0,1) (-416,-459,0,1) (-370,-160,0,1) (-443,137,0,1) (406,73,0,1) (425,464,0,1) (-252,-358,0,1) (17,44,0,1) (302,128,0,1) (-223,-218,0,1) (18,-114,0,1) (327,-290,0,1) (350,45,0,1) (262,236,0,1) (-331,56,0,1) (148,34,0,1) (28,231,0,1) (74,158,0,1) (-454,130,0,1) (-230,452,0,1) (-322,-329,0,1) (391,-74,0,1) (-188,-117,0,1) (469,-411,0,1) (-279,-129,0,1) (4,106,0,1) (-327,213,0,1) (-68,217,0,1) (-50,-357,0,1) (385,290,0,1) (-106,9,0,1) (-4,467,0,1) (-358,41,0,1) (72,-89,0,1) (-32,250,0,1) (81,-166,0,1) (-349,392,0,1) (217,-405,0,1) (481,202,0,1) (-185,-173,0,1) (-319,421,0,1) (-1,394,0,1) (-172,-308,0,1) (-181,-30,0,1) (-448,-200,0,1) (-265,-54,0,1) (308,230,0,1) (-112,449,0,1) (-254,460,0,1) (-165,214,0,1) (185,416,0,1) (-477,335,0,1) (283,239,0,1) (429,239,0,1) (-83,-281,0,1) (-459,97,0,1) (-385,40,0,1) (-34,-58,0,1) (231,285,0,1) (411,282,0,1) (-440,-379,0,1) (-297,367,0,1) (350,91,0,1) (291,-428,0,1) (26,-399,0,1) (285,-314,0,1) (307,275,0,1) (22,424,0,1) (-11,438,0,1) (-382,30,0,1) (10,-267,0,1) (-455,476,0,1) (174,275,0,1) (236,61,0,1) (32,295,0,1) (181,235,0,1) (137,7,0,1) (-199,-97,0,1) (78,326,0,1) (3,-162,0,1) (-5,-380,0,1) (-255,141,0,1) (405,233,0,1) (54,-262,0,1) (-460,-270,0,1) (-218,404,0,1) (-468,226,0,1) (-60,64,0,1) (-4,-404,0,1) (-226,-392,0,1) (102,74,0,1) (10,-345,0,1) (-125,-8,0,1) (-139,-18,0,1) (112,-158,0,1) (226,-272,0,1) (-278,-65,0,1) (282,-281,0,1) (172,321,0,1) (-51,454,0,1) (311,-172,0,1) (485,12,0,1) (267,24,0,1) (362,297,0,1) (-410,-60,0,1) (-154,99,0,1) (94,220,0,1) (86,-438,0,1) (-444,-456,0,1) (173,-103,0,1) (269,400,0,1) (118,-321,0,1) (157,337,0,1) (351,-47,0,1) (-239,280,0,1) (-261,88,0,1) (240,250,0,1) (-170,-260,0,1) (232,-333,0,1) (-488,321,0,1) (106,-142,0,1) (-105,-324,0,1) (-447,481,0,1) (-263,-391,0,1) (409,5,0,1) (268,284,0,1) (-401,447,0,1) (-83,435,0,1) (273,369,0,1) (-329,28,0,1) (-416,258,0,1) (-257,333,0,1) (-437,-18,0,1) (41,-271,0,1) (-6,-163,0,1) (335,351,0,1) (232,403,0,1) (188,-278,0,1) (187,-394,0,1) (-8,-70,0,1) (389,90,0,1) (-148,-219,0,1) (0,-400,0,1) (-374,170,0,1) (127,-291,0,1) (-97,370,0,1) (-483,-35,0,1) (-173,57,0,1) (193,320,0,1) (394,3,0,1) (146,101,0,1) (-12,25,0,1) (-236,209,0,1) (11,450,0,1) (314,-145,0,1) (179,67,0,1) (207,459,0,1) (-458,306,0,1) (-440,211,0,1) (-91,-232,0,1) (-411,-246,0,1) (-215,53,0,1) (80,341,0,1) (-278,-124,0,1) (210,224,0,1) (-214,-312,0,1) (21,49,0,1) (396,-492,0,1) (-26,186,0,1) (329,-160,0,1) (52,11,0,1) (-226,93,0,1) (-208,-166,0,1) (-220,200,0,1) (101,-132,0,1) (453,385,0,1) (421,9,0,1) (202,-382,0,1) (384,-113,0,1) (341,380,0,1) (173,-496,0,1) (-123,-303,0,1) (400,-116,0,1) (171,61,0,1) (-132,-25,0,1) (400,419,0,1) (485,-351,0,1) (-12,-248,0,1) (-18,267,0,1) (452,-441,0,1) (-390,380,0,1) (443,-494,0,1) (-136,120,0,1) (-377,-277,0,1) (464,-421,0,1) (155,467,0,1) (-45,351,0,1) (342,338,0,1) (-3,-122,0,1) (-319,471,0,1) (-247,-424,0,1) (431,-98,0,1) (63,-341,0,1) (383,-195,0,1) (-414,441,0,1) (-86,465,0,1) (360,-80,0,1) (-195,-45,0,1) (42,27,0,1) (-63,-19,0,1) (105,-433,0,1) (-76,-465,0,1) (418,-259,0,1) (372,-110,0,1) (119,-471,0,1) (-163,371,0,1) (-396,-257,0,1) (-252,166,0,1) (-99,-393,0,1) (470,-14,0,1) (-477,-141,0,1) (-73,382,0,1) (278,231,0,1) (-187,-204,0,1) (-267,249,0,1) (276,338,0,1) (316,-325,0,1) (372,209,0,1) (-84,220,0,1) (-426,-490,0,1) (248,-90,0,1) (380,351,0,1) (153,-396,0,1) (-8,-471,0,1) (-290,-63,0,1) (15,-268,0,1) (295,441,0,1) (-410,49,0,1) (147,-98,0,1) (344,379,0,1) (-374,95,0,1) (192,441,0,1) (270,40,0,1) (125,-339,0,1) (-265,199,0,1) (-330,482,0,1) (-416,-475,0,1) (308,236,0,1) (-372,-225,0,1) (265,-163,0,1) (211,-245,0,1) (69,-19,0,1) (-329,158,0,1) (-495,317,0,1) (-465,348,0,1) (171,-340,0,1) (-81,-161,0,1) (-423,-336,0,1) (378,201,0,1) (-176,-412,0,1) (-125,-7,0,1) (-455,-41,0,1) (17,352,0,1) (-330,145,0,1) (-398,434,0,1) (481,312,0,1) (-336,25,0,1) (-232,-166,0,1) (-342,-227,0,1) (-374,-308,0,1) (-404,297,0,1) (-148,14,0,1) (-389,-72,0,1) (177,488,0,1) (-396,-449,0,1) (-21,-32,0,1) (-405,437,0,1) (485,446,0,1) (-418,105,0,1) (-477,61,0,1) (334,-345,0,1) (-438,-423,0,1) (-11,-281,0,1) (-151,114,0,1) (-89,-55,0,1) (-114,262,0,1) (458,-4,0,1) (-335,111,0,1) (-41,-232,0,1) (86,9,0,1) (246,-470,0,1) (103,158,0,1) (24,240,0,1) (94,46,0,1) (231,-370,0,1) (-145,385,0,1) (-309,-68,0,1) (-151,-90,0,1) (280,463,0,1) (320,-300,0,1) (-176,57,0,1) (-366,320,0,1) (221,244,0,1) (-246,488,0,1) (-195,263,0,1) (210,-166,0,1) (-159,-157,0,1) (-177,365,0,1) (-442,416,0,1) (-114,288,0,1) (-478,241,0,1) (149,-288,0,1) (-352,497,0,1) (121,427,0,1) (435,-84,0,1) (-397,-265,0,1) (472,-264,0,1) (-470,168,0,1) (479,-217,0,1) (132,-241,0,1) (-479,-183,0,1) (93,-138,0,1) (159,415,0,1) (-298,217,0,1) (307,87,0,1) (-20,328,0,1) (-197,-396,0,1) (-485,-50,0,1) (-423,136,0,1) (-147,-473,0,1) (-45,-279,0,1) (499,190,0,1) (-250,142,0,1) (144,33,0,1) (-251,402,0,1) (53,65,0,1) (-30,414,0,1) (-300,-139,0,1) (-409,416,0,1) (-357,178,0,1) (-129,470,0,1) (480,-25,0,1) (484,-94,0,1) (51,95,0,1) (258,37,0,1) (122,-312,0,1) (258,96,0,1) (377,-287,0,1) (-4,15,0,1) (-38,-127,0,1) (-456,-498,0,1) (343,457,0,1) (-299,-321,0,1) (-476,-408,0,1) (-179,201,0,1) (-37,-234,0,1) (156,437,0,1) (-275,-463,0,1) (-37,320,0,1) (294,499,0,1) (-83,481,0,1) (232,333,0,1) (215,-300,0,1) (-196,-295,0,1) (161,177,0,1) (-252,163,0,1) (-5,-319,0,1) (363,173,0,1) (-296,455,0,1) (493,404,0,1) (-107,-266,0,1) (35,-195,0,1) (-42,72,0,1) (267,-247,0,1) (-159,241,0,1) (169,-202,0,1) (-51,156,0,1) (-394,-361,0,1) (356,-90,0,1) (-157,-8,0,1) (-438,91,0,1) (-370,56,0,1) (271,493,0,1) (-296,474,0,1) (423,-328,0,1) (353,-209,0,1) (-95,-137,0,1) (95,362,0,1) (434,-163,0,1) (-409,-249,0,1) (-447,259,0,1) (48,1,0,1) (-109,153,0,1) (139,-278,0,1) (-462,482,0,1) (213,-401,0,1) (48,343,0,1) (154,-206,0,1) (311,357,0,1) (-257,209,0,1) (-496,-429,0,1) (499,-92,0,1) (-67,69,0,1) (-254,-157,0,1) (405,-164,0,1) (93,457,0,1) (-430,-384,0,1) (-66,-40,0,1) (268,-452,0,1) (181,306,0,1) (-495,-130,0,1) (404,52,0,1) (-312,34,0,1) (345,498,0,1) (-134,-437,0,1) (182,-130,0,1) (-367,156,0,1) (277,66,0,1) (-300,408,0,1) (-420,-167,0,1) (-24,-488,0,1) (-97,91,0,1) (-55,362,0,1) (-166,-7,0,1) (19,-385,0,1) (-3,388,0,1) (-475,-449,0,1) (28,369,0,1) (-476,393,0,1) (432,205,0,1) (-262,-460,0,1) (-164,105,0,1) (35,-12,0,1) (114,-179,0,1) (463,125,0,1) (223,29,0,1) (-454,60,0,1) (363,38,0,1) (-446,477,0,1) (-490,441,0,1) (471,-466,0,1) (491,-26,0,1) (403,-157,0,1) (310,194,0,1) (80,349,0,1) (-495,70,0,1) (-70,39,0,1) (58,417,0,1) (-372,378,0,1) (356,253,0,1) (76,-140,0,1) (298,-389,0,1) (-302,-189,0,1) (-335,-349,0,1) (-180,-419,0,1) (-403,-146,0,1) (-452,71,0,1) (-268,-463,0,1) (413,-483,0,1) (231,-32,0,1) (365,235,0,1) (-486,-230,0,1) (-250,71,0,1) (-337,-123,0,1) (-76,-395,0,1) (499,-147,0,1) (402,-415,0,1) (51,-312,0,1) (-251,201,0,1) (8,-170,0,1) (297,361,0,1) (-123,-157,0,1) (-432,-87,0,1) (-269,-416,0,1) (-381,199,0,1) (448,354,0,1) (212,-306,0,1) (-421,-242,0,1) (-144,-45,0,1) (181,-151,0,1) (60,155,0,1) (201,-63,0,1) (239,-273,0,1) (125,488,0,1) (427,-392,0,1) (-207,200,0,1) (468,169,0,1) (-482,-489,0,1) (-443,-251,0,1) (-406,-324,0,1) (447,-483,0,1) (-495,134,0,1) (-290,-417,0,1) (391,65,0,1) (37,47,0,1) (413,-428,0,1) (-323,90,0,1) (9,415,0,1) (316,-391,0,1) (378,219,0,1) (-284,-354,0,1) (-106,-341,0,1) (314,-89,0,1) (-331,371,0,1) (159,-238,0,1) (-478,81,0,1) (-222,-474,0,1) (-310,-12,0,1) (-392,-444,0,1) (-472,144,0,1) (102,441,0,1) (216,278,0,1) (6,-300,0,1) (169,-203,0,1) (-192,22,0,1) (23,168,0,1) (-116,181,0,1) (-43,295,0,1) (349,-197,0,1) (-71,-414,0,1) (-176,-137,0,1) (-151,-325,0,1) (350,-44,0,1) (-269,378,0,1) (-424,332,0,1) (294,291,0,1) (86,-225,0,1) (490,-270,0,1) (71,-227,0,1) (251,62,0,1) (295,-106,0,1) (445,-49,0,1) (351,215,0,1) (-225,-371,0,1) (-380,-140,0,1) (-47,-395,0,1) (222,301,0,1) (-221,48,0,1) (-267,9,0,1) (-99,-192,0,1) (-183,-330,0,1) (-426,402,0,1) (-56,-461,0,1) (-393,-189,0,1) (357,51,0,1) (-419,-273,0,1) (-28,31,0,1) (-447,-338,0,1) (305,-319,0,1) (-219,-360,0,1) (133,-115,0,1) (361,-90,0,1) (164,-116,0,1) (142,-352,0,1) (284,449,0,1) (-36,453,0,1) (-159,-128,0,1) (-464,-53,0,1) (-138,-154,0,1) (-220,412,0,1) (-74,6,0,1) (-141,456,0,1) (58,21,0,1) (236,238,0,1) (301,375,0,1) (-153,-338,0,1) (211,256,0,1) (325,-429,0,1) (-127,472,0,1) (354,-203,0,1) (-88,283,0,1) (-206,252,0,1) (-370,-171,0,1) (-325,-9,0,1) (174,-46,0,1) (-121,-425,0,1) (459,237,0,1) (-494,-8,0,1) (-267,241,0,1) (-295,-490,0,1) (91,51,0,1) (-329,-223,0,1) (-218,495,0,1) (-153,154,0,1) (442,-323,0,1) (450,-171,0,1) (459,-281,0,1) (-443,-436,0,1) (47,-269,0,1) (55,-304,0,1) (184,433,0,1) (-230,118,0,1) (145,-225,0,1) (-415,378,0,1) (-211,387,0,1) (81,340,0,1) (-467,358,0,1) (-403,-497,0,1) (-320,251,0,1) (444,-144,0,1) (176,-251,0,1) (-210,395,0,1) (-195,-146,0,1) (-83,35,0,1) (408,113,0,1) (-306,316,0,1) (382,311,0,1) (-64,-367,0,1) (395,-211,0,1) (-377,-341,0,1) (-349,204,0,1) (498,-317,0,1) (37,-429,0,1) (-315,216,0,1) (321,-395,0,1) (-452,-28,0,1) (-147,-163,0,1) (-158,157,0,1) (190,259,0,1) (-333,73,0,1) (-153,-140,0,1) (-136,-296,0,1) (-354,300,0,1) (-164,-484,0,1) (-436,-41,0,1) (-326,-285,0,1) (-362,-352,0,1) (-103,174,0,1) (-282,82,0,1) (-135,-486,0,1) (186,-88,0,1) (-15,-486,0,1) (249,327,0,1) (170,-86,0,1) (61,336,0,1) (487,407,0,1) (-329,-174,0,1) (-414,-184,0,1) (-399,-78,0,1) (-169,-335,0,1) (380,4,0,1) (-121,151,0,1) (275,166,0,1) (368,-168,0,1) (-494,381,0,1) (-82,-158,0,1) (-494,-358,0,1) (-356,175,0,1) (55,204,0,1) (-14,17,0,1) (86,156,0,1) (343,171,0,1) (471,443,0,1) (-432,-223,0,1) (-417,447,0,1) (281,-39,0,1) (439,-93,0,1) (-288,80,0,1) (-249,43,0,1) (86,-393,0,1) (36,-52,0,1) (41,-380,0,1) (91,-308,0,1) (174,-230,0,1) (177,-333,0,1) (355,-191,0,1) (2,-245,0,1) (427,69,0,1) (32,-8,0,1) (-212,-54,0,1) (-94,194,0,1) (157,486,0,1) (444,-324,0,1) (47,-473,0,1) (211,25,0,1) (-26,-273,0,1) (144,-459,0,1) (-82,-207,0,1) (-190,-429,0,1) (-41,-359,0,1) (-121,-57,0,1) (142,133,0,1) (-154,-314,0,1) (-360,-169,0,1) (177,-73,0,1) (276,-441,0,1) (-403,-91,0,1) (-480,-484,0,1) (84,66,0,1) (-458,-230,0,1) (-434,16,0,1) (-4,209,0,1) (56,414,0,1) (365,484,0,1) (-64,-162,0,1) (378,122,0,1) (470,-301,0,1) (308,-414,0,1) (29,-40,0,1) (12,-219,0,1) (18,108,0,1) (189,37,0,1) (124,-252,0,1) (-422,165,0,1) (17,-357,0,1) (-344,351,0,1) (211,401,0,1) (328,52,0,1) (360,-261,0,1) (32,-327,0,1) (-408,-370,0,1) (-381,-209,0,1) (437,-296,0,1) (319,-128,0,1) (215,-425,0,1) (390,-201,0,1) (263,-98,0,1) (422,-20,0,1) (62,2,0,1) (122,218,0,1) (-10,-51,0,1) (-96,-134,0,1) (-248,455,0,1) (-298,-10,0,1) (-37,-126,0,1) (81,92,0,1) (-8,371,0,1) (4,195,0,1) (166,375,0,1) (-114,240,0,1) (240,184,0,1) (-21,-382,0,1) (81,-36,0,1) (97,-382,0,1) (466,-306,0,1) (335,-69,0,1) (142,-285,0,1) (296,393,0,1) (-355,497,0,1) (-142,107,0,1) (-153,439,0,1) (-326,338,0,1) (285,177,0,1) (9,-74,0,1) (28,394,0,1) (-358,-257,0,1) (53,120,0,1) (-140,-391,0,1) (-441,456,0,1) (-274,-374,0,1) (-463,-70,0,1) (267,-249,0,1) (-298,136,0,1) (-105,-326,0,1) (493,20,0,1) (407,-349,0,1) (-166,168,0,1) (328,342,0,1) (-431,-169,0,1) (211,-290,0,1) (73,-261,0,1) (329,433,0,1) (-153,388,0,1) (364,72,0,1) (387,489,0,1) (108,-207,0,1) (232,358,0,1) (-6,-157,0,1) (-271,167,0,1) (-189,-294,0,1) (-337,-306,0,1) (-144,-4,0,1) (361,-341,0,1) (-187,429,0,1) (-11,-385,0,1) (-462,-263,0,1) (443,470,0,1) (83,306,0,1) (309,-370,0,1) (169,274,0,1) (238,461,0,1) (-19,71,0,1) (-70,323,0,1) (299,-428,0,1) (-391,-266,0,1) (-198,-164,0,1) (229,-362,0,1) (-6,-483,0,1) (-457,483,0,1) (-485,-343,0,1) (-249,-425,0,1) (465,333,0,1) (381,249,0,1) (463,25,0,1) (-2,176,0,1) (-39,478,0,1) (-278,390,0,1) (276,461,0,1) (385,-329,0,1) (-338,-189,0,1) (399,-200,0,1) (305,416,0,1) (-158,263,0,1) (430,-2,0,1) (258,-343,0,1) (72,198,0,1) (489,-72,0,1) (-78,427,0,1) (452,420,0,1) (78,-112,0,1) (373,300,0,1) (-247,125,0,1) (296,-310,0,1) (-15,271,0,1) (-140,146,0,1) (-442,-266,0,1) (445,362,0,1) (-375,-238,0,1) (100,-469,0,1) (259,-167,0,1) (-313,-193,0,1) (-494,-349,0,1) (234,-73,0,1) (-446,162,0,1) (-178,131,0,1) (-475,-329,0,1) (-94,-222,0,1) (295,-323,0,1) (-33,-245,0,1) (448,326,0,1) (400,-465,0,1) (321,342,0,1) (-340,-442,0,1) (-83,-310,0,1) (317,249,0,1) (-124,-401,0,1) (254,26,0,1) (332,-344,0,1) (79,-31,0,1) (-22,-314,0,1) (-6,148,0,1) (91,271,0,1) (-82,268,0,1) (-287,172,0,1) (191,-486,0,1) (47,171,0,1) (-452,-157,0,1) (-12,-293,0,1) (-99,404,0,1) (-104,-307,0,1) (128,271,0,1) (-209,-143,0,1) (-227,-402,0,1) (12,351,0,1) (67,489,0,1) (-488,-464,0,1) (112,103,0,1) (306,-495,0,1) (-154,176,0,1) (-488,-493,0,1) (-301,182,0,1) (-446,41,0,1) (-355,-239,0,1) (441,-476,0,1) (156,-391,0,1) (151,-97,0,1) (-101,175,0,1) (-3,-6,0,1) (1,-461,0,1) (-41,13,0,1) (-426,-454,0,1) (-409,379,0,1) (-449,-64,0,1) (372,226,0,1) (-53,378,0,1) (424,-396,0,1) (431,-59,0,1) (-252,-333,0,1) (-143,-229,0,1) (323,-34,0,1) (421,-299,0,1) (364,403,0,1) (375,-164,0,1) (-128,-149,0,1) (-126,330,0,1) (363,-53,0,1) (376,453,0,1) (-199,426,0,1) (-136,-352,0,1) (127,310,0,1) (-499,27,0,1) (413,432,0,1) (467,-364,0,1) (-426,-201,0,1) (-94,396,0,1) (264,-198,0,1) (-428,104,0,1) (-320,446,0,1) (439,52,0,1) (-227,-211,0,1) (-143,-389,0,1) (235,-292,0,1) (-460,-488,0,1) (-391,-97,0,1) (-341,236,0,1) (-311,-340,0,1) (-262,-423,0,1) (-433,-320,0,1) (-287,-360,0,1) (-22,118,0,1) (-488,-282,0,1) (420,-417,0,1) (321,-425,0,1) (-495,235,0,1) (126,-223,0,1) (483,-113,0,1) (234,-334,0,1) (-74,245,0,1) (-225,329,0,1) (403,-462,0,1) (-277,-431,0,1) (-396,-98,0,1) (-219,-256,0,1) (379,399,0,1) (-245,-428,0,1) (294,-163,0,1) (392,368,0,1) (-159,103,0,1) (-30,117,0,1) (101,-72,0,1) (-190,93,0,1) (-95,-470,0,1) (367,-291,0,1) (433,352,0,1) (-299,470,0,1) (-450,-230,0,1) (-450,-49,0,1) (50,-207,0,1) (-194,-76,0,1) (47,-123,0,1) (-307,383,0,1) (-255,-463,0,1) (-300,347,0,1) (6,316,0,1) (-77,433,0,1) (295,233,0,1) (1,-324,0,1) (262,-156,0,1) (-116,170,0,1) (-329,85,0,1) (116,-279,0,1) (354,165,0,1) (171,-121,0,1) (457,476,0,1) (303,-21,0,1) (-171,495,0,1) (-163,73,0,1) (-493,36,0,1) (-105,12,0,1) (-172,317,0,1) (-80,-402,0,1) (25,421,0,1) (-227,-237,0,1) (-260,157,0,1) (432,-90,0,1) (-283,23,0,1) (130,-454,0,1) (-337,-223,0,1) (-76,-405,0,1) (-272,-298,0,1) (73,56,0,1) (-327,410,0,1) (-396,-321,0,1) (-79,-2,0,1) (191,248,0,1) (-209,-414,0,1) (346,315,0,1) (-406,-447,0,1) (-279,250,0,1) (485,131,0,1) (466,-17,0,1) (-264,146,0,1) (12,-89,0,1) (240,240,0,1) (112,-211,0,1) (-229,284,0,1) (-326,-125,0,1) (463,94,0,1) (372,129,0,1) (-182,-362,0,1) (214,-361,0,1) (453,196,0,1) (-268,416,0,1) (482,465,0,1) (22,423,0,1) (-76,258,0,1) (410,-455,0,1) (-255,-204,0,1) (284,484,0,1) (407,-452,0,1) (-269,167,0,1) (-279,105,0,1) (105,315,0,1) (-48,-291,0,1) (-392,90,0,1) (422,-254,0,1) (18,93,0,1) (-23,-2,0,1) (-15,-66,0,1) (-61,-167,0,1) (362,239,0,1) (-282,406,0,1) (484,13,0,1) (165,443,0,1) (-105,213,0,1) (-351,-463,0,1) (433,253,0,1) (141,223,0,1) (-319,349,0,1) (330,270,0,1) (247,-449,0,1) (-237,-185,0,1) (28,260,0,1) (299,461,0,1) (-326,281,0,1) (-231,-489,0,1) (-5,-14,0,1) (416,-46,0,1) (498,57,0,1) (-127,-131,0,1) (-255,21,0,1) (-95,-347,0,1) (-250,-478,0,1) (376,-70,0,1) (370,181,0,1) (-325,92,0,1) (232,-63,0,1) (407,-265,0,1) (-328,181,0,1) (-329,-154,0,1) (-63,-60,0,1) (-144,432,0,1) (425,-252,0,1) (-139,399,0,1) (304,233,0,1) (-257,-476,0,1) (-270,147,0,1) (-324,-21,0,1) (168,-473,0,1) (408,14,0,1) (208,-442,0,1) (-419,-85,0,1) (-6,487,0,1) (149,165,0,1) (144,319,0,1) (-444,-266,0,1) (-158,487,0,1) (-365,89,0,1) (-176,-491,0,1) (-132,-468,0,1) (-249,-109,0,1) (-239,397,0,1) (66,239,0,1) (41,93,0,1) (122,-470,0,1) (-224,179,0,1) (-390,190,0,1) (-352,-427,0,1) (-186,313,0,1) (216,-392,0,1) (298,271,0,1) (-158,-385,0,1) (234,-24,0,1) (203,-467,0,1) (-16,-454,0,1) (-436,234,0,1) (-64,-175,0,1) (106,-461,0,1) (-378,70,0,1) (161,-349,0,1) (345,-185,0,1) (-239,10,0,1) (-37,-167,0,1) (323,-249,0,1) (-476,430,0,1) (-476,294,0,1) (-253,-361,0,1) (3,222,0,1) (341,35,0,1) (-319,387,0,1) (99,414,0,1) (-202,423,0,1) (-4,-225,0,1) (461,117,0,1) (344,97,0,1) (268,164,0,1) (412,-496,0,1) (-351,-150,0,1) (-164,471,0,1) (100,-141,0,1) (377,123,0,1) (-372,-401,0,1) (261,131,0,1) (321,78,0,1) (-359,-60,0,1) (239,391,0,1) (237,137,0,1) (-138,74,0,1) (478,331,0,1) (-354,221,0,1) (-29,-467,0,1) (224,119,0,1) (-118,-465,0,1) (66,481,0,1) (-107,-82,0,1) (80,21,0,1) (16,-184,0,1) (-373,-188,0,1) (393,-233,0,1) (-211,-192,0,1) (-345,-479,0,1) (118,16,0,1) (-492,-333,0,1) (-31,338,0,1) (-187,-334,0,1) (-216,-155,0,1) (389,403,0,1) (227,424,0,1) (-56,183,0,1) (-208,361,0,1) (-262,312,0,1) (-148,54,0,1) (438,164,0,1) (-78,-319,0,1) (452,230,0,1) (-338,-418,0,1) (250,279,0,1) (97,257,0,1) (446,-459,0,1) (70,-266,0,1) (-294,354,0,1) (78,-429,0,1) (232,-220,0,1) (494,-349,0,1) (463,-239,0,1) (-324,-451,0,1) (-162,229,0,1) (486,-373,0,1) (-358,428,0,1) (356,-197,0,1) (81,-442,0,1) (81,-187,0,1) (122,382,0,1) (-288,327,0,1) (211,289,0,1) (397,-82,0,1) (-455,366,0,1) (68,-397,0,1) (54,-342,0,1) (-349,392,0,1) (387,-388,0,1) (368,-246,0,1) (272,344,0,1) (56,256,0,1) (-100,113,0,1) (-187,212,0,1) (91,434,0,1) (69,302,0,1) (236,-244,0,1) (67,109,0,1) (173,111,0,1) (-50,-283,0,1) (93,52,0,1) (270,250,0,1) (202,137,0,1) (112,314,0,1) (-19,100,0,1) (-457,-272,0,1) (-81,98,0,1) (483,318,0,1) (-313,-229,0,1) (5,277,0,1) (-320,-450,0,1) (55,416,0,1) (-195,-403,0,1) (0,477,0,1) (207,449,0,1) (-331,-225,0,1) (-23,439,0,1) (-346,51,0,1) (112,467,0,1) (-493,-313,0,1) (-266,106,0,1) (83,-307,0,1) (-101,269,0,1) (-37,404,0,1) (21,143,0,1) (453,-449,0,1) (34,-267,0,1) (-353,-491,0,1) (-315,353,0,1) (457,-146,0,1) (-397,-91,0,1) (-232,-397,0,1) (63,318,0,1) (214,5,0,1) (325,400,0,1) (-10,-466,0,1) (-19,-452,0,1) (-274,380,0,1) (316,189,0,1) (259,-188,0,1) (-193,187,0,1) (-137,340,0,1) (419,9,0,1) (348,-421,0,1) (-162,280,0,1) (-68,-60,0,1) (-335,199,0,1) (42,227,0,1) (-7,-269,0,1) (-293,-207,0,1) (-393,196,0,1) (-174,87,0,1) (243,52,0,1) (-58,34,0,1) (-284,-324,0,1) (346,22,0,1) (362,-316,0,1) (-163,256,0,1) (192,-340,0,1) (335,-495,0,1) (439,-258,0,1) (-55,-421,0,1) (441,486,0,1) (305,-91,0,1) (-307,201,0,1) (-201,183,0,1) (-498,385,0,1) (-98,53,0,1) (-197,435,0,1) (268,-22,0,1) (256,-235,0,1) (-184,439,0,1) (101,-453,0,1) (107,260,0,1) (381,111,0,1) (175,-401,0,1) (-469,253,0,1) (-485,34,0,1) (-77,-315,0,1) (21,-401,0,1) (-17,-321,0,1) (-400,-157,0,1) (80,153,0,1) (145,-9,0,1) (-104,-401,0,1) (-278,161,0,1) (-86,-363,0,1) (-263,-40,0,1) (243,497,0,1) (-183,-171,0,1) (147,-85,0,1) (-140,-125,0,1) (-71,-148,0,1) (408,351,0,1) (36,-96,0,1) (449,83,0,1) (-476,-164,0,1) (-362,176,0,1) (481,128,0,1) (-452,-445,0,1) (350,208,0,1) (-32,486,0,1) (444,427,0,1) (204,416,0,1) (-281,-492,0,1) (38,133,0,1) (-133,413,0,1) (-463,218,0,1) (296,387,0,1) (-271,-324,0,1) (311,-278,0,1) (258,335,0,1) (58,395,0,1) (-14,14,0,1) (-1,33,0,1) (68,-176,0,1) (-284,-489,0,1) (-215,-364,0,1) (437,488,0,1) (-473,-368,0,1) (495,65,0,1) (264,-162,0,1) (-47,301,0,1) (-469,-276,0,1) (163,-240,0,1) (-101,-50,0,1) (-19,-368,0,1) (-240,-486,0,1) (-497,245,0,1) (27,1,0,1) (-246,-430,0,1) (324,-31,0,1) (-420,-416,0,1) (104,-453,0,1) (131,-376,0,1) (-483,-329,0,1) (387,-146,0,1) (123,163,0,1) (-115,346,0,1) (-198,144,0,1) (-279,251,0,1) (-400,-148,0,1) (-386,-146,0,1) (230,140,0,1) (354,483,0,1) (210,153,0,1) (-72,289,0,1) (236,-493,0,1) (281,282,0,1) (137,404,0,1) (299,307,0,1) (267,-372,0,1) (-95,-95,0,1) (12,-273,0,1) (206,-369,0,1) (-53,-68,0,1) (-269,298,0,1) (-83,-156,0,1) (-372,-377,0,1) (483,481,0,1) (-419,168,0,1) (110,8,0,1) (-67,-179,0,1) (15,-311,0,1) (-421,-373,0,1) (-431,377,0,1) (434,335,0,1) (-186,-285,0,1) (-8,40,0,1) (421,122,0,1) (486,-172,0,1) (352,260,0,1) (245,-329,0,1) (387,367,0,1) (-370,343,0,1) (447,297,0,1) (-72,-69,0,1) (-295,249,0,1) (445,-106,0,1) (327,-453,0,1) (-38,179,0,1) (480,-228,0,1) (158,-230,0,1) (-14,-375,0,1) (309,-118,0,1) (247,271,0,1) (210,74,0,1) (6,-70,0,1) (245,-132,0,1) (-228,374,0,1) (-314,-306,0,1) (146,114,0,1) (124,351,0,1) (-162,44,0,1) (-280,-360,0,1) (91,181,0,1) (318,46,0,1) (452,-49,0,1) (315,-87,0,1) (76,100,0,1) (295,-202,0,1) (-154,-20,0,1) (371,351,0,1) (409,91,0,1) (-306,-344,0,1) (-60,-121,0,1) (-151,-438,0,1) (492,473,0,1) (412,-195,0,1) (-8,-393,0,1) (-56,-442,0,1) (287,-263,0,1) (104,214,0,1) (188,-106,0,1) (-398,-261,0,1) (493,396,0,1) (36,-186,0,1) (-149,-118,0,1) (-360,-265,0,1) (473,-167,0,1) (-110,-112,0,1) (212,239,0,1) (-51,179,0,1) (187,-164,0,1) (484,-346,0,1) (-58,-97,0,1) (-288,-296,0,1) (140,315,0,1) (417,-197,0,1) (-316,41,0,1) (-347,390,0,1) (-448,-34,0,1) (-283,-67,0,1) (106,-49,0,1) (-119,438,0,1) (341,269,0,1) (125,55,0,1) (-307,-220,0,1) (-283,29,0,1) (-261,-130,0,1) (470,141,0,1) core++-1.7/progs/chullGraham/outputs/0040755000175000001440000000000010147210064017073 5ustar joachimuserscore++-1.7/progs/chullGraham/outputs/README0100644000175000001440000000010207444161403017751 0ustar joachimusersREADME file This directory contains outputs from sample programs core++-1.7/progs/compare/0040755000175000001440000000000010147210064014547 5ustar joachimuserscore++-1.7/progs/compare/Makefile0100644000175000001440000000205007670164400016212 0ustar joachimusers# Makefile for compare # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.11 2003/06/06 19:18:24 exact Exp $ VAR=Bfms VAR=Bfmss VAR= include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= compare all: $(TARGETS) test: $(TARGETS) ./compare 10 1 testslow: $(TARGETS) ./compare 1000 2 compare: compare.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/compare/README0100644000175000001440000001237607437361201015445 0ustar joachimusersfile: README for compare Core Library, $Id: README,v 1.1.1.1 2002/02/28 07:55:45 exact Exp $ August 1999 ===================================================================== 1) NOTES on Progressive Evaluation Mode: Progressive evaluation of an expression E means we evaluate E to p bits of precision for p=2, p=4, p=8, ..., or p=2^i in the i-th iteration. We stop when E is shown to be non-zero or when p exceeds a computed root bound. In the latter case, we declare E zero. This mode is ONLY used when an operator is a addition or subtraction operator. When comparing two identical expressions, the above algorithm will surely reach the computed root bound. This can be slow, and good root bounds are absolutely necessary. We have now implemented (July 1999) the improved root bound from Mehlhorn, et al. ("MPI Bound"). This is the best known bound for radical expressions. Our original root bound is applicable to any algebraic number; it is still available (in anticipation of a future implmentation of general algebraic numbers). The choice of which root bound to use can be set with the appropriate option when compiling the library (-DMPI versus -DDEGREE_LENGTH). See the Makefiles under ${CORE}/src for details. When we suspect that an expression being compared is highly likely to be zero, then we might want to turn off the progressive evaluation mode, and evaluate to the maximum root bound immediately. Remember that, in general, it is dangerous to do this, as the best root bounds are still not very good. That is an important research problem in this area. In view of the above, our library provides a dynamic means to turn on or off the pregressive evaluation mechanism. Here is how to do it: bool flag = false; // to turn off Inc. Eval. bool oldflag; // previous flag value oldflag = setProgressiveEvalFlag(flag); However, this feature is not an obvious win in our current system even in the equality case, as the timings below show. This is because when the user requests a certain precision, our system may actually compute to considerably higher precision. So taking the root bound precision as our target may considerably overshoot the necessary precision. On the other hand, progressive evaluation, despite its obvious overhead, seems to win by reducing the amount of overshoot. What we have exploited here (in CORE 1.2, not in CORE 1.1) is the ability to test the ACTUAL number of bits in the current approximate that is significant. 2) Four timings to illustrate the effects of expressions with/without division, and the use/non-use of progressive evaluation 2.1) For division-free expression with incremental evaluation: > courses2[289]% time compare > x : 1234567890. > y : 9876543210. > e = sqrt(x) + sqrt(y) > f = sqrt(x + y + 2 * sqrt(x) * sqrt(y)) > -- Be patient: some tests (esp. equality) may be slow... > e == (f+1) ? no (CORRECT) > e == f ? yes (CORRECT) > -- NOTE: A slower test is to call "compare" with any single > argument, e.g., compare 1. To input your own rational values of > x and y, call "compare" with any two arguments, e.g., compare 1 1 > 1.06u 0.03s 0:01.11 98.1% 2.2) For expression with simple division with incremental evaluation: > > courses2[290]% time compare 1 > x (1/3) : 0.333333333 > y (5/7) : 0.714285714 > e = sqrt(x) + sqrt(y) > f = sqrt(x + y + 2 * sqrt(x) * sqrt(y)) > -- Be patient: some tests (esp. equality) may be slow... > e == (f+1) ? no (CORRECT) > e == f ? yes (CORRECT) > 2.27u 0.03s 0:02.32 99.1% 2.3) For division-free expression with non-incremental evaluation for equality test: > courses2[293]% time compare > x : 1234567890. > y : 9876543210. > e = sqrt(x) + sqrt(y) > f = sqrt(x + y + 2 * sqrt(x) * sqrt(y)) > -- Be patient: some tests (esp. equality) may be slow... > e == (f+1) ? no (CORRECT) > Next, turn off Progressive Evaluation feature to speed up > an equality test > e == f ? yes (CORRECT) > -- NOTE: A slower test is to call "compare" with any single > argument, e.g., compare 1. To input your own rational values of > x and y, call "compare" with any two arguments, e.g., compare 1 1 > 17.31u 0.03s 0:17.38 99.7% 2.4) For expression with simple division with non-progressive evaluation for equality test: > courses2[294]% time compare 1 > x (1/3) : 0.333333333 > y (5/7) : 0.714285714 > e = sqrt(x) + sqrt(y) > f = sqrt(x + y + 2 * sqrt(x) * sqrt(y)) > -- Be patient: some tests (esp. equality) may be slow... > e == (f+1) ? no (CORRECT) > Next, turn off Progressive Evaluation feature to speed up > an equality test > e == f ? yes (CORRECT) > 20.77u 0.04s 0:20.87 99.7% 3) For further notes on this topic, see also the subdirectory ${CORE}/progs/sumOfSqrts. ================================================================== POSTSCRIPT (July, 2000): Some of the issues with speed has been resolved with CORE 1.3, thanks to two factors: (1) a greatly improved root bounds for expressions with radicals, and (2) the use of a fast big number package (LiDIA/CLN). core++-1.7/progs/compare/compare.cpp0100644000175000001440000000404610130300446016676 0ustar joachimusers/************************************************************ file: compare.cpp purpose: demonstrate the (non)progressive evaluation features and their effects on speed of comparing expressions Usage: compare [B] [N] where B is the number of bits in random numbers to test and N is number of times to run the test. Both arguments are optional, and defaults to B=10, N=1 author: Chen Li and Chee Yap Since CORE Library version 1.4 $Id: compare.cpp,v 1.9 2004/10/04 16:58:14 exact Exp $ ************************************************************/ #ifndef CORE_LEVEL #define CORE_LEVEL 3 #endif #include #include "CORE.h" int main(int argc, char* argv[]) { double x; double x1, x2; double y; double y1, y2; int L = 10, N = 1; if (argc > 2) { L = atoi(argv[1]); N = atoi(argv[2]); } else if (argc > 1) { L = atoi(argv[1]); } else { std::cerr << "Usage: compare " << std::endl; exit(1); } //setIncrementalEvalFlag(false); unsigned int seed1 = (unsigned int) (time(NULL) % UINT_MAX); srand(seed1); BigInt BASE = 1; BASE <<= (L - 1); machine_long t1=0, t2=0, total=0; BigRat r1, r2; for (int i = 0; i #include #include "CORE/CORE.h" using namespace std; // ================================================== // Curve Class // ================================================== typedef BigInt NT; // typedef Expr NT; typedef Polynomial PolyNT; typedef std::vector VecExpr; typedef std::vector VecBigInt; // typedef std::vector VecNT; // typedef std::vector > VecPoly; template class Monomial{ //Helper class to store the coefficients for given x-deg and y-deg //Used by string input routines public: NT coeff; int xdeg; int ydeg; Monomial(){ } Monomial(NT& cf, int& dx, int& dy){ coeff = cf; xdeg = dx; ydeg = dy; } void dump(){ cout << coeff << "X^" << xdeg << " Y^" << ydeg; } }; //Class of Bivariate polynomials // Viewed as a polynomial in Y with // coefficients which are polynomials in X template class BiPoly{ public: int ydeg; //Y-degree of the polynomial // Polynomial *coeffX; std::vector > coeffX; //array of (1+ydeg) polynomials in X // So the equation of the polynomial is F(X,Y) // = (Y^d * coeffX[d]) + (Y^{d-1} * coeffX[d-1]) +...+ (coeffX[0]). //////////////////////////////////////////////////////// //Constructors //////////////////////////////////////////////////////// //BiPoly() BiPoly(){ // zero polynomial ydeg = -1; coeffX.clear(); } //BiPoly(n) BiPoly(int n){ // creates a BiPoly with nominal y-degree equal to n. // // To support this constructor, you need functions // that are equivalent to "setCoeff(i, PolyNT q)" in the Poly Class // You also want "getCoeff(i)" functions. // In tCurve, we illustrate some of this usage // // E.g. BiPoly p(10); // PolyNT q(3, {1,2,3,4}); // p.setCoeff(10, q); // p.setCoeff(0, PolyNT()); // ydeg = n; if (n<0) return; // coeffX not needed for(int i=0; i<= ydeg; i++){ Polynomial* temp = new Polynomial(); coeffX.push_back(temp); } } //BiPoly(vp) BiPoly(std::vector > vp){ // From vector of Polynomials ydeg = vp.size() - 1; if(ydeg >=0){ coeffX = vp; } } //BiPoly(p, flag): // if true, it converts polynomial p(X) into P(Y) // if false, it creates the polynomial Y-p(X) BiPoly(Polynomial p, bool flag=false){ if (flag){ ydeg = p.getTrueDegree(); if(ydeg >=0){ for(int i=0; i<=ydeg; i++){ coeffX.push_back(Polynomial(0, p.getCoeffi(i) )); }//for }//if } else { ydeg = 1; coeffX.push_back(p); coeffX.push_back(Polynomial::polyUnity()); }//else }//BiPoly(p) //BiPoly(deg, d[], C[]): // Takes in a list of list of coefficients. // Each cofficient list represents a polynomial in X // // deg - ydeg of the bipoly // d[] - array containing the degrees of each coefficient (i.e., X poly) // C[] - list of coefficients, we use array d to select the // coefficients BiPoly(int deg, int *d, NT *C){ ydeg = deg; Polynomial temp; int max=0; for(int i=0; i <=deg; i++) max = core_max(d[i],max); NT *c = new NT[max]; for(int i=0; i<= deg; i++){ for(int j=0; j <=d[i]; j++) c[j] = C[i+j]; temp = Polynomial(d[i],c); coeffX.push_back(temp); } }//BiPoly(deg,d[],C[]) //BiPoly(String s) //Takes in a string of the form "3 x^2 + 7 xy^2 - 4 x + 13" //and produces a BiPoly from it. //As for now assumes no parentheses and * // ToDo: // GENERALIZE to allow BiPoly(String s, char myX, char myY) BiPoly(string s){ BiPoly(s, 'x', 'y'); } BiPoly(string s, char myX, char myY){ unsigned int length = s.length(); if(length <= 0)//Zero Polynomial BiPoly(); const char *cstr = s.c_str(); //First we find the ydeg ydeg = 0; unsigned int loc = s.find(myY,0); do{ if(loc < length && cstr[loc+1] == '^') ydeg = core_max(ydeg, find_deg(cstr, loc+2, myX, length)); else ydeg = core_max(ydeg,1); loc = s.find(myY,loc+1); }while(loc != string::npos && loc+1 < length); //Now we find the xdeg corresponding to each y^i //xdeg[i] represents the degree of the coeff, in R[x], of y^i int *xdeg = new int[ydeg+1]; for(int i=0; i<=ydeg; i++) xdeg[i] = -1; list > lst;//This is the list containing the corresponding //entries for the monomials appearing in string s unsigned int start, end; NT cf; int degx, degy; string monomial; start = 0;end=0; while(end !=length){//This loop calculates xdeg[i] end = core_min(s.find('+',start+1), s.find('-',start+1)); if(end == string::npos) end = length; monomial = s.substr(start, end-start); parse_mon(monomial, cf, degx, degy, myX, myY);//Returns the coeff & degree //of myX and myY in monomial //Enter the coeffs' x-deg, y-deg into the list of monomials lst.push_back(Monomial(cf, degx, degy)); //Set the xdeg[i] xdeg[degy] = core_max(xdeg[degy], degx); //cout << "xdeg[ " << degy << "] ="<< degx << endl; start = end; } NT **coeff = new NT*[ydeg+1]; for(int i=0; i <= ydeg; i++) coeff[i] = new NT[xdeg[i]+1]; //Have to initialize the matrix to zero for(int i=0; i <=ydeg; i++) for(int j=0; j<=xdeg[i]; j++) coeff[i][j]=0; //This loop initialises the coeffecients Monomial m; while(lst.size() > 0){ m = lst.front(); coeff[m.ydeg][m.xdeg] += m.coeff; lst.pop_front(); } for(int i=0; i <= ydeg; i++) coeffX.push_back(Polynomial(xdeg[i], coeff[i])); }//BiPoly(string) //Helper functions for the above constructor //Let S = {x,y} //finds the degree of S\{c} in s starting at the location "loc" till the //starting of the next monomial int find_deg(const char* s, int loc, char c, int len){ //cout << "loc " << loc << endl; char *temp = new char[len]; for(int i=loc; s[i]!=c && s[i]!='+' && s[i]!='-' && i <= len; i++) temp[i-loc] = s[i]; //cout << "Deg = " << atoi(temp) << endl; return atoi(temp); } //Given a monomial returns the coeff, degree in x and degree in y void parse_mon(string m, NT& coeff, int &dx, int &dy, char myX, char myY){ const char *mstr = m.c_str(); unsigned int len = m.length(); char *temp = new char[len+1];//Should initialize, can cause problem bool mark = false; dx =0; dy =0; unsigned int i,j; for(i=0, j=0; i 1) coeff = atof(temp); else if(j == 0 && (dx > 0 || dy > 0)) //For the case "x" coeff = 1; else{ if(temp[0] == '-') coeff = -1; else if(temp[0] == '+') coeff = 1; else coeff = atof(temp);//For the case "3 xy" } } //Trial version for parentheses //As for now assumes no *. //This assumption rules out products of constants, as in 2*3 etc. // b=false means that s does not contain a parentheses. //b=true is for the case when there is either one '=' sign //or parentheses or both. BiPoly(string s, const bool b, char myX, char myY){ unsigned int length = s.length(); if(length <= 0)//Zero Polynomial BiPoly(); if((s.find('(', 0) == string::npos) || b == false) BiPoly(s, myX, myY); //To handle the case when there is one '=' sign //Suppose s is of the form s1 = s2. Then we assign s to //s1 + (-1)(s2) and reset length unsigned int loc; if((loc=s.find('=',0)) != string::npos){ s.replace(loc,1,1,'+'); string s3 = "(-1)("; s.insert(loc+1, s3); length = s.length(); s.insert(length, 1, ')'); cout << " String after replacing '=' " << s << endl; } length = s.length(); const char *cstr = s.c_str(); BiPoly *temp = new BiPoly();//Accumulate the polynomial in this unsigned int start, end; NT cf; string monomial; start = 0;end=0; //cout << "Length of the input string " << length << endl; while(end !=length && (start+1) != length ){//Main Loop which constructs //the polynomial end = core_min(s.find('+',start+1), s.find('-',start+1), s.find('(', start+1)); if(end == string::npos){ monomial = s.substr(start, end-start); }else if(cstr[end] != '(' && cstr[start] != '(')//to avoid the case monomial = s.substr(start, end-start);//when s starts with '(' else{ unsigned int e = get_mon(s, start);//e represents the end of a monomial = s.substr(start, e - start);//parentheses monomial end = e; } //cout << " Monomial is " << monomial << "Starts at " << start << " ends at " << end << endl; (*temp) += remove_paren(monomial, myX, myY); start = end; } (*this) = (*temp); }//BiPoly(string) //get_mon(s, start) // returns a monomial in the string s beginning a position start. // Monomials can have parentheses. We asssume that all the //non-parentheses terms lead the parentheses ones and do not contain //any +/-, i.e, of the form x^m or y^n. Also there are no '*' separating //such terms. As of now we only assume one level of nesting of parentheses. unsigned int get_mon(string s, unsigned int start){ // unsigned int len = s.length(); const char* cstr = s.c_str(); int count = 0; unsigned int j=s.find('(', start);//start char can be '(' or '+/-' // cout << "start of paren mon = " << start << " " << cstr[start] << endl; do{ if(cstr[j] == '('){ count++; } if(cstr[j] == ')'){ count--; } j++; }while(count != 0 );//j is one more than the matching ')' // cout << "end of paren mon = " << j << endl; unsigned int st = core_min(s.find('(', j),s.find('+',j), s.find('-',j)); if(st != string::npos){ if(cstr[st] == '(') j = core_max(j, get_mon(s, st)); } // cout << " Return value of end of mon " << j << endl; return j; } //Takes as input a monomial which may or may not contain '(...)'. //There are only two possible types depending upon whether the //monomial has a sign associated with it or not. //We assume only one level of nesting of parentheses. //Also, the input monomial is not just a constant. //Any non-parentheses term can occur in between such a monomial //but has the restriction mentioned in get_mon above. //Returns a bi-poly equivalent to the corresponding monomial. BiPoly& remove_paren(string mon, char myX, char myY){ // start and end denote the starting and end of a sub-string // of mon that represents a "valid" polynomial. This particular //sub-string may or may not contain parentheses. const char *m_str = mon.c_str(); unsigned int loc=0; //Get rid of the white spaces at the beginning of the monomial for(loc=0; loc < mon.length() && m_str[loc] == ' '; loc++){}; unsigned int start = mon.find('(', loc); unsigned int end; BiPoly *one = new BiPoly("1", myX, myY); if(start == string::npos && mon.find(myX ,0) == string::npos && mon.find(myY, 0) == string ::npos) return (*one);//One because we are in a monomial. This is returned //when we have reached the end of the monomial BiPoly *temp; if(start == string::npos){//Case of the normal monomial with no parens temp = new BiPoly(mon, myX, myY); } else if(start == loc){//monomial starts with a '(' end = mon.find(')', 0); temp = new BiPoly(mon.substr(start+1, end-start-1), myX, myY); (*temp) *= remove_paren(mon.substr(end+1, mon.length()-end -1), myX, myY); } else{//monomial starts with powers of x or y, start > loc temp = new BiPoly(mon.substr(loc, start-loc), myX, myY); (*temp) *= remove_paren(mon.substr(start, mon.length()-start), myX, myY); } return (*temp); } //Destructor ~BiPoly(){ if (ydeg >= 0) coeffX.clear(); } //////////////////////////////////////////////////////// // METHODS //////////////////////////////////////////////////////// // filedump (msg, ofs, com) // where msg and com are strings. // msg is an message and com is the character preceding each line // (e.g., msg="" and com="# ") // This is called by the other dump functions void filedump(std::ostream & os, std::string msg = "", std::string com = "# ") const { if (msg != "") os << msg << endl; if(ydeg == -1) { os << com << " Zero Polynomial" << endl; return; } bool first = true; os << com; for (int i=0; i <= ydeg; i++){ if (!zeroP(coeffX[i])){ if (i % 3 == 0) os << endl << com ; // output 3 coefficients per line if (first) first = false; else os << " + "; os << "["; coeffX[i].filedump(os,"",""); os << "]"; if (i > 0) os <<" * y^"<< i ; } } }//dump // dump(ofs, msg, com) -- dump to file void dump(std::ofstream & ofs, std::string msg, std::string com="# ") const { std::ostream * osp = & ofs; // convert ofstream to ostream filedump((*osp), msg, com); } // dump(msg, com) -- dump to std output void dump(std::string msg="", std::string com="") const { filedump(std::cout, msg, com); } /*Cannot work with these two functions right now. BiPoly as per now can only handle BigInt and int since Expr cannot be handled by Polynomial class.*/ // yPolynomial(x) // returns the polynomial (in Y) when we substitute X=x /* BiPoly yPolynomial(const Expr & x) { VecExpr vE; for (int i=0; i<= ydeg; i++) { vE.push_back(coeffX[i].eval(x)); } return BiPoly(vE); }//yPolynomial */ Polynomial yPolynomial(const NT & x) { NT coeffVec[ydeg+1]; int d=-1; for(int i=ydeg; i >= 0 ; i--){ coeffVec[i] = coeffX[i].eval(x); if ((d < 0) && (coeffVec[i] != 0)) d = i; } return Polynomial(d, coeffVec); } // specialized version of yPoly (temporary hack) Polynomial yExprPolynomial(const Expr & x) { Expr coeffVec[ydeg+1]; int d=-1; for(int i=ydeg; i >= 0 ; i--){ coeffVec[i] = coeffX[i].eval(x); if ((d < 0) && (coeffVec[i] != 0)) d = i; } return Polynomial(d, coeffVec); } // xPolynomial(y) // returns the polynomial (in X) when we substitute Y=y // // N.B. May need the // Polynomial xExprPolynomial(Expr y) // version too... // Polynomial xPolynomial(const NT & y) { Polynomial res = coeffX[0]; NT yPower(y); for(int i=1; i <= ydeg ; i++){ res += coeffX[i].mulScalar(yPower); yPower *= y; } return res; }//xPolynomial // getYdegree() int getYdegree() const { return ydeg; } // getXdegree() int getXdegree(){ int deg=-1; for(int i=0; i <=ydeg; i++) deg = max(deg, coeffX[i].getTrueDegree()); return deg; } // getTrueYdegree int getTrueYdegree(){ for (int i=ydeg; i>=0; i--){ coeffX[i].contract(); if (!zeroP(coeffX[i])) return i; } return -1; // Zero polynomial }//getTrueYdegree //eval(x,y) Expr eval(Expr x, Expr y){//Evaluate the polynomial at (x,y) Expr e = 0; for(int i=0; i <=ydeg; i++){ e += coeffX[i].eval(x)*pow(y,i); } return e; }//eval //////////////////////////////////////////////////////// // Polynomial arithmetic (these are all self-modifying) //////////////////////////////////////////////////////// // Expands the nominal y-degree to n; // Returns n if nominal y-degree is changed to n // Else returns -2 int expand(int n) { if ((n <= ydeg)||(n < 0)) return -2; for(int i=ydeg+1; i <=n ;i++) coeffX.push_back(Polynomial::polyZero()); ydeg = n; return n; }//expand // contract() gets rid of leading zero polynomials // and returns the new (true) y-degree; // It returns -2 if this is a no-op int contract() { int d = getTrueYdegree(); if (d == ydeg) return (-2); // nothing to do else{ for (int i = ydeg; i> d; i--) coeffX.pop_back(); ydeg = d; } return d; }//contract // Self-assignment BiPoly & operator=( const BiPoly& P) { if (this == &P) return *this; // self-assignment ydeg = P.getYdegree(); coeffX = P.coeffX; return *this; }//operator= // Self-addition BiPoly & BiPoly::operator+=( BiPoly& P) { // += int d = P.getYdegree(); if (d > ydeg) expand(d); for (int i = 0; i<=d; i++) coeffX[i] += P.coeffX[i]; return *this; }//operator+= // Self-subtraction BiPoly & BiPoly::operator-=( BiPoly& P) { // -= int d = P.getYdegree(); if (d > ydeg) expand(d); for (int i = 0; i<=d; i++) coeffX[i] -= P.coeffX[i]; return *this; }//operator-= // Self-multiplication BiPoly & BiPoly::operator*=( BiPoly& P) { // *= int d = ydeg + P.getYdegree(); std::vector > vP; Polynomial* c = new Polynomial [d + 1]; for(int i=0; i <=d; i++) c[i] = Polynomial(); for (int i = 0; i<=P.getYdegree(); i++) for (int j = 0; j<=ydeg; j++) { if(!zeroP(P.coeffX[i]) && !zeroP(coeffX[j])) c[i+j] += P.coeffX[i] * coeffX[j]; } for(int i=0; i <= d; i++) vP.push_back(c[i]); coeffX = vP; ydeg = d; return *this; }//operator*= // Multiply by a polynomial in X BiPoly & mulXpoly( Polynomial & p) { contract(); if (ydeg == -1) return *this; for (int i = 0; i<=ydeg ; i++) coeffX[i] *= p; return *this; }//mulXpoly //Multiply by a constant BiPoly & mulScalar( NT & c) { for (int i = 0; i<=ydeg ; i++) coeffX[i].mulScalar(c); return *this; }//mulScalar // mulYpower: Multiply by Y^i (COULD be a divide if i<0) BiPoly & mulYpower(int s) { // if s >= 0, then this is equivalent to // multiplying by Y^s; if s < 0, to dividing by Y^s if (s==0) return *this; int d = s+getTrueYdegree(); if (d < 0) { ydeg = -1; coeffX.clear(); return *this; } std::vector > vP; if(s > 0){ for(int i=0; i < s; i ++) vP.push_back(Polynomial::polyZero()); for(int i=s; i<=d; i++) vP.push_back(coeffX[i-s]); } if (s < 0) { for (int j=-1*s; j <= d-s; j++) vP.push_back(coeffX[j]); } coeffX = vP; ydeg= d; return *this; }//mulYpower // Divide by a polynomial in X. // We replace the coeffX[i] by the pseudoQuotient(coeffX[i], P) BiPoly & divXpoly( Polynomial & p) { contract(); if (ydeg == -1) return *this; for (int i = 0; i<=ydeg ; i++) coeffX[i] = coeffX[i].pseudoRemainder(p); return *this; }// divXpoly //Using the standard definition of pseudRemainder operation. // --No optimization! BiPoly& pseudoRemainderY (BiPoly & Q){ contract(); Q.contract(); int qdeg = Q.getYdegree(); Polynomial LC(Q.coeffX[qdeg]), temp1(LC), temp; BiPoly P(Q); std::vector > S;//The quotient in reverse order if(ydeg < qdeg){ return (*this); } (*this).mulXpoly(temp1.power(ydeg - qdeg +1)); while(ydeg >= qdeg){ temp1 = coeffX[ydeg]; temp = temp1.pseudoRemainder(LC); S.push_back(temp); P.mulXpoly(temp); P.mulYpower(ydeg - qdeg); *this -= P; contract(); P = Q;//P is used as a temporary since mulXpower and mulYpower are // self modifying } //Correct the order of S std::vector > vP; for(int i= S.size()-1; i>=0; i--) vP.push_back(S[i]); BiPoly* T = new BiPoly(vP);//Return the pseudoQuotient return *T; }//pseudoRemainder //Partial Differentiation //Partial Differentiation wrt Y BiPoly & differentiateY() { if (ydeg >= 0) { for (int i=1; i<=ydeg; i++) coeffX[i-1] = coeffX[i].mulScalar(i); ydeg--; } return *this; }// differentiation wrt Y BiPoly & differentiateX() { if (ydeg >= 0) for (int i=0; i<=ydeg; i++) coeffX[i].differentiate(); return *this; }// differentiation wrt X BiPoly & differentiateXY(int m, int n) {//m times wrt X and n times wrt Y assert(i >=0); assert(j >=0); for(int i=1; i <=m; i++) (*this).differentiateX(); for(int i=1; i <=n; i++) (*this).differentiateY(); return *this; } //Represents the bivariate polynomial in (R[X])[Y] as a member //of (R[Y])[X]. //But since our polynomials in X can only have NT coeff's thus // to represent the above polynomial we switch X and Y once // the conversion has been done. //NOTE: This is different from replacing X by Y which was // done in the case of the constructor from a polynomial in X //Need to calculate resultant wrt X. BiPoly & convertXpoly(){ getTrueYdegree(); if(ydeg == -1) return (*this); NT *cs = new NT[ydeg +1]; int xdeg = getXdegree(); std::vector > vP; for(int i=0; i<=xdeg; i++){ for(int j=0; j<=ydeg; j++){ cs[j] = coeffX[j].getCoeffi(i); } vP.push_back(Polynomial(ydeg, cs)); } ydeg = xdeg; coeffX = vP; return (*this); } //Set Coeffecient to the polynomial passed as a parameter bool setCoeff(int i, Polynomial p){ if(i < 0 || i > ydeg) return false; coeffX[i] = p; return true; } void reverse() { Polynomial tmp; for (int i=0; i<= ydeg/2; i++) { tmp = coeffX[i]; coeffX[i] = coeffX[ydeg-i]; coeffX[ydeg-i] = tmp; } }//reverse //replaceYwithX() // used used when the coeffX in BiPoly are constants, // to get the corresponding univariate poly in X // E.g., Y^2+2*Y+9 will be converted to X^2+2*X+9 Polynomial& replaceYwithX(){ int m = getTrueYdegree(); NT *cs = new NT[m+1]; for(int i=0; i <= m ; i++) cs[i]=coeffX[i].getCoeffi(0); Polynomial * p = new Polynomial (m,cs); return *p; }//replaceYwithX };//BiPoly Class //////////////////////////////////////////////////////// // Helper Functions //////////////////////////////////////////////////////// // zeroPinY(P) // checks whether a Bi-polynomial is a zero Polynomial template bool zeroPinY(BiPoly & P){ if(P.getTrueYdegree() == -1) return true; return false; } // gcd(P,Q) // This gcd is based upon the subresultant PRS to avoid // exponential coeffecient growth and gcd computations, both of which // are expensive since the coefficients are polynomials template BiPoly & gcd( BiPoly& P ,BiPoly& Q){ int m = P.getTrueYdegree(); int n = Q.getTrueYdegree(); //If both Bi-Polys are zero then return zero if( m==-1 && n==-1){ BiPoly* zero = new BiPoly();//Had to do this for the type of return *zero; //return value o/w causes problem in } //assignment operation if(m < n) { return gcd(Q, P); } //If one of the Bi-Polys are zero then return the other if(n==-1) return P; //When the two BiPolys are just univariate Polynomials in X if(m==0 && n==0){ std::vector > vP; vP.push_back(gcd(P.coeffX[0], Q.coeffX[0])); BiPoly * temp = new BiPoly(vP);//Had to do this for the type of return *temp; //return value } int delta = m - n; Polynomial a(Q.coeffX[n]); std::vector vN; vN.push_back(pow(BigInt(-1),delta + 1)); Polynomial beta(vN); Polynomial phi(power(a, delta)), t; m = n; BiPoly temp; P.pseudoRemainderY(Q); while(!zeroPinY(P)){ P.divXpoly(beta); n = P.getTrueYdegree(); delta = m - n; beta = power(phi, delta)*a.mulScalar(pow(BigInt(-1),delta+1)); a = P.coeffX[n]; t = power(phi, delta -1); phi = power(a,delta).pseudoRemainder(t); m = n; temp = Q;//Swapping the pseudo-remainder for the next step Q = P; P = temp; P.pseudoRemainderY(Q); } return Q; }//gcd // resY(P,Q): // Resultant of Bi-Polys P and Q w.r.t. Y. // So the resultant is a polynomial in X template Polynomial resY( BiPoly& P ,BiPoly& Q){ int m = P.getTrueYdegree(); int n = Q.getTrueYdegree(); //If either polynomial is zero, return zero if( m == -1 || n == -1) return Polynomial();//::polyZero(); if(n > m) return resY(Q, P); Polynomial b(Q.coeffX[n]); Polynomial lc(P.coeffX[m]), C, temp; BiPoly r; r = P.pseudoRemainderY(Q); C = b * r.coeffX[r.getTrueYdegree()]; C = C.pseudoRemainder(lc); if(zeroPinY(P) && n > 0) return Polynomial();//::polyZero(); if(Q.getTrueYdegree() == 0 && zeroPinY(P)) return power(Q.coeffX[0], m); int l = P.getTrueYdegree(); temp = power(b, m-l).mulScalar(pow(BigInt(-1),m*n))*resY(Q,P); temp = temp.pseudoRemainder(power(C,n)); return temp; }//resY // resX(P,Q): // Resultant of Bi-Polys P and Q w.r.t. X. // So the resultant is a polynomial in Y // We first convert P, Q to polynomials in X. Then // call resY and then turns it back into a polynomial in Y // QUESTION: is this last switch really necessary??? template BiPoly resX( BiPoly& P ,BiPoly& Q){ P.convertXpoly(); Q.convertXpoly(); // Polynomial p(resY(P,Q)); // return BiPoly(p); return(resY(P,Q)); // avoid the switch back }//resX //Equality operator for BiPoly template bool operator==(const BiPoly& P, const BiPoly& Q) { // == P.contract(); Q.contract(); if(P.getYdegree() != Q.getYdegree()) return false; else{ for(int i=0; i <= P.getYdegree() ; i++){ if(P.coeffX[i] != Q.coeffX[i]) return false; } } } //////////////////////////////////////////////////////// //Curve Class // extends BiPoly Class //////////////////////////////////////////////////////// template < class NT > class Curve : public BiPoly { public: // Colors for plotting curves const static int NumColors=7; static double red_comp(int i){ static double RED_COMP[] = {0.9, 0.8, 0.7, 0.6, 0.8, 0.8, 0.7}; return RED_COMP[i % NumColors]; } static double green_comp(int i){ static double GREEN_COMP[] = {0.5, 0.9, 0.3, 0.9, 0.7, 0.55, 0.95}; return GREEN_COMP[i % NumColors]; } static double blue_comp(int i){ static double BLUE_COMP[] = {0.8, 0.3, 0.8, 0.5, 0.4, 0.85, 0.35}; return BLUE_COMP[i % NumColors]; } Curve(){} // zero polynomial //Curve(vp): // construct from a vector of polynomials Curve(std::vector > vp) : BiPoly(vp){ } //Curve(p): // Converts a polynomial p(X) to a BiPoly in one of two ways: // (1) if flag is false, the result is Y-p(X) // (2) if flag is true, the result is p(Y) // The default is (1) because we usually want to plot the // graph of the polynomial p(X) Curve(Polynomial p, bool flag=false) : BiPoly(p, flag){ } //Curve(deg, d[], C[]): // Takes in a list of list of coefficients. // Each cofficient list represents a polynomial in X // // deg - ydeg of the bipoly // d[] - array containing the degrees of each coefficient (i.e., X poly) // C[] - list of coefficients, we use array d to select the // coefficients Curve(int deg, int *d, NT *C) : BiPoly(deg, d, C){ } Curve(BiPoly &P) : BiPoly(P){ } //Curve(n) Curve(int n) : BiPoly(n){// creates a Curve with nominal y-degree equal to n } //Creates a curve from a string (no parentheses, no *) Curve(string s, char myX ='x', char myY ='y') : BiPoly(s, myX, myY){ } //Creates a curve from a string (no parentheses, no *) // Note: bool ought to be last argument? Curve(string s, bool asd, char myX ='x', char myY ='y') : BiPoly(s, asd, myX, myY){ } // verticalIntersections(x, vecI, aprec=0): // The list vecI is passed an isolating intervals for y's such that (x,y) // lies on the curve. // If aprec is non-zero (!), the intervals have with < 2^{-aprec}. // Return is -2 if curve equation does not depend on Y // -1 if infinitely roots at x, // 0 if no roots at x // 1 otherwise int verticalIntersections(const BigFloat & x, BFVecInterval & vI, int aprec=0) { int d= getTrueYdegree(); if(d <= 0) return(-2); // This returns a NULL vI, which should be caught by caller Polynomial PY = yExprPolynomial(x); d = PY.getTrueDegree(); if(d <= 0) return(d); Sturm SS(PY); SS.isolateRoots(vI); int s = vI.size(); if ((aprec != 0) && (s>0)) SS.newtonRefineAllRoots(vI, aprec); return s; } // plot(eps, x1, y1, x2, y2) // // All parameters have defaults // // Gives the points on the curve at resolution "eps". Currently, // eps is viewed as delta-x step size (but it could change). // The display is done in the rectangale // defined by [(x1, y1), (x2, y2)]. // The output is written into a file in the format specified // by our drawcurve function (see COREPATH/ext/graphics). // // Heuristic: the open polygonal lines end when number of roots // changes... // int plot( BigFloat eps=0.1, BigFloat x1=-1.0, BigFloat y1=-1.0, BigFloat x2=1.0, BigFloat y2=1.0, int fileNo=1){ // Should be possible to set "filename" from a global variable! const char* filename[] = {"data/input", "data/plot", "data/plot2"}; ofstream outFile; outFile.open(filename[fileNo]); // ought to check if open is successful! outFile << "########################################\n"; outFile << "# Curve equation: \n"; dump(outFile,"", "# "); outFile << endl; outFile << "# Plot parameters: step size (eps) = " << eps << endl; outFile << "# x1 = " << x1 << ",\t y1 = " << y1 << endl; outFile << "# x2 = " << x2 << ",\t y2 = " << y2 << endl; outFile << "########################################\n"; outFile << "# X-axis " << endl; outFile << "o 2" << endl; outFile << "0.99 \t 0.99 \t 0.99" << endl; outFile << x1 << "\t" << 0 << endl; outFile << x2 << "\t" << 0 << endl; outFile << "########################################\n"; outFile << "# Y-axis " << endl; outFile << "o 2" << endl; outFile << "0.99 \t 0.99 \t 0.99" << endl; outFile << 0 << "\t" << y1 << endl; outFile << 0 << "\t" << y2 << endl; // assert(eps>0) int aprec = -(eps.lMSB()).toLong(); // By definition, eps.lMSB() <= lg(eps) BigFloat xCurr = x1; BigFloat xLast = x1; unsigned int numRoots=0; unsigned int numPoints=0; BFVecInterval vI; //=================================================================== // FIRST locate the first x-value where there are roots for plotting //=================================================================== do { vI.clear(); if (verticalIntersections(xCurr, vI, aprec) > 0) { numRoots = vI.size(); } xCurr += eps; } while ((numRoots == 0) && (xCurr < x2));//numRoots <= ydeg if (numRoots == 0 && x2 <= xCurr) {//if numRoots > 0 then there exists a //valid point for plotting return -1; // nothing to plot! } // cout << "First place where plot starts " << xCurr -eps // << " number of intersections " << numRoots << endl; int limit = ((x2 - xCurr + eps)/eps).intValue()+1; //cout << "Limit = " << limit << endl; machine_double plotCurves[getTrueYdegree()][limit]; // PLOT BUFFER machine_double yval; for (unsigned int i=0; i< numRoots; i++) { yval = (vI[i].first + vI[i].second).doubleValue()/2; if (yval < y1) plotCurves[i][numPoints] = y1.doubleValue(); else if (yval > y2) plotCurves[i][numPoints] = y2.doubleValue(); else plotCurves[i][numPoints] = yval; } vI.clear(); xLast = xCurr - eps; // -eps to compensate for the forward value of xCurr numPoints = 1; //=================================================================== // Get all the curves in a main loop // -- dump the curves when an x-interval is discovered // We define an "x-interval" to be a maximal interval // where the number of curves is constant (this is a heuristic!) // Note that this includes the special case where number is 0. //=================================================================== BigFloat tmp; // used to step from xLast to xCurr in loops while (xCurr < x2) { //main loop //cout << "Doing verticalintersec at " << xCurr << endl; verticalIntersections(xCurr, vI, aprec); if (vI.size() != numRoots) { // an x-interval discovered! // write previous x-interval to output file outFile << "########################################\n"; outFile << "# New x-interval with " << numRoots << " roots\n"; for (unsigned int i=0; i< numRoots; i++) { outFile << "#=======================================\n"; outFile << "# Curve No. " << i+1 << endl; outFile << "o " << numPoints << endl; outFile << red_comp(i) << "\t" << green_comp(i) << "\t" << blue_comp(i) << endl; tmp = xLast; for (unsigned int j=0; j< numPoints; j++) { outFile << tmp << " \t\t" << plotCurves[i][j] << "\n"; tmp += eps; }//for j }//for i numPoints = 0; // reset numRoots = vI.size(); // reset xLast = xCurr; // reset }//if vI.size() != if (numRoots>0){ // record curr. vertical intersections if numRoots>0 for (unsigned int i=0; i< numRoots; i++) { yval = (vI[i].first + vI[i].second).doubleValue()/2; if (yval < y1) plotCurves[i][numPoints] = y1.doubleValue(); else if (yval > y2) plotCurves[i][numPoints] = y2.doubleValue(); else plotCurves[i][numPoints] = yval; }//for i vI.clear(); //Should clear the intersection points numPoints++; }//if xCurr += eps; }//main while loop // Need to flush out the final x-interval: if ((numRoots>0) && (numPoints >0)) { // write to output file outFile << "########################################\n"; outFile << "# New x-interval with " << numRoots << " roots\n"; for (unsigned int i=0; i< numRoots; i++) { outFile << "#=======================================\n"; outFile << "# Curve No. " << i+1 << endl; outFile << "o " << numPoints << endl; outFile << red_comp(i) << "\t" << green_comp(i) << "\t" << blue_comp(i) << endl; tmp = xLast; for (unsigned int j=0; j< numPoints; j++) { outFile << tmp << " \t\t" << plotCurves[i][j] << "\n"; tmp += eps; }//for j }//for i }//if // Put out the final frame (this hides the artificial cut-off of curves outFile << "########################################\n"; outFile << "# FRAME around our figure " << endl; outFile << "p 4" << endl; outFile << "0.99 \t 0.99 \t 0.99" << endl; outFile << x1 << "\t" << y1 << endl; outFile << x2 << "\t" << y1 << endl; outFile << x2 << "\t" << y2 << endl; outFile << x1 << "\t" << y2 << endl; outFile << "######### End of File ##################\n"; outFile.close(); return 0; }//plot // selfIntersections(): // this should be another member function that lists // all the self-intersections of a curve // // template // void selfIntersections(BFVecInterval &vI){ // ... // } };// Curve class //////////////////////////////////////////////////////// // Curve helper functions //////////////////////////////////////////////////////// //Xintersections(C, D, vI): // returns the list vI of x-ccordinates of possible intersection points. // Assumes that C & D are quasi-monic.(or generally aligned) template void Xintersections( Curve& P ,Curve& Q, BFVecInterval &vI){ Sturm SS(resY(P, Q)); SS.isolateRoots(vI); } //Yintersections(C, D, vI): // similar to Xintersections template void Yintersections( Curve& P ,Curve& Q, BFVecInterval &vI){ Sturm SS(resX(P, Q)); SS.isolateRoots(vI); } // Display Intervals // void showIntervals(char* s, BFVecInterval &vI) { cout << s; for (unsigned int i=0; i< vI.size(); i++) { cout << "[ " << vI[i].first << ", " << vI[i].second << " ], " ; } cout << endl; } /* ************************************************************************** */ // END /* ************************************************************************** */ core++-1.7/progs/curves/parseCurve.cpp0100644000175000001440000001213610144501645017260 0ustar joachimusers/* ************************************** File: parseCurve.cpp Description: testing the parsing of bivariate polynomials Usage: > ./parseCurve Author: Vikram Sharma Date: Aug 20, 2004 Since Core Library Version 1.7 $Id: parseCurve.cpp,v 1.5 2004/11/10 21:09:57 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" #include "CORE/poly/Curves.h" // this is the official version of Curves.h using namespace std; typedef BigInt NT; typedef Polynomial PolyNT; typedef std::vector VecNT; typedef std::vector > VecPoly; // ========================================================= // MAIN // ========================================================= int main(int argc, char* argv[]) { //Fundamental test cases string s1 = "";//Emtpy string should be zero //basic terms string s2 = "x"; string s3 = "y"; string s4 = "x^23"; string s5 = "y^21"; string s6 = "2354354"; string s7 = "- x^3";//Unary minus string s8 = "(y^7)";//Parentheses with a basic term string s9 = "(x^2)^2";//Exponentiation //Terms string s10 = "234 x^2 y^3"; string s11 = "-234 x^2 y^3";//Unary minus string s12 = "234 x^2 (y^3)";//Parentheses string s13 = "234 x^2 (y^3)^2";//Parentheses with exponential string s14 = "234 x^2 (y^3) * 2 x"; //More complex cases: string s15="x^2 y ( 3x - y^2 + (x^2+xy) -1)^3 + 4x(x+y)*2(x^2-y^2)"; //Constructing the bipoly explicitly for self-testing. string ss15="x^8*y+3*x^7*y^2+9*x^7*y+18*x^6*y^2+24*x^6*y-5*x^5*y^4-9*x^5*y^3+21*x^5*y^2+9*x^5*y-18*x^4*y^4-24*x^4*y^3-18*x^4*y^2-24*x^4*y+8*x^4+3*x^3*y^6+9*x^3*y^5+6*x^3*y^4+18*x^3*y^3+3*x^3*y^2+17*x^3*y-x^2*y^7-3*x^2*y^5-3*x^2*y^3-8*x^2*y^2-x^2*y-8*x*y^3"; //Test the behaviour with parentheses string s16="(x+y)^2 - (x^2 + y^2 + 2xy) + (x+y)(x+y)"; string s17="32 u^34 v + 23 - 32 u^3 - 34 v^72";//Any chars cane be used as //placeholders string s18="32 X^34 Y + 23 - 32 X^3 - 34 Y^72";//Capital case string s19="-32 X^34 Y + 23 - 32 X^3 - 34 Y^72";//Capital case //Explicit construction of the BiPolys corresponding to the above two tests NT c1[] = {23, 0, 0, -32}; NT c2[] = {-34}; Polynomial p(34); p.setCoeff(34, 32); p.setCoeff(0,0); Curve CC2(72); CC2.setCoeff(0, Polynomial(3, c1)); CC2.setCoeff(1,p); CC2.setCoeff(72, Polynomial(0, c2)); Curve CC(s1); cout <<" String is " << s1 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s2); cout <<" String is " << s2 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s3); cout <<" String is" << s3 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s4); cout <<" String is " << s4 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s5); cout <<" String is " << s5 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s6); cout <<" String is " << s6 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s7); cout <<" String is " << s7 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s8); cout <<" String is " << s8 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s9); cout <<" String is " << s9 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s10); cout <<" String is " << s10 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s11); cout <<" String is " << s11 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s12); cout <<" String is " << s12 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s13); cout <<" String is " << s13 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s14); cout <<" String is " << s14 << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC=CC.getbipoly(s16); cout <<" Curve should be x^2 + 2*x y + y^2" << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC=CC.getbipoly("y^2 - x^3"); cout <<"Curve should be y^2 - x^3 "<< endl; CC.dump("Curve is"); cout << endl; cout << endl; CC = CC.getbipoly(s15); Curve CC1(ss15); if(CC == CC1) cout <<"CORRECT! Bipoly created correctly from string " << endl; else cout <<"ERROR!!! Bipoly has error " << endl; CC = Curve(s17, 'u', 'v'); cout <<" Using different place holders : string is " << s17 << endl; if(CC == CC2) cout <<"CORRECT! BiPoly created correctly from string " << endl; else cout <<"ERROR!!! BiPoly created incorrectly from string " << endl; CC.dump("Curve is"); cout << endl;cout << endl; CC = CC.getbipoly(s18); cout <<" Using capital 'X' and 'Y' : string is " << s18 << endl; if(CC == CC2) cout <<"CORRECT! BiPoly created correctly from string " << endl; else cout <<"ERROR!!! BiPoly created incorrectly from string " << endl; CC.dump("Curve is"); cout << endl;cout << endl; return 0; } core++-1.7/progs/curves/plotCurve.cpp0100755000175000001440000001050610135016311017115 0ustar joachimusers/* ************************************** File: plotCurve.cpp Description: This read a curve definition from the command line, possibly with other arguments (eps, xmin, ymin, etc). A plot this curve is stored in the file data/plot. To display this plot, you can call our openGL drawcurve program found in CORE_PATH/ext/graphics. (Using our Makefile, just type "make show" or "make s") Usage: > ./plotCurve [eps] [Xmin] [Ymin] [Xmax] [Ymax] [extraParam] E.g., > ./plotCurve "y - x^2" -- plots a parabola > ./plotCurve "y^2 - x^3 + 3 xy" 0.01 -- plots a cubic at x-resolution of 0.01. Only the first argument is mandatory: is a string defining a bivariate polynomial in the variables 'x' and 'y' (case sensitive) If eps, Xmin, etc, are not specified, they default to some values: eps = 0.03, Xmin = Ymin = -10 Xmax = Ymax = 10 extraParam = "" (string) TODO LIST: Plot should be able to do a simple automatic analysis of the curve to determine the domain of most interest. Author: Chee Yap Date: June 20, 2004 Since Core Library Version 1.7 $Id: plotCurve.cpp,v 1.3 2004/10/18 19:43:05 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" // #include "localCurves.h" // this is the local version of Curves.h #include "CORE/poly/Curves.h" // this is the official version of Curves.h using namespace std; typedef BigInt NT; typedef Polynomial PolyNT; typedef std::vector VecNT; typedef std::vector > VecPoly; // ========================================================= // GLOBAL PLOT PARAMETERS // ========================================================= #define NaN 100000 string curveDef; // string defining the curve polynomial e.g., y^2 -x^3 BigFloat eps = 0; // precision of the plot (i.e., delta-x) BigFloat xmin = NaN; // min x BigFloat ymin = NaN; // min y BigFloat xmax = NaN; // max x BigFloat ymax = NaN; // max y string extra = ""; // extra curve parameter (depending on curve) // Set default values if these are not specified by user: inline void setParams(BigFloat e, BigFloat xxmin, BigFloat yymin, BigFloat xxmax, BigFloat yymax){ if (eps == 0) eps = e; if (xmin == NaN) xmin = xxmin; if (ymin == NaN) ymin = yymin; if (xmax == NaN) xmax = xxmax; if (ymax == NaN) ymax = yymax; } inline void showParams(){ cout << "eps = " << eps << endl; cout << "xmin = " << xmin << ", xmax = " << xmax << endl; cout << "ymin = " << ymin << ", ymax = " << ymax << endl; } // ========================================================= // MAIN // ========================================================= int main(int argc, char* argv[]) { // GET INPUT ARGUMENTS if (argc <= 1){ cout << "usage: plotCurve [eps] " << " [xmin] [ymin] [xmax] [ymax] ..." << endl << " (where <...> is mandatory argument)" << endl << "E.g. plotCurve \"y - x^2\" 0.02 -1 -1 1 1" << endl << "The output file is data/plot" << endl; exit(1);} if (argc>1) curveDef = argv[1]; cout << "Your curve is: " << curveDef << endl; eps = 0.03; if (argc>2) eps = BigFloat(argv[2]); xmin = -10.0; if (argc>3) xmin = BigFloat(argv[3]); ymin = -10.0; if (argc>4) ymin = BigFloat(argv[4]); xmax = 10.0; if (argc>5) xmax = BigFloat(argv[5]); ymax = 10.0; if (argc>6) ymax = BigFloat(argv[6]); extra = ""; if (argc>7) extra = argv[7]; // extra parameter // SET INTERNAL PRECISION //setDefaultRelPrecision(CORE_posInfty); // This puts defAbsPrec in control int prec = 10; // Do Sturm refinement till delta // is at most 2^{-prec} //setDefaultAbsPrecision(prec); // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(prec/3); // convert prec bits into prec/3 digits // CONSTRUCT EQUATION OF CURVE Curve CC(curveDef); setParams(eps,xmin,ymin,xmax,ymax); // PLOTTING CURVES cout << "==========================" << endl; cout << extra << endl; CC.plot(eps, xmin, ymin, xmax, ymax); cout << "\n Plot parameters: " << endl; showParams(); return 0; } core++-1.7/progs/curves/tCurves.cpp0100644000175000001440000002412010130300452016554 0ustar joachimusers/* ************************************** File: tCurves.cpp Description: We plot and display a variety of curves. This includes the special case of plotting a univariate polynomial. Usage: > ./tCurves [n] [eps] [Xmin] [Ymin] [Xmax] [Ymax] [extraParam] This will output a plot of the n-th curve in this program (currently, n=0,1,...,4). If eps, Xmin, etc, are not specified, they will default to some values that we have choosen for that particular curve. The output is in the file data/plot. You can display this curve on your screen using our simple drawcurve program found in CORE_PATH/ext/graphics. (Using our Makefile, just type "make show" or "make s") Author: Chee Yap and Vikram Sharma Date: Apr 20, 2004 Since Core Library Version 1.7 $Id: tCurves.cpp,v 1.28 2004/10/04 16:58:18 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" // #include "localCurves.h" // this is the local version of Curves.h #include "CORE/poly/Curves.h" // this is the official version of Curves.h typedef BigInt NT; typedef Polynomial PolyNT; typedef std::vector VecNT; typedef std::vector > VecPoly; // ========================================================= // GLOBAL PLOT PARAMETERS // ========================================================= #define NaN 100000 BigFloat eps = 0; // precision of the plot (i.e., delta-x) BigFloat xmin = NaN; // min x BigFloat ymin = NaN; // min y BigFloat xmax = NaN; // max x BigFloat ymax = NaN; // max y int a = NaN; // extra curve parameter (depending on curve) // Set default values if these are not specified by user: inline void setParams(BigFloat e, BigFloat xxmin, BigFloat yymin, BigFloat xxmax, BigFloat yymax){ if (eps == 0) eps = e; if (xmin == NaN) xmin = xxmin; if (ymin == NaN) ymin = yymin; if (xmax == NaN) xmax = xxmax; if (ymax == NaN) ymax = yymax; } inline void showParams(){ cout << "eps = " << eps << endl; cout << "xmin = " << xmin << ", xmax = " << xmax << endl; cout << "ymin = " << ymin << ", ymax = " << ymax << endl; } // ========================================================= // MAIN // ========================================================= int main(int argc, char* argv[]) { // GET INPUT ARGUMENTS int curveNo = 0; // default curve to display if (argc>1) curveNo = atoi(argv[1]); if (argc>2) eps = BigFloat(argv[2]); if (argc>3) xmin = BigFloat(argv[3]); if (argc>4) ymin = BigFloat(argv[4]); if (argc>5) xmax = BigFloat(argv[5]); if (argc>6) ymax = BigFloat(argv[6]); if (argc>7) a = atoi(argv[7]); // extra parameter // SET INTERNAL PRECISION int prec = 15; // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(prec/3); // convert prec bits into prec/3 digits // CONSTRUCT EQUATION OF CURVE // We illustrate two methods of doing this: // // (1) Slow way: build up the vector of coefficients of the Y-powers // The first 3 curves are constructed this way. // // (2) String way: specify the polynomial as a string in x and y // // cissoid 2Y^2 - X^3 NT cissoid_coeff0[] = {0, 0, 0, -1}; NT cissoid_coeff2[] = {2}; // ellipse: X^2 + 2Y^2 - 1 NT ellipse_coeff0[] = {-1, 0, 1}; // x^2 - 1 NT ellipse_coeff2[] = {2}; // cubic1: Y^3 - X^3 + 2XY // = Y^3 + (2X)Y + (-X^3) NT cubic1_coeff0[] = {0, 0, 0, -1}; NT cubic1_coeff1[] = {0, 2}; NT cubic1_coeff3[] = {1}; // cubic2: Y^3 -2X^3 + 4X^2Y + 3XY^2 +2X^2 // = Y^3 + (3X)Y^2 + (4X^2)Y + (-2X^3+2X^2). NT cubic2_coeff0[] = {0, 0, 2, -2}; NT cubic2_coeff1[] = {0, 0, 4}; NT cubic2_coeff2[] = {0, 3}; NT cubic2_coeff3[] = {1}; Curve CC; VecPoly vP; switch (curveNo){ case 0: cout << " The Cissoid of Diocles [Brieskorn-Knorrer, p.9]\n" << " Equation is - X^3 + 2Y^2 = 0." << endl; vP.push_back( Polynomial(3, cissoid_coeff0) ); // coeff of 1 vP.push_back( Polynomial::polyZero() ); // coeff of y vP.push_back( Polynomial(0, cissoid_coeff2) ); // coeff of y^2 CC= Curve(vP); setParams(0.03, -2.0, -5.0, 5.0, 5.0); break; case 1: cout << " Ellipse \n" << " Equation is X^2 + 2Y^2 = 1." << endl; vP.push_back( Polynomial(2, ellipse_coeff0) ); // coeff of 1 vP.push_back( Polynomial::polyZero() ); // coeff of y vP.push_back( Polynomial(0, ellipse_coeff2) ); // coeff of y^2 setParams(0.03, -2.0, -2.0, 2.0, 2.0); CC= Curve(vP); break; case 2: cout << " Cubic1: Y^3 - X^3 + 2XY = Y^3 + (2X)Y + (-X^3)" << endl; vP.push_back( Polynomial(3, cubic1_coeff0) ); // coeff of 1 vP.push_back( Polynomial(1, cubic1_coeff1) ); // coeff of y vP.push_back( Polynomial::polyZero() ); // coeff of y^2 vP.push_back( Polynomial(0, cubic1_coeff3) ); // coeff of y^3 setParams(0.03, -5.0, -5.0, 5.0, 5.0); CC= Curve(vP); break; case 3: cout << " Cubic2: Y^3 -2X^3 + 4X^2Y + 3XY^2 +2X^2" << endl; vP.push_back( Polynomial(3, cubic2_coeff0) ); // coeff of 1 vP.push_back( Polynomial(2, cubic2_coeff1) ); // coeff of y vP.push_back( Polynomial(1, cubic2_coeff2) ); // coeff of y^2 vP.push_back( Polynomial(0, cubic2_coeff3) ); // coeff of y^3 CC= Curve(vP); setParams(0.03, -2.0, -2.0, 2.0, 2.0); break; case 4: // From Sendra's paper cout << "Plot of curve from Sendra" << endl; cout << "(This takes a bit longer time to compute)" << endl; CC = Curve("-4 y^4 x^2 + 2 y^7 x^2 + y^9 + 3 y^7 - 9 y^6 x^2 - 2 x^8 + 2 x^8 y + 3 x^4 y^5 - y^6 + 4 x^6 y^3 - 7 x^6 y^2 + 5 x^6 y + 10 x^2 y^5 - 11 x^4 y^4 + 9 x^4 y^3 - 4 x^4 y^2 + y^3 x^2 - 3 y^8 "); setParams(0.03, -3, -0.2, 3, 2.2); break; case 5: cout << " Cubic3: Y^2 - X(X^2-1)" << endl; cout << " -- Comprises of an oval and a y-monotone component" << endl; //component C0 is an oval through (0,0), left of the Y-axis, //component C1 is a y-monotone curve through (1,0) symmetric about X-axis CC= Curve("Y^2 - X^3 + X"); // 'X', 'Y' are needed here setParams(0.04, -2, -4.5, 2.5, 4.5); break; case 51: // Cubic3b: Y^2 - X^3 cout << " Cubic3b: Y^2 - X^3 (variant of Cubic3)" << endl; CC= Curve("y^2 - x^3"); setParams(0.04, -2, -4.5, 2.5, 4.5); break; case 6: // Cubic3a: Y^3 - X(X^2-1) cout << " Cubic3a: Y^3 - X(X^2 -1)" << endl; cout << " -- Curious variant of Cubic3" << endl; CC= Curve("y^3 - x^3 + x"); setParams(0.04, -3.0, -3.0, 5.0, 5.0); break; case 7: // Fulton, p.65 cout << "Three leaf clover, (X^2+Y^2)^2 + 3X^2 Y - Y^3" << endl; CC = Curve("X^4 + Y^4 + 2X^2Y^2 + 3X^2 Y - Y^3"); setParams(0.016, -1, -1, 1, 1.5); break; case 8: // Fulton, p.65 cout << "Four leaf clover, (X^2+Y^2)^3 - 4 X^2 Y^2" << endl; CC = Curve("X^6 + Y^6 + 3X^2 Y^4 + 3 X^4 Y^2 - 4 X^2 Y^2"); setParams(0.03, -2, -2, 2, 2); break; case 9: // Node at origin (Fulton, p.65) cout << "Nodal cubic: Y^2 - X^2 - X^3" << endl; CC = Curve("y^2 - x^2 - x^3"); setParams(0.04, -5.0, -5.0, 5.0, 5.0); break; case 10: // Example of plotting a univariate polynomial // Chebyshev Polynomials of first kind: // T0=1, T1=x, // T(i+1) = 2x* T(i) - T(i-1). // T(2) = 2x^2 - 1 // T(3) = 4x^3 - 3x // T(4) = 8x^4 - 8x + 1 // T(5) =16x^5 -20x^3 + 5x cout << "Plot of Chebyshev polynomial (!) T(4)=8X^4 - 8X^2 + 1" << endl; CC = Curve("y - 8 x^4 + 8 x^2 - 1"); setParams(0.03, -1.1, -1.1, 1.1, 1.1); break; case 11: // Example of plotting a univariate polynomial cout << "Plot of polynomial (!) X^3 + X - 1" << endl; CC = Curve("y - x^3 - x + 1"); setParams(0.03, -1.0, -2.0, 1.0, 2.0); break; case 12: // Folium of Descartes cout << "Folium of Descartes, X^3 + Y^3 - 3aXY (a=2)" << endl; CC = Curve("x^3 + y^3 - 6 x y"); a = 2; setParams(0.04, -3*a, -2*a, 3*a, 3*a); break; case 21: // variant of case 4 (cubic3) cout << "Class example: Y^3 - 2X^3 + 4X^2 Y + 2XY^2 + 2X^2" << endl; CC= Curve("y^3 - 2x^3 + 4x^2 y + 2x y^2 + 2x^2"); setParams(0.04, -3.0, -3.0, 5.0, 5.0); break; case 22: // Cubic3a: Y^3 - X(X^2-1) cout << " Cubic3a: Y^3 - X(X^2 -1)" << endl; CC= Curve("y^3 - x(x^2 - 1)"); // true is needed 'cos of (..) setParams(0.04, -3.0, -3.0, 5.0, 5.0); break; case 23: // Projection Cone from a QSIC (figure of 8) cout << " Projection Cone: Y^4 + X^2 Y^2 - X^2 Z^2 [Set Z=1]" << endl; CC= Curve("y^4 - x^2 y^2 - x^2"); setParams(0.03, -3.0, -3.0, 5.0, 5.0); break; case 24: // Projection Cone from a QSIC (figure of 8) cout << " Projection Cone: Y^4 + X^2 Y^2 - X^2 Z^2 [Set Z=0]" << endl; CC= Curve("y^4 - x^2y^2"); setParams(0.03, -3.0, -3.0, 5.0, 5.0); break; case 25: // Projection Cone from a QSIC (figure of 8) cout << " Projection Cone: Y^4 + X^2 Y^2 - X^2 Z^2 [Set Y=1]" << endl; CC= Curve("1 - x^2 -x^2 y^2"); // y is really z setParams(0.03, -3.0, -3.0, 5.0, 5.0); break; case 26: // Projection Cone from a QSIC (figure of 8) cout << " Projection Cone: Y^4 + X^2 Y^2 - X^2 Z^2 [Set X=1]" << endl; CC= Curve("y^4 + y^2 - x^2"); // x is really z setParams(0.03, -3.0, -3.0, 5.0, 5.0); break; default: cout << "Choose a smaller number for the curve to display!" << endl; exit(0); } // PLOTTING CURVES CC.dump("=========================="); CC.plot(eps, xmin, ymin, xmax, ymax); cout << "\n Plot parameters: " << endl; showParams(); return 0; } core++-1.7/progs/curves/tIntersect.cpp0100755000175000001440000002020410130300452017247 0ustar joachimusers/* ************************************** File: tIntersect.cpp Description: basic intersection of two curves Usage: > ./tIntersect [n=1] [m=2] [eps=0.5] will plot the union of the n-th curve with the m-th curve in this program (currently, n and m range in 0,1,...,4). The output is in the file data/plot2. You can display this file by calling drawcurve program, found in CORE_PATH/ext/graphics. BUGS and TODO LIST: Should be able to do automatic analysis to determine interesting area for intersection Author: Chee Yap and Vikram Sharma Date: Apr 20, 2004 Since Core Library Version 1.7 $Id: tIntersect.cpp,v 1.6 2004/10/04 16:58:18 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" // #include "localCurves.h" // this is the local version of Curves.h #include "CORE/poly/Curves.h" // this is the official version of Curves.h using namespace std; typedef BigInt NT; typedef Polynomial PolyNT; typedef std::vector VecNT; typedef std::vector > VecPoly; int main(int argc, char* argv[]) { // GET ARGUMENTS int curveNo1 = 2; // First of 2 curves to intersect if (argc>1) curveNo1 = atoi(argv[1]); int curveNo2 = 3; // Second of 2 curves to intersect if (argc>2) curveNo2 = atoi(argv[2]); BigFloat eps = 1000000; // x-precision of plot (dummy value) if (argc>3) eps = BigFloat(argv[3]); BigFloat xmin = 1000000; // min x (dummy value) if (argc>4) xmin = BigFloat(argv[4]); BigFloat ymin = 1000000; // min y (dummy value) if (argc>5) ymin = BigFloat(argv[5]); BigFloat xmax = 1000000; // max x (dummy value) if (argc>6) xmax = BigFloat(argv[6]); BigFloat ymax = 1000000; // max y (dummy value) if (argc>7) ymax = BigFloat(argv[7]); /* void setParam(BigFloat eps1, BigFloat xmin1, BigFloat ymin1, BigFloat xmax1, BigFloat ymax1) { if (eps >= 1000000) eps = eps1; if (xmin >= 1000000) xmin = xmin1; if (ymin >= 1000000) ymin = ymin1; if (xmax >= 1000000) xmax = xmax1; if (ymax >= 1000000) ymax = ymax1; } */ // SET INTERNAL PRECISION setDefaultRelPrecision(CORE_posInfty); // This puts defAbsPrec in control int prec = 10; // Do Sturm refinement till delta // is at most 2^{-prec} setDefaultAbsPrecision(prec); // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(prec/3); // convert prec bits into prec/3 digits // CONSTRUCT EQUATION OF CURVE // cissoid 2Y^2 - X^3 NT cissoid_coeff0[] = {0, 0, 0, -1}; NT cissoid_coeff2[] = {2}; // ellipse: X^2 + 2Y^2 - 1 NT ellipse_coeff0[] = {-1, 0, 1}; // x^2 - 1 NT ellipse_coeff2[] = {2}; // cubic1: Y^3 - X^3 + 2XY // = Y^3 + (2X)Y + (-X^3) NT cubic1_coeff0[] = {0, 0, 0, -1}; NT cubic1_coeff1[] = {0, 2}; NT cubic1_coeff3[] = {1}; // cubic2: Y^3 -2X^3 + 4X^2Y + 3XY^2 +2X^2 // = Y^3 + (3X)Y^2 + (4X^2)Y + (-2X^3+2X^2). NT cubic2_coeff0[] = {0, 0, 2, -2}; NT cubic2_coeff1[] = {0, 0, 4}; NT cubic2_coeff2[] = {0, 3}; NT cubic2_coeff3[] = {1}; // cubic3: Y^2 - X(X^2-1) // component C0 is an oval through (0,0), left of the Y-axis, // component C1 is a simple curve through (1,0) symmetric about // the X-axis NT cubic3_coeff0[] = {0, 1, 0, -1}; NT cubic3_coeff3[] = {1}; VecPoly vP1; switch (curveNo1){ case 0: cout << " The Cissoid of Diocles [Brieskorn-Knorrer, p.9]\n" << " Equation is - X^3 + 2Y^2 = 0." << endl; vP1.push_back( Polynomial(3, cissoid_coeff0) ); // coeff of 1 vP1.push_back( Polynomial::polyZero() ); // coeff of y vP1.push_back( Polynomial(0, cissoid_coeff2) ); // coeff of y^2 eps = 0.5; xmin = -2.0; ymin = -10.0; xmax = 10.0; ymax = 10.0; break; case 1: cout << " Ellipse \n" << " Equation is X^2 + 2Y^2 = 1." << endl; vP1.push_back( Polynomial(2, ellipse_coeff0) ); // coeff of 1 vP1.push_back( Polynomial::polyZero() ); // coeff of y vP1.push_back( Polynomial(0, ellipse_coeff2) ); // coeff of y^2 eps = 0.05; xmin = -2.0; ymin = -2.0; xmax = 2.0; ymax = 2.0; break; case 2: cout << " Cubic1: Y^3 - X^3 + 2XY = Y^3 + (2X)Y + (-X^3)" << endl; vP1.push_back( Polynomial(3, cubic1_coeff0) ); // coeff of 1 vP1.push_back( Polynomial(1, cubic1_coeff1) ); // coeff of y vP1.push_back( Polynomial::polyZero() ); // coeff of y^2 vP1.push_back( Polynomial(0, cubic1_coeff3) ); // coeff of y^3 eps = 0.05; xmin = -5.0; ymin = -5.0; xmax = 5.0; ymax = 5.0; break; case 3: cout << " Cubic2: Y^3 -2X^3 + 4X^2Y + 3XY^2 +2X^2" << endl; vP1.push_back( Polynomial(3, cubic2_coeff0) ); // coeff of 1 vP1.push_back( Polynomial(2, cubic2_coeff1) ); // coeff of y vP1.push_back( Polynomial(1, cubic2_coeff2) ); // coeff of y^2 vP1.push_back( Polynomial(0, cubic2_coeff3) ); // coeff of y^3 eps = 0.05; xmin = -2.0; ymin = -2.0; xmax = 2.0; ymax = 2.0; break; case 4: cout << " Cubic3: Y^2 - X(X^2-1)" << endl; vP1.push_back( Polynomial(3, cubic3_coeff0) ); // coeff of 1 vP1.push_back( Polynomial::polyZero() ); // coeff of y vP1.push_back( Polynomial::polyZero() ); // coeff of y^2 vP1.push_back( Polynomial(0, cubic3_coeff3) ); // coeff of y^3 eps = 0.05; xmin = -3.0; ymin = -3.0; xmax = 5.0; ymax = 5.0; break; default: cout << "Choose a smaller number for the curve to display!" << endl; exit(0); } VecPoly vP2; switch (curveNo2){ case 0: cout << " The Cissoid of Diocles [Brieskorn-Knorrer, p.9]\n" << " Equation is - X^3 + 2Y^2 = 0." << endl; vP2.push_back( Polynomial(3, cissoid_coeff0) ); // coeff of 1 vP2.push_back( Polynomial::polyZero() ); // coeff of y vP2.push_back( Polynomial(0, cissoid_coeff2) ); // coeff of y^2 eps = 0.5; xmin = -2.0; ymin = -10.0; xmax = 10.0; ymax = 10.0; break; case 1: cout << " Ellipse \n" << " Equation is X^2 + 2Y^2 = 1." << endl; vP2.push_back( Polynomial(2, ellipse_coeff0) ); // coeff of 1 vP2.push_back( Polynomial::polyZero() ); // coeff of y vP2.push_back( Polynomial(0, ellipse_coeff2) ); // coeff of y^2 eps = 0.05; xmin = -2.0; ymin = -2.0; xmax = 2.0; ymax = 2.0; break; case 2: cout << " Cubic1: Y^3 - X^3 + 2XY = Y^3 + (2X)Y + (-X^3)" << endl; vP2.push_back( Polynomial(3, cubic1_coeff0) ); // coeff of 1 vP2.push_back( Polynomial(1, cubic1_coeff1) ); // coeff of y vP2.push_back( Polynomial::polyZero() ); // coeff of y^2 vP2.push_back( Polynomial(0, cubic1_coeff3) ); // coeff of y^3 eps = 0.05; xmin = -5.0; ymin = -5.0; xmax = 5.0; ymax = 5.0; break; case 3: cout << " Cubic2: Y^3 -2X^3 + 4X^2Y + 3XY^2 +2X^2" << endl; vP2.push_back( Polynomial(3, cubic2_coeff0) ); // coeff of 1 vP2.push_back( Polynomial(2, cubic2_coeff1) ); // coeff of y vP2.push_back( Polynomial(1, cubic2_coeff2) ); // coeff of y^2 vP2.push_back( Polynomial(0, cubic2_coeff3) ); // coeff of y^3 eps = 0.05; xmin = -2.0; ymin = -2.0; xmax = 2.0; ymax = 2.0; break; case 4: cout << " Cubic3: Y^2 - X(X^2-1)" << endl; vP2.push_back( Polynomial(3, cubic3_coeff0) ); // coeff of 1 vP2.push_back( Polynomial::polyZero() ); // coeff of y vP2.push_back( Polynomial::polyZero() ); // coeff of y^2 vP2.push_back( Polynomial(0, cubic3_coeff3) ); // coeff of y^3 eps = 0.05; xmin = -3.0; ymin = -3.0; xmax = 5.0; ymax = 5.0; break; default: cout << "Choose a smaller number for the curve to display!" << endl; exit(0); } // TESTING CURVES BiPoly C1(vP1); BiPoly C2(vP2); C1 *= C2; //product of the two curves //Kludge eps = 0.05; xmin = -8.0; ymin = -8.0; xmax = 8.0; ymax = 8.0; Curve CC(C1); CC.dump("test curve"); CC.plot(eps, xmin, ymin, xmax, ymax, 2); // output in data/plot2 file BiPoly CC1("3 x^2y^31 + 7 xy^2 - 4 x + 13xy+25"); cout << "CC1 degree = "<< CC1.getYdegree() << endl; CC1.dump(); return 0; } core++-1.7/progs/curves/tt.cpp0100755000175000001440000002377410130300452015571 0ustar joachimusers/* ************************************** File: tIntersect.cpp Description: basic intersection of two curves Usage: > ./tIntersect [n=1] [m=2] [eps=0.5] will plot the union of the n-th curve with the m-th curve in this program (currently, n and m range in 0,1,...,4). The output is in the file data/plot2. You can display this file by calling drawcurve program, found in CORE_PATH/ext/graphics. BUGS and TODO LIST: Should be able to do automatic analysis to determine interesting area for intersection Author: Chee Yap and Vikram Sharma Date: Apr 20, 2004 Since Core Library Version 1.7 $Id: tt.cpp,v 1.15 2004/10/04 16:58:18 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" #include "Curves.h" using namespace std; typedef BigInt NT; typedef Polynomial PolyNT; typedef std::vector VecNT; typedef std::vector > VecPoly; int main(int argc, char* argv[]) { // GET ARGUMENTS int curveNo1 = 2; // First of 2 curves to intersect if (argc>1) curveNo1 = atoi(argv[1]); int curveNo2 = 3; // Second of 2 curves to intersect if (argc>2) curveNo2 = atoi(argv[2]); BigFloat eps = 0.5; // precision of the plot (this is delta-x) if (argc>3) eps = BigFloat(argv[3]); BigFloat x1 = -2.0; // min x if (argc>4) x1 = BigFloat(argv[4]); BigFloat y1 = -10.0; // min y if (argc>5) y1 = BigFloat(argv[5]); BigFloat x2 = 10.0; // max x if (argc>6) x2 = BigFloat(argv[6]); BigFloat y2 = 10.0; // max y if (argc>7) y2 = BigFloat(argv[7]); // SET INTERNAL PRECISION //setDefaultRelPrecision(CORE_posInfty); // This puts defAbsPrec in control int prec = 45; // Do Sturm refinement till delta // is at most 2^{-prec} //setDefaultAbsPrecision(prec); // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(prec/3); // convert prec bits into prec/3 digits // CONSTRUCT EQUATION OF CURVE // cissoid 2Y^2 - X^3 NT cissoid_coeff0[] = {0, 0, 0, -1}; NT cissoid_coeff2[] = {2}; // ellipse: X^2 + 2Y^2 - 1 NT ellipse_coeff0[] = {-1, 0, 1}; // x^2 - 1 NT ellipse_coeff2[] = {2}; // cubic1: Y^3 - X^3 + 2XY // = Y^3 + (2X)Y + (-X^3) NT cubic1_coeff0[] = {0, 0, 0, -1}; NT cubic1_coeff1[] = {0, 2}; NT cubic1_coeff3[] = {1}; // cubic2: Y^3 -2X^3 + 4X^2Y + 3XY^2 +2X^2 // = Y^3 + (3X)Y^2 + (4X^2)Y + (-2X^3+2X^2). NT cubic2_coeff0[] = {0, 0, 2, -2}; NT cubic2_coeff1[] = {0, 0, 4}; NT cubic2_coeff2[] = {0, 3}; NT cubic2_coeff3[] = {1}; // cubic3: Y^2 - X(X^2-1) // component C0 is an oval through (0,0), left of the Y-axis, // component C1 is a simple curve through (1,0) symmetric about // the X-axis NT cubic3_coeff0[] = {0, 1, 0, -1}; NT cubic3_coeff3[] = {1}; VecPoly vP1; switch (curveNo1){ case 0: cout << " The Cissoid of Diocles [Brieskorn-Knorrer, p.9]\n" << " Equation is - X^3 + 2Y^2 = 0." << endl; vP1.push_back( Polynomial(3, cissoid_coeff0) ); // coeff of 1 vP1.push_back( Polynomial::polyZero() ); // coeff of y vP1.push_back( Polynomial(0, cissoid_coeff2) ); // coeff of y^2 //eps = 0.5; x1 = -2.0; y1 = -10.0; x2 = 10.0; y2 = 10.0; break; case 1: cout << " Ellipse \n" << " Equation is X^2 + 2Y^2 = 1." << endl; vP1.push_back( Polynomial(2, ellipse_coeff0) ); // coeff of 1 vP1.push_back( Polynomial::polyZero() ); // coeff of y vP1.push_back( Polynomial(0, ellipse_coeff2) ); // coeff of y^2 //eps = 0.05; x1 = -2.0; y1 = -2.0; x2 = 2.0; y2 = 2.0; break; case 2: cout << " Cubic1: Y^3 - X^3 + 2XY = Y^3 + (2X)Y + (-X^3)" << endl; vP1.push_back( Polynomial(3, cubic1_coeff0) ); // coeff of 1 vP1.push_back( Polynomial(1, cubic1_coeff1) ); // coeff of y vP1.push_back( Polynomial::polyZero() ); // coeff of y^2 vP1.push_back( Polynomial(0, cubic1_coeff3) ); // coeff of y^3 //eps = 0.05; x1 = -5.0; y1 = -5.0; x2 = 5.0; y2 = 5.0; break; case 3: cout << " Cubic2: Y^3 -2X^3 + 4X^2Y + 3XY^2 +2X^2" << endl; vP1.push_back( Polynomial(3, cubic2_coeff0) ); // coeff of 1 vP1.push_back( Polynomial(2, cubic2_coeff1) ); // coeff of y vP1.push_back( Polynomial(1, cubic2_coeff2) ); // coeff of y^2 vP1.push_back( Polynomial(0, cubic2_coeff3) ); // coeff of y^3 //eps = 0.05; x1 = -2.0; y1 = -2.0; x2 = 2.0; y2 = 2.0; break; case 4: cout << " Cubic3: Y^2 - X(X^2-1)" << endl; vP1.push_back( Polynomial(3, cubic3_coeff0) ); // coeff of 1 vP1.push_back( Polynomial::polyZero() ); // coeff of y vP1.push_back( Polynomial::polyZero() ); // coeff of y^2 vP1.push_back( Polynomial(0, cubic3_coeff3) ); // coeff of y^3 //eps = 0.05; x1 = -3.0; y1 = -3.0; x2 = 5.0; y2 = 5.0; break; default: cout << "Choose a smaller number for the curve to display!" << endl; exit(0); } VecPoly vP2; switch (curveNo2){ vP2.push_back( Polynomial(3, cissoid_coeff0) ); // coeff of 1 vP2.push_back( Polynomial::polyZero() ); // coeff of y vP2.push_back( Polynomial(0, cissoid_coeff2) ); // coeff of y^2 //eps = 0.5; x1 = -2.0; y1 = -10.0; x2 = 10.0; y2 = 10.0; break; case 1: cout << " Ellipse \n" << " Equation is X^2 + 2Y^2 = 1." << endl; vP2.push_back( Polynomial(2, ellipse_coeff0) ); // coeff of 1 vP2.push_back( Polynomial::polyZero() ); // coeff of y vP2.push_back( Polynomial(0, ellipse_coeff2) ); // coeff of y^2 //eps = 0.05; x1 = -2.0; y1 = -2.0; x2 = 2.0; y2 = 2.0; break; case 2: cout << " Cubic1: Y^3 - X^3 + 2XY = Y^3 + (2X)Y + (-X^3)" << endl; vP2.push_back( Polynomial(3, cubic1_coeff0) ); // coeff of 1 vP2.push_back( Polynomial(1, cubic1_coeff1) ); // coeff of y vP2.push_back( Polynomial::polyZero() ); // coeff of y^2 vP2.push_back( Polynomial(0, cubic1_coeff3) ); // coeff of y^3 //eps = 0.05; x1 = -5.0; y1 = -5.0; x2 = 5.0; y2 = 5.0; break; case 3: cout << " Cubic2: Y^3 -2X^3 + 4X^2Y + 3XY^2 +2X^2" << endl; vP2.push_back( Polynomial(3, cubic2_coeff0) ); // coeff of 1 vP2.push_back( Polynomial(2, cubic2_coeff1) ); // coeff of y vP2.push_back( Polynomial(1, cubic2_coeff2) ); // coeff of y^2 vP2.push_back( Polynomial(0, cubic2_coeff3) ); // coeff of y^3 //eps = 0.05; x1 = -2.0; y1 = -2.0; x2 = 2.0; y2 = 2.0; break; case 4: cout << " Cubic3: Y^2 - X(X^2-1)" << endl; vP2.push_back( Polynomial(3, cubic3_coeff0) ); // coeff of 1 vP2.push_back( Polynomial::polyZero() ); // coeff of y vP2.push_back( Polynomial::polyZero() ); // coeff of y^2 vP2.push_back( Polynomial(0, cubic3_coeff3) ); // coeff of y^3 //eps = 0.05; x1 = -3.0; y1 = -3.0; x2 = 5.0; y2 = 5.0; break; default: cout << "Choose a smaller number for the curve to display!" << endl; exit(0); } // TESTING CURVES Curve C1(vP1); Curve C2(vP2); C1 *= C2; //product of the two curves Curve CC(C1); CC.dump("test curve"); //Kludge eps = 0.05; x1 = -10.0; y1 = -10.0; x2 = 10.0; y2 = 10.0; //C1.dump("test curve"); // C1.plot(eps, x1, y1, x2, y2, 2); // output in data/plot2 file //PLotting of some other curves //Following examples are from the paper by Sendra Curve C3("516 - 352 y - 35 y^2+41 y^3 + 172 x-88xy + xy^2 - 255 x^2 + 85 x^2y - 85 x^3"); C3.dump(); C3.plot(eps, x1, y1, x2, y2, 1); // output in data/plot2 file /*Curve C4("-132 + 128 y - 29 y^2 - y^3 + 28 x - 76 xy + 31 y^2 x + 75 x^2 - 41 x^2y + 17 x^3"); C4.dump(); //C4.plot(eps, x1, y1, x2, y2, 2); // output in data/plot2 file //Tacnode curve Curve C5(" 2 x^4 - 3 x^2 y + y^2 - 2y^3 + y^4"); C5.dump(); //C5.plot(eps, x1, y1, x2, y2, 2); // output in data/plot2 file //Affine Quartic case Curve C6("1 + x- 15 x^2 - 29 y^2 + 30 y^3 - 25 xy^2 = x^3y + 35 xy + x^4 - 6y^4 + 6xy^2"); C6.dump(); //C6.plot(eps, x1, y1, x2, y2, 2); // output in data/plot2 file Curve C7("(x^2 + y^2 - y) (y^3 + y - x^2) (y^4 - 2y^3 + y^2 - 3 yx^2 + 2 x^4)", 1); C7.dump(); */ cout<<"********CHECKING*********"<< endl; //BiPoly CC2("x + y"); //CC2.dump(); //cout << "CC2 y-degree = "<< CC2.getYdegree() << endl; //cout << "CC2 x-degree = "<< CC2.getXdegree() << endl; /* cout << "3 x^2y^31 + 7 xy^2 - (x^2 + 2y^2 -1)(x+y) + 13xy+25"< CC1("23(x^2 + 2y^2 -1)(x+y)+x^45(x^2 + 2y^2x+56 y^45))", 1); cout << "CC1 degree = "<< CC1.getYdegree() << endl; CC1.dump(); BiPoly CC2("y^2 - x(x^2-1)", 1); CC2.dump();*/ /* VecPoly vP1; NT c3[] = {0,5}; NT c2[] = {0, 0, 3}; NT c0[] = {-2}; vP1.push_back( Polynomial(0, c0) ); vP1.push_back( Polynomial::polyZero() ); // coeff of y vP1.push_back( Polynomial(2,c2 )); // coeff of y^2 vP1.push_back( Polynomial(1, c3) ); // coeff of y^3 VecPoly vP2; NT cc1[] = {1}; NT cc0[] = {0,1}; vP2.push_back( Polynomial(1, cc0) ); vP2.push_back( Polynomial(0,cc1) ); // coeff of y BiPoly C2(vP2); VecPoly vP3; NT ccc0[] = {1,0,2,-7}; vP3.push_back( Polynomial(3, ccc0) ); vP3.push_back( Polynomial::polyZero() ); // coeff of y Polynomial P(3, ccc0); BiPoly C3(vP3); BiPoly C1(vP1); C1.dump(); */ // C += C1; C.dump(); // C -= C1; C.dump(); // cout << "Multiply " << endl; //C *= C1; //C.dump(); // C=C1; //C.dump(); // C.mulXpoly(P);//C*=C3; //C.dump(); /* NT c = 3; C.mulScalar(c); C.dump(); */ // C.mulYpower(2); //C.dump(); // cout << "Pseudo Remainder " << endl; // C1.pseudoRemainderY(C); C1.dump(); // C.pseudoRemainderY(C1); C.dump(); // // C.differentiateXY(1,0); //C.dump(); // cout << "GCD " << endl; // C = gcd(C , C1); C.dump(); // // cout << "Resultant wrt Y" << endl; // resY(C, C1).dump(); return 0; } core++-1.7/progs/curves/tt1.cpp0100755000175000001440000000572610130300452015647 0ustar joachimusers/* ************************************** File: moreCurves.cpp Description: more plot and display of Curves Usage: > ./tCurves [n=1] [eps=0.5] [minX=-2] [minY=-10] [maxX=10] [maxY=10] This will output a plot of the n-th curve in this program (currently, n=0,1,...,4). The output is in the file data/plot. You can display this curve on your screen using our simple drawcurve program found in CORE_PATH/ext/graphics. BUGS and TODO LIST: Plot should be able to do a simple automatic analysis of the curve to determine the domain of most interest. Author: Chee Yap and Vikram Sharma Date: Apr 20, 2004 Since Core Library Version 1.7 $Id: tt1.cpp,v 1.2 2004/10/04 16:58:18 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" #include "Curves.h" using namespace std; typedef BigInt NT; typedef Polynomial PolyNT; typedef std::vector VecNT; typedef std::vector > VecPoly; // ========================================================= // GLOBAL PLOT PARAMETERS // ========================================================= #define NaN 100000 BigFloat eps = 0; // precision of the plot (i.e., delta-x) BigFloat xmin = NaN; // min x BigFloat ymin = NaN; // min y BigFloat xmax = NaN; // max x BigFloat ymax = NaN; // max y // Set default values if these are not specified by user: inline void setParams(BigFloat e, BigFloat xxmin, BigFloat yymin, BigFloat xxmax, BigFloat yymax){ if (eps == 0) eps = e; if (xmin == NaN) xmin = xxmin; if (ymin == NaN) ymin = yymin; if (xmax == NaN) xmax = xxmax; if (ymax == NaN) ymax = yymax; } inline void showParams(){ cout << "eps = " << eps << endl; cout << "xmin = " << xmin << ", xmax = " << xmax << endl; cout << "ymin = " << ymin << ", ymax = " << ymax << endl; } // ========================================================= // MAIN // ========================================================= int main(int argc, char* argv[]) { // GET INPUT ARGUMENTS int curveNo = 0; // which curve to display if (argc>1) curveNo = atoi(argv[1]); if (argc>2) eps = BigFloat(argv[2]); if (argc>3) xmin = BigFloat(argv[3]); if (argc>4) ymin = BigFloat(argv[4]); if (argc>5) xmax = BigFloat(argv[5]); if (argc>6) ymax = BigFloat(argv[6]); // SET INTERNAL PRECISION //setDefaultRelPrecision(CORE_posInfty); // puts defAbsPrec in control int prec = 10; // Do Sturm refinement till delta // is at most 2^{-prec} //setDefaultAbsPrecision(prec); // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(prec/3); // convert prec bits into prec/3 digits string str; //Curve CC("Y^2 - X^2 - X^3"); Curve CC(" 2 x^4 - 3 x^2 y + y^2 - 2y^3 + y^4"); CC.dump(); CC.plot(0.1,-5, -10, 10, 10, 2); return 0; } core++-1.7/progs/curves/tt2.cpp0100755000175000001440000000614710130300452015646 0ustar joachimusers/* ************************************** File: moreCurves.cpp Description: more plot and display of Curves Usage: > ./tCurves [n=1] [eps=0.5] [minX=-2] [minY=-10] [maxX=10] [maxY=10] This will output a plot of the n-th curve in this program (currently, n=0,1,...,4). The output is in the file data/plot. You can display this curve on your screen using our simple drawcurve program found in CORE_PATH/ext/graphics. BUGS and TODO LIST: Plot should be able to do a simple automatic analysis of the curve to determine the domain of most interest. Author: Chee Yap and Vikram Sharma Date: Apr 20, 2004 Since Core Library Version 1.7 $Id: tt2.cpp,v 1.4 2004/10/04 16:58:18 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" #include "Curves.h" using namespace std; typedef BigInt NT; typedef Polynomial PolyNT; typedef std::vector VecNT; typedef std::vector > VecPoly; // ========================================================= // GLOBAL PLOT PARAMETERS // ========================================================= #define NaN 100000 BigFloat eps = 0; // precision of the plot (i.e., delta-x) BigFloat xmin = NaN; // min x BigFloat ymin = NaN; // min y BigFloat xmax = NaN; // max x BigFloat ymax = NaN; // max y // Set default values if these are not specified by user: inline void setParams(BigFloat e, BigFloat xxmin, BigFloat yymin, BigFloat xxmax, BigFloat yymax){ if (eps == 0) eps = e; if (xmin == NaN) xmin = xxmin; if (ymin == NaN) ymin = yymin; if (xmax == NaN) xmax = xxmax; if (ymax == NaN) ymax = yymax; } inline void showParams(){ cout << "eps = " << eps << endl; cout << "xmin = " << xmin << ", xmax = " << xmax << endl; cout << "ymin = " << ymin << ", ymax = " << ymax << endl; } // ========================================================= // MAIN // ========================================================= int main(int argc, char* argv[]) { // GET INPUT ARGUMENTS int curveNo = 0; // which curve to display if (argc>1) curveNo = atoi(argv[1]); if (argc>2) eps = BigFloat(argv[2]); if (argc>3) xmin = BigFloat(argv[3]); if (argc>4) ymin = BigFloat(argv[4]); if (argc>5) xmax = BigFloat(argv[5]); if (argc>6) ymax = BigFloat(argv[6]); // SET INTERNAL PRECISION //setDefaultRelPrecision(CORE_posInfty); // puts defAbsPrec in control int prec = 10; // Do Sturm refinement till delta // is at most 2^{-prec} //setDefaultAbsPrecision(prec); // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(prec/3); // convert prec bits into prec/3 digits string str; // Curve CC(" 2 x^4 - 3 x^2 y + y^2 - 2y^3 + y^4"); Curve CC; CC = Curve(" 2 x^4 - 3 x^2 y + y^2 - 2y^3 + y^4"); //CC.dump(); CC.plot(0.1,-5, -10, 10, 10, 2); return 0; } core++-1.7/progs/curves/data/0040755000175000001440000000000010147210064015341 5ustar joachimuserscore++-1.7/progs/curves/data/cissoid0100644000175000001440000000247710041311231016717 0ustar joachimusers######################################## # Cissoid of Diocles [Brieskorn-Knorrer, p.9] # Curve equation: # x^3 - 2y^2 = 0 # # Plot parameters: step size (eps) = 0.50000 # x1 = -2.00000, y1 = -5.80000 # x2 = 10.8000, y2 = 5.80000 # Core Library 1.7 ######################################## # New x-interval with 1 roots #======================================= # Curve No. 0 o 1 0.9 0.5 0.8 0. 0 ######################################## # New x-interval with 2 roots #======================================= # Curve No. 0 o 21 0.9 0.5 0.8 0.50000 -0.545928 1. -0.825 1.50000 -1.3795 2. -2.00001 2.50000 -2.79526 3. -3.67616 3.50000 -4.64165 4. -5.65685 4.50000 -6.75 5. -7.90569 5.50000 -9.12072 6. -10.3923 6.50000 -11.718 7. -13.0958 7.50000 -14.5237 8. -16 8.50000 -17.5232 9. -19.0919 9.50000 -20.705 10. -22.3612 10.5000 -24.0597 #======================================= # Curve No. 1 o 21 0.8 0.9 0.3 # buggy output: 0.50000 -24.0597 0.50000 0.545928 1. 0.825 1.50000 1.3795 2. 2.00001 2.50000 2.79526 3. 3.67616 3.50000 4.64165 4. 5.65685 4.50000 6.75 5. 7.90569 5.50000 9.12072 6. 10.3923 6.50000 11.718 7. 13.0958 7.50000 14.5237 8. 16 8.50000 17.5232 9. 19.0919 9.50000 20.705 10. 22.3612 10.5000 24.0597 core++-1.7/progs/curves/data/cubic10100644000175000001440000001260710047045024016436 0ustar joachimusers######################################## # Curve equation: # [] + [] * y^1 + [] * y^3 # Plot parameters: step size (eps) = 0.05000 # x1 = -5.00000, y1 = -5.00000 # x2 = 5.00000, y2 = 5.00000 ######################################## ######################################## # New x-interval with 1 roots #======================================= # Curve No. 0 o 79 0.9 0.5 0.8 -5. -5.66323 -4.95000 -5.61317 -4.90000 -5.5631 -4.85000 -5.51303 -4.80000 -5.46296 -4.75000 -5.41289 -4.70000 -5.36282 -4.65000 -5.31274 -4.60000 -5.26266 -4.55000 -5.21258 -4.50000 -5.16249 -4.45000 -5.11241 -4.40000 -5.06232 -4.35000 -5.01223 -4.30000 -4.96213 -4.25000 -4.91203 -4.20000 -4.86193 -4.15000 -4.81183 -4.10000 -4.76172 -4.05000 -4.71161 -4.00000 -4.66149 -3.95000 -4.61137 -3.90000 -4.56125 -3.85000 -4.51112 -3.80000 -4.46121 -3.75000 -4.4109 -3.70000 -4.36071 -3.65000 -4.31056 -3.60000 -4.26041 -3.55000 -4.21031 -3.50000 -4.16008 -3.45000 -4.10991 -3.40000 -4.05973 -3.35000 -4.00955 -3.30000 -3.95935 -3.25000 -3.90915 -3.20000 -3.85894 -3.15000 -3.80873 -3.10000 -3.7585 -3.05000 -3.70826 -3.00000 -3.65801 -2.95000 -3.60775 -2.90000 -3.55748 -2.85000 -3.5072 -2.80000 -3.45691 -2.75000 -3.4066 -2.70000 -3.35627 -2.65000 -3.30593 -2.60000 -3.25559 -2.55000 -3.20526 -2.50000 -3.1548 -2.45000 -3.10439 -2.40000 -3.05395 -2.35000 -3.00349 -2.30000 -2.953 -2.25000 -2.90249 -2.20000 -2.85195 -2.15000 -2.80137 -2.10000 -2.75076 -2.05000 -2.70012 -2.00000 -2.64944 -1.95000 -2.59871 -1.90000 -2.54794 -1.85000 -2.49711 -1.80000 -2.44624 -1.75000 -2.3953 -1.70000 -2.3443 -1.65000 -2.29322 -1.60000 -2.24237 -1.55000 -2.19095 -1.50000 -2.13954 -1.45000 -2.08808 -1.40000 -2.03652 -1.35000 -1.98484 -1.30000 -1.93302 -1.25000 -1.88105 -1.20000 -1.8289 -1.15000 -1.77655 -1.10000 -1.72398 ######################################## # New x-interval with 3 roots #======================================= # Curve No. 0 o 21 0.9 0.5 0.8 -1.10000 -1.67116 -1.05000 -1.61806 -1.00000 -1.56463 -0.95000 -1.51084 -0.90000 -1.45663 -0.85000 -1.40193 -0.80000 -1.34667 -0.75000 -1.29076 -0.70000 -1.23409 -0.65000 -1.17652 -0.60000 -1.11788 -0.55000 -1.05797 -0.50000 -0.996533 -0.45000 -0.933241 -0.40000 -0.86575 -0.35000 -0.796186 -0.30000 -0.722242 -0.25000 -0.642228 -0.20000 -0.553263 -0.15000 -0.438621 -0.10000 -0.31946 #======================================= # Curve No. 1 o 21 0.8 0.9 0.3 -1.10000 0.761498 -1.05000 0.618033 -1.00000 0.529293 -0.95000 0.458236 -0.90000 0.398465 -0.85000 0.345856 -0.80000 0.299086 -0.75000 0.257145 -0.70000 0.21937 -0.65000 0.185301 -0.60000 0.154609 -0.55000 0.12705 -0.50000 0.102445 -0.45000 0.0806559 -0.40000 0.0615837 -0.35000 0.0451534 -0.30000 0.0313114 -0.25000 0.0200201 -0.20000 0.0112548 -0.15000 0.00500063 -0.10000 0.00125002 #======================================= # Curve No. 2 o 21 0.7 0.3 0.8 -1.10000 0.910861 -1.05000 1 -1.00000 1.03531 -0.95000 1.05324 -0.90000 1.05853 -0.85000 1.05619 -0.80000 1.04759 -0.75000 1.03355 -0.70000 1.01458 -0.65000 0.990995 -0.60000 0.962937 -0.55000 0.930417 -0.50000 0.89332 -0.45000 0.851391 -0.40000 0.804205 -0.35000 0.751111 -0.30000 0.691123 -0.25000 0.622755 -0.20000 0.542008 -0.15000 0.444692 -0.10000 0.31561 ######################################## # New x-interval with 1 roots #======================================= # Curve No. 0 o 100 0.9 0.5 0.8 -0.10000 0.00137174 -0.05000 0.00124998 .277556e-15 0.0135477 0.05000 0.0121583 0.10000 0.0199929 0.15000 0.0311951 0.20000 0.0448523 0.25000 0.060928 0.30000 0.0793752 0.35000 0.100134 0.40000 0.123133 0.45000 0.148286 0.50000 0.175496 0.55000 0.204657 0.60000 0.235655 0.65000 0.268372 0.70000 0.302689 0.75000 0.338489 0.80000 0.37515 0.85000 0.413924 0.90000 0.453398 0.95000 0.493884 1.00000 0.535284 1.05000 0.577508 1.10000 0.62047 1.15000 0.664097 1.20000 0.708318 1.25000 0.753072 1.30000 0.798304 1.35000 0.843963 1.40000 0.890006 1.45000 0.936393 1.50000 0.983088 1.55000 1.03006 1.60000 1.07728 1.65000 1.12473 1.70000 1.17238 1.75000 1.22022 1.80000 1.26822 1.85000 1.31637 1.90000 1.36466 1.95000 1.41307 2.00000 1.46159 2.05000 1.51022 2.10000 1.55894 2.15000 1.60775 2.20000 1.65663 2.25000 1.70559 2.30000 1.75461 2.35000 1.8037 2.40000 1.85284 2.45000 1.90203 2.50000 1.95127 2.55000 2.00056 2.60000 2.04988 2.65000 2.09943 2.70000 2.14872 2.75000 2.1981 2.80000 2.24754 2.85000 2.29703 2.90000 2.34655 2.95000 2.39609 3.00000 2.44567 3.05000 2.4953 3.10000 2.54503 3.15000 2.59447 3.20000 2.64411 3.25000 2.69377 3.30000 2.74345 3.35000 2.79314 3.40000 2.84284 3.45000 2.89256 3.50000 2.94229 3.55000 2.99203 3.60000 3.04178 3.65000 3.09154 3.70000 3.14131 3.75000 3.19109 3.80000 3.24088 3.85000 3.29068 3.90000 3.34049 3.95000 3.3903 4.00000 3.44012 4.05000 3.48995 4.10000 3.53979 4.15000 3.58963 4.20000 3.63947 4.25000 3.68932 4.30000 3.73918 4.35000 3.78904 4.40000 3.83891 4.45000 3.88878 4.50000 3.93866 4.55000 3.98853 4.60000 4.03842 4.65000 4.08831 4.70000 4.1382 4.75000 4.18809 4.80000 4.23799 4.85000 4.28789 core++-1.7/progs/curves/data/cubic1+20100644000175000001440000001451410041353746016601 0ustar joachimusers######################################## # Curve equation: # [] + [] * y^1 + [] * y^3 # Plot parameters: step size (eps) = 0.05000 # x1 = -5.00000, y1 = -5.00000 # x2 = 5.00000, y2 = 5.00000 ######################################## ######################################## # New x-interval with 1 roots #======================================= # Curve No. 0 o 79 0.9 0.5 0.8 -5. -5.66323 -4.95000 -5.61317 -4.90000 -5.5631 -4.85000 -5.51303 -4.80000 -5.46296 -4.75000 -5.41289 -4.70000 -5.36282 -4.65000 -5.31274 -4.60000 -5.26266 -4.55000 -5.21258 -4.50000 -5.16249 -4.45000 -5.11241 -4.40000 -5.06232 -4.35000 -5.01223 -4.30000 -4.96213 -4.25000 -4.91203 -4.20000 -4.86193 -4.15000 -4.81183 -4.10000 -4.76172 -4.05000 -4.71161 -4.00000 -4.66149 -3.95000 -4.61137 -3.90000 -4.56125 -3.85000 -4.51112 -3.80000 -4.46121 -3.75000 -4.4109 -3.70000 -4.36071 -3.65000 -4.31056 -3.60000 -4.26041 -3.55000 -4.21031 -3.50000 -4.16008 -3.45000 -4.10991 -3.40000 -4.05973 -3.35000 -4.00955 -3.30000 -3.95935 -3.25000 -3.90915 -3.20000 -3.85894 -3.15000 -3.80873 -3.10000 -3.7585 -3.05000 -3.70826 -3.00000 -3.65801 -2.95000 -3.60775 -2.90000 -3.55748 -2.85000 -3.5072 -2.80000 -3.45691 -2.75000 -3.4066 -2.70000 -3.35627 -2.65000 -3.30593 -2.60000 -3.25559 -2.55000 -3.20526 -2.50000 -3.1548 -2.45000 -3.10439 -2.40000 -3.05395 -2.35000 -3.00349 -2.30000 -2.953 -2.25000 -2.90249 -2.20000 -2.85195 -2.15000 -2.80137 -2.10000 -2.75076 -2.05000 -2.70012 -2.00000 -2.64944 -1.95000 -2.59871 -1.90000 -2.54794 -1.85000 -2.49711 -1.80000 -2.44624 -1.75000 -2.3953 -1.70000 -2.3443 -1.65000 -2.29322 -1.60000 -2.24237 -1.55000 -2.19095 -1.50000 -2.13954 -1.45000 -2.08808 -1.40000 -2.03652 -1.35000 -1.98484 -1.30000 -1.93302 -1.25000 -1.88105 -1.20000 -1.8289 -1.15000 -1.77655 -1.10000 -1.72398 ######################################## # New x-interval with 0 roots ######################################## # New x-interval with 1 roots #======================================= # Curve No. 0 o 100 0.9 0.5 0.8 -5. 0.00137174 -4.95000 0.00124998 -4.90000 0.0135477 -4.85000 0.0121583 -4.80000 0.0199929 -4.75000 0.0311951 -4.70000 0.0448523 -4.65000 0.060928 -4.60000 0.0793752 -4.55000 0.100134 -4.50000 0.123133 -4.45000 0.148286 -4.40000 0.175496 -4.35000 0.204657 -4.30000 0.235655 -4.25000 0.268372 -4.20000 0.302689 -4.15000 0.338489 -4.10000 0.37515 -4.05000 0.413924 -4.00000 0.453398 -3.95000 0.493884 -3.90000 0.535284 -3.85000 0.577508 -3.80000 0.62047 -3.75000 0.664097 -3.70000 0.708318 -3.65000 0.753072 -3.60000 0.798304 -3.55000 0.843963 -3.50000 0.890006 -3.45000 0.936393 -3.40000 0.983088 -3.35000 1.03006 -3.30000 1.07728 -3.25000 1.12473 -3.20000 1.17238 -3.15000 1.22022 -3.10000 1.26822 -3.05000 1.31637 -3.00000 1.36466 -2.95000 1.41307 -2.90000 1.46159 -2.85000 1.51022 -2.80000 1.55894 -2.75000 1.60775 -2.70000 1.65663 -2.65000 1.70559 -2.60000 1.75461 -2.55000 1.8037 -2.50000 1.85284 -2.45000 1.90203 -2.40000 1.95127 -2.35000 2.00056 -2.30000 2.04988 -2.25000 2.09943 -2.20000 2.14872 -2.15000 2.1981 -2.10000 2.24754 -2.05000 2.29703 -2.00000 2.34655 -1.95000 2.39609 -1.90000 2.44567 -1.85000 2.4953 -1.80000 2.54503 -1.75000 2.59447 -1.70000 2.64411 -1.65000 2.69377 -1.60000 2.74345 -1.55000 2.79314 -1.50000 2.84284 -1.45000 2.89256 -1.40000 2.94229 -1.35000 2.99203 -1.30000 3.04178 -1.25000 3.09154 -1.20000 3.14131 -1.15000 3.19109 -1.10000 3.24088 -1.05000 3.29068 -1.00000 3.34049 -0.95000 3.3903 -0.90000 3.44012 -0.85000 3.48995 -0.80000 3.53979 -0.75000 3.58963 -0.70000 3.63947 -0.65000 3.68932 -0.60000 3.73918 -0.55000 3.78904 -0.50000 3.83891 -0.45000 3.88878 -0.40000 3.93866 -0.35000 3.98853 -0.30000 4.03842 -0.25000 4.08831 -0.20000 4.1382 -0.15000 4.18809 -0.10000 4.23799 -0.05000 4.28789 ## ## CUBIC2 ######################################## # Curve equation: # [] + [] * y^1 + [] * y^2 + [] * y^3 # Plot parameters: step size (eps) = 0.05000 # x1 = -2.00000, y1 = -2.00000 # x2 = 2.00000, y2 = 2.00000 ######################################## ######################################## # New x-interval with 1 roots #======================================= # Curve No. 0 o 80 0.95 0.2 0.89 -2. -1.03196 -1.95000 -1.01248 -1.90000 -0.993138 -1.85000 -0.973501 -1.80000 -0.953905 -1.75000 -0.934309 -1.70000 -0.914688 -1.65000 -0.895032 -1.60000 -0.875345 -1.55000 -0.855639 -1.50000 -0.835931 -1.45000 -0.816244 -1.40000 -0.79611 -1.35000 -0.77617 -1.30000 -0.756165 -1.25000 -0.73609 -1.20000 -0.715937 -1.15000 -0.695699 -1.10000 -0.675365 -1.05000 -0.654925 -1.00000 -0.634365 -0.95000 -0.613672 -0.90000 -0.592827 -0.85000 -0.571809 -0.80000 -0.550593 -0.75000 -0.52915 -0.70000 -0.507443 -0.65000 -0.485426 -0.60000 -0.463043 -0.55000 -0.440224 -0.50000 -0.416875 -0.45000 -0.392878 -0.40000 -0.36807 -0.35000 -0.342228 -0.30000 -0.315034 -0.25000 -0.28601 -0.20000 -0.255523 -0.15000 -0.219177 -0.10000 -0.176903 -0.05000 -0.122096 .111022e-15 -0.00137174 0.05000 -0.210059 0.10000 -0.338769 0.15000 -0.442119 0.20000 -0.526896 0.25000 -0.594699 0.30000 -0.644746 0.35000 -0.67358 0.40000 -0.672931 0.45000 -0.624603 0.50000 -0.499999 0.55000 -0.369434 0.60000 -0.284616 0.65000 -0.227944 0.70000 -0.182627 0.75000 -0.144553 0.80000 -0.111021 0.85000 -0.0805432 0.90000 -0.0522293 0.95000 -0.0255091 1.00000 0.00776312 1.05000 0.024695 1.10000 0.0484805 1.15000 0.0716703 1.20000 0.0943686 1.25000 0.116657 1.30000 0.138599 1.35000 0.160248 1.40000 0.181646 1.45000 0.202827 1.50000 0.22382 1.55000 0.244649 1.60000 0.265336 1.65000 0.285898 1.70000 0.306351 1.75000 0.32671 1.80000 0.346985 1.85000 0.36719 1.90000 0.3869 1.95000 0.406893 core++-1.7/progs/curves/data/cubic20100644000175000001440000000377110041353746016450 0ustar joachimusers######################################## # Curve equation: # [] + [] * y^1 + [] * y^2 + [] * y^3 # Plot parameters: step size (eps) = 0.05000 # x1 = -2.00000, y1 = -2.00000 # x2 = 2.00000, y2 = 2.00000 ######################################## ######################################## # New x-interval with 1 roots #======================================= # Curve No. 0 o 80 0.9 0.5 0.8 -2. -1.03196 -1.95000 -1.01248 -1.90000 -0.993138 -1.85000 -0.973501 -1.80000 -0.953905 -1.75000 -0.934309 -1.70000 -0.914688 -1.65000 -0.895032 -1.60000 -0.875345 -1.55000 -0.855639 -1.50000 -0.835931 -1.45000 -0.816244 -1.40000 -0.79611 -1.35000 -0.77617 -1.30000 -0.756165 -1.25000 -0.73609 -1.20000 -0.715937 -1.15000 -0.695699 -1.10000 -0.675365 -1.05000 -0.654925 -1.00000 -0.634365 -0.95000 -0.613672 -0.90000 -0.592827 -0.85000 -0.571809 -0.80000 -0.550593 -0.75000 -0.52915 -0.70000 -0.507443 -0.65000 -0.485426 -0.60000 -0.463043 -0.55000 -0.440224 -0.50000 -0.416875 -0.45000 -0.392878 -0.40000 -0.36807 -0.35000 -0.342228 -0.30000 -0.315034 -0.25000 -0.28601 -0.20000 -0.255523 -0.15000 -0.219177 -0.10000 -0.176903 -0.05000 -0.122096 .111022e-15 -0.00137174 0.05000 -0.210059 0.10000 -0.338769 0.15000 -0.442119 0.20000 -0.526896 0.25000 -0.594699 0.30000 -0.644746 0.35000 -0.67358 0.40000 -0.672931 0.45000 -0.624603 0.50000 -0.499999 0.55000 -0.369434 0.60000 -0.284616 0.65000 -0.227944 0.70000 -0.182627 0.75000 -0.144553 0.80000 -0.111021 0.85000 -0.0805432 0.90000 -0.0522293 0.95000 -0.0255091 1.00000 0.00776312 1.05000 0.024695 1.10000 0.0484805 1.15000 0.0716703 1.20000 0.0943686 1.25000 0.116657 1.30000 0.138599 1.35000 0.160248 1.40000 0.181646 1.45000 0.202827 1.50000 0.22382 1.55000 0.244649 1.60000 0.265336 1.65000 0.285898 1.70000 0.306351 1.75000 0.32671 1.80000 0.346985 1.85000 0.36719 1.90000 0.3869 1.95000 0.406893 core++-1.7/progs/curves/data/ellipse0100644000175000001440000000402410041353746016726 0ustar joachimusers######################################## # Curve equation: # [] + [] * y^2 # Plot parameters: step size (eps) = 0.05000 # x1 = -2.00000, y1 = -2.00000 # x2 = 2.00000, y2 = 2.00000 ######################################## ######################################## # New x-interval with 2 roots #======================================= # Curve No. 0 o 40 0.9 0.5 0.8 -1.00000 -0.015625 -0.95000 -0.220794 -0.90000 -0.308221 -0.85000 -0.372492 -0.80000 -0.424264 -0.75000 -0.46841 -0.70000 -0.505427 -0.65000 -0.537664 -0.60000 -0.565909 -0.55000 -0.59072 -0.50000 -0.612506 -0.45000 -0.631575 -0.40000 -0.648165 -0.35000 -0.66246 -0.30000 -0.674606 -0.25000 -0.684715 -0.20000 -0.692877 -0.15000 -0.69916 -0.10000 -0.703614 -0.05000 -0.706272 .111022e-15 -0.707156 0.05000 -0.706272 0.10000 -0.703614 0.15000 -0.69916 0.20000 -0.692877 0.25000 -0.684715 0.30000 -0.674606 0.35000 -0.66246 0.40000 -0.648165 0.45000 -0.631575 0.50000 -0.612506 0.55000 -0.59072 0.60000 -0.565909 0.65000 -0.537664 0.70000 -0.505427 0.75000 -0.46841 0.80000 -0.424264 0.85000 -0.372492 0.90000 -0.308221 0.95000 -0.220794 #======================================= # Curve No. 1 o 40 0.8 0.9 0.3 -1.00000 0.015625 -0.95000 0.220794 -0.90000 0.308221 -0.85000 0.372492 -0.80000 0.424264 -0.75000 0.46841 -0.70000 0.505427 -0.65000 0.537664 -0.60000 0.565909 -0.55000 0.59072 -0.50000 0.612506 -0.45000 0.631575 -0.40000 0.648165 -0.35000 0.66246 -0.30000 0.674606 -0.25000 0.684715 -0.20000 0.692877 -0.15000 0.69916 -0.10000 0.703614 -0.05000 0.706272 .111022e-15 0.707156 0.05000 0.706272 0.10000 0.703614 0.15000 0.69916 0.20000 0.692877 0.25000 0.684715 0.30000 0.674606 0.35000 0.66246 0.40000 0.648165 0.45000 0.631575 0.50000 0.612506 0.55000 0.59072 0.60000 0.565909 0.65000 0.537664 0.70000 0.505427 0.75000 0.46841 0.80000 0.424264 0.85000 0.372492 0.90000 0.308221 0.95000 0.220794 core++-1.7/progs/delaunay/0040755000175000001440000000000010147210064014723 5ustar joachimuserscore++-1.7/progs/delaunay/Makefile0100644000175000001440000000255510144502313016365 0ustar joachimusers# Makefile for delaunay # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.6 2004/11/10 21:14:51 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= dt2 MORETARGETS= dt4 default: $(TARGETS) all: $(TARGETS) $(MORETARGETS) test: $(TARGETS) ./dt2 < inputs/i10 > outputs/i10.ps ./dt2 < inputs/circ12 > outputs/circ12.ps ./dt2 -l < inputs/i10 > outputs/i10.leda ./dt2 < inputs/i100 > outputs/i100.ps moretest: $(MORETARGETS) ./dt4 < inputs/circ12 > outputs/circ20-dt4.ps ./dt4 < inputs/i10 > outputs/i10-dt4.ps ./dt4 < inputs/circ12 > outputs/circ12-dt4.ps dt2: dt2.o dt4: dt4.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/delaunay/README0100644000175000001440000000274507437361201015620 0ustar joachimusersfile: README for delaunay examples Core Library $Id: README,v 1.1.1.1 2002/02/28 07:55:45 exact Exp $ Two examples to demonstrate the ease of converting an exising C application to CORE level 3 program. The original C source code (stored here in the sub-directory "orig") is from O'Rourke (http://cs.smith.edu/~orourke/books/ftp.html) and is based on his book, "Computational Geometry in C (Second Edition)". Programs: 1. dt2.cc Implements the Graham algorithm to compute the delaunay triangulation of a set of 2D points. We modified it slightly to utilize Core Library and to allow it to process input/output files with the LEDA format. Usage: dt2 -[ c | d | l | L ] < input_file > output_file Options: -c: check and debug mode; -d: debug mode; -l: produce output in LEDA format; -L: read in input with LEDA format. Input: A few sample inputs file are listed under the sub-directory "inputs". Please take a look of the README file there. Note that to read in LEDA format files, you need to specify the "-L" option. Output: Depending on the options specified, it can produce both PostScript file (by default) and LEDA files (-l option). 2: dt4.cc A very simple O(n^4) algorithm based on orientation tests. Usage: dt4 < input_file > output_file Input: as above. Output: print to the standard output the delaunay triangles and the total number of faces found. NOTE: if a delaunay k-gon is degenerate (i.e., k > 3), then the program counts (k choose 3) triangles. core++-1.7/progs/delaunay/dt2.cpp0100644000175000001440000010557107674161411016142 0ustar joachimusers/***************************************************************** File: dt2.cc purpose: This is a CORE library version of O'Rourke's implementation of Graham's convex hull algorithm. Changes to O'Rourke's program: -- all printf and scanf are converted to std::cout and std::cin -- input numbers are assumed to be double instead of int -- input points are 2D points, dt2 can automatically evaluate value of z by x^2 + y^2 Usage: % dt2 [-l] < input_file >! output_file If the optional switch (-l) is not given, then dt2 output a postscript file to draw a projection of the convex hull. The switch modifies this behavior: -l This forces dt2 to output the convex hull in a form suitable for display using LEDA's window sytem Author: Hui Jin (hj228@cs.nyu.edu), August 1999 Modified: By Chen Li to incorprate LEDA input format (09/09/99). ****************************************************************** O'Rourke's Original Comments: ****************************************************************** This code is described in "Computational Geometry in C" (Second Edition), Chapter 5. It is not written to be comprehensible without the explanation in that book. Input: 2n integer coordinates for the points. Output: The Delaunay triangulation, in postscript with embedded comments. Compile: gcc -o dt2 dt2.c Written by Joseph O'Rourke. Last modified: July 1997 Questions to orourke@cs.smith.edu. -------------------------------------------------------------------- This code is Copyright 1998 by Joseph O'Rourke. It may be freely redistributed in its entirety provided that this copyright notice is not removed. -------------------------------------------------------------------- */ #define CORE_LEVEL 3 #include "CORE.h" #include "macros.h" /*Define Boolean type */ //typedef enum { FALSE, TRUE } bool; /* Define vertex indices. */ #define X 0 #define Y 1 #define Z 2 /* Define structures for vertices, edges and faces */ typedef struct tVertexStructure tsVertex; typedef tsVertex *tVertex; typedef struct tEdgeStructure tsEdge; typedef tsEdge *tEdge; typedef struct tFaceStructure tsFace; typedef tsFace *tFace; struct tVertexStructure { double v[3]; int vnum; tEdge duplicate; /* pointer to incident cone edge (or NULL) */ bool onhull; /* T iff point on hull. */ bool mark; /* T iff point already processed. */ tVertex next, prev; }; struct tEdgeStructure { tFace adjface[2]; tVertex endpts[2]; tFace newface; /* pointer to incident cone face. */ bool delete_bit; /* T iff edge should be delete. */ tEdge next, prev; }; struct tFaceStructure { tEdge edge[3]; tVertex vertex[3]; bool visible; /* T iff face visible from new point. */ bool lower; /* T iff on the lower hull */ tFace next, prev; }; /* Define flags */ #define ONHULL true #define REMOVED true #define VISIBLE true #define PROCESSED true #define SAFE 1000000 /* Range of safe coord values. */ /* Global variable definitions */ tVertex vertices = NULL; tEdge edges = NULL; tFace faces = NULL; bool debug = false; bool check = false; bool toLeda = false; bool fromLeda = false; const int HOMOGENIZING_FACTOR = 1; /* Function declarations */ tVertex MakeNullVertex( void ); void ReadVertices( void ); void Print( void ); void PrintToLeda(); void SubVec( double a[3], double b[3], double c[3]); void DoubleTriangle( void ); void ConstructHull( void ); bool AddOne( tVertex p ); int VolumeSign(tFace f, tVertex p); double Volumei( tFace f, tVertex p ); tFace MakeConeFace( tEdge e, tVertex p ); void MakeCcw( tFace f, tEdge e, tVertex p ); tEdge MakeNullEdge( void ); tFace MakeNullFace( void ); tFace MakeFace( tVertex v0, tVertex v1, tVertex v2, tFace f ); void CleanUp( void ); void CleanEdges( void ); void CleanFaces( void ); void CleanVertices( void ); bool Collinear( tVertex a, tVertex b, tVertex c ); double Normz( tFace f ); void CheckEuler(int V, int E, int F ); void PrintPoint( tVertex p ); void Checks( void ); void Consistency( void ); void Convexity( void ); void PrintOut( tVertex v ); void PrintVertices( void ); void PrintEdges( void ); void PrintFaces( void ); void LowerFaces( void ); /*-------------------------------------------------------------------*/ int main( int argc, char *argv[] ) { // Chen Li for (int i = 1; i < argc; i++) { char option = argv[i][1]; switch (option) { case 'd': debug = true; check = true; std::cerr << "Debug and check mode\n"; break; case 'c': check = true; std::cerr << "Check mode\n"; break; case 'l': toLeda = true; std::cerr << "Output to Leda\n"; break; case 'L': fromLeda = true; std::cerr << "Input from Leda" << std::endl; break; default: std::cerr << "Usage: " << *argv << "-d[ebug] c[heck]\n" << "x y z coords of vertices from stdin\n"; exit(1); break; } } /* if ( argc > 1 && argv[1][0] == '-' ) { if( argv[1][1] == 'd' ) { debug = true; check = true; std::cerr << "Debug and check mode\n"; } if( argv[1][1] == 'c' ) { check = true; std::cerr << "Check mode\n"; } if( argv[1][1] == 'l' ) { toLeda = true; std::cerr << "Output to Leda\n"; } } else if ( argc > 1 && argv[1][0] != '-' ) { std::cout << "Usage: " << *argv << "-d[ebug] c[heck]\n" ; std::cout << "x y z coords of vertices from stdin\n"; exit(1); } */ ReadVertices(); DoubleTriangle(); ConstructHull(); LowerFaces(); if (toLeda) PrintToLeda(); else Print(); return 0; } void LowerFaces( void ) { tFace f = faces; /*int z;*/ int Flower = 0; /* Total number of lower faces. */ do { /*z = Normz( f ); if ( z < 0 ) {*/ if ( Normz( f ) < 0 ) { Flower++; f->lower = true; /*printf("z=%10d; lower face indices: %d, %d, %d\n", z, */ /*printf("lower face indices: %d, %d, %d\n", f->vertex[0]->vnum, f->vertex[1]->vnum, f->vertex[2]->vnum );*/ } else f->lower = false; f = f->next; } while ( f != faces ); /*printf("A total of %d lower faces identified.\n", Flower);*/ } /*--------------------------------------------------------------------- MakeNullVertex: Makes a vertex, nulls out fields. ---------------------------------------------------------------------*/ tVertex MakeNullVertex( void ) { tVertex v; //NEW( v, tsVertex ); v = new tsVertex; v->duplicate = NULL; v->onhull = !ONHULL; v->mark = !PROCESSED; ADD( vertices, v ); return v; } /*--------------------------------------------------------------------- ReadVertices: Reads in the vertices, and links them into a circular list with MakeNullVertex. There is no need for the # of vertices to be the first line: the function looks for EOF instead. Sets the global variable vertices via the ADD macro. ---------------------------------------------------------------------*/ void ReadVertices( void ) { tVertex v; //int x, y, z; double x, y, z; int vnum = 0; double r; while ( std::cin ) { if (fromLeda) { std::cin.get(); std::cin >> x; std::cin.get(); std::cin >> y; std::cin.get(); std::cin >> z; std::cin.get(); std::cin >> r; std::cin.get(); // std::cin >> ch >> x >> ch >> y >> ch >> z >> ch >> r >> ch; x /= r; y /= r; // z ignored since this program only process 2D case; } else { std::cin >> x >> y; } if (std::cin) { v = MakeNullVertex(); v->v[X] = x; v->v[Y] = y; z = x*x + y*y; v->v[Z] = z; v->vnum = vnum++; } } std::cerr << "# of vertices : " << vnum << std::endl; } /*--------------------------------------------------------------------- Print: Prints out the vertices and the faces. Uses the vnum indices corresponding to the order in which the vertices were input. Output is in PostScript format. ---------------------------------------------------------------------*/ void Print( void ) { /* Pointers to vertices, edges, faces. */ tVertex v; tEdge e; tFace f; double xmin, ymin, xmax, ymax; //double a[3], b[3]; /* used to compute normal vector */ /* Counters for Euler's formula. */ int V = 0, E = 0 , F = 0; /* Note: lowercase==pointer, uppercase==counter. */ /*-- find X min & max --*/ v = vertices; xmin = xmax = v->v[X]; do { if( v->v[X] > xmax ) xmax = v->v[X]; else if( v->v[X] < xmin ) xmin = v->v[X]; v = v->next; } while ( v != vertices ); /*-- find Y min & max --*/ v = vertices; ymin = ymax = v->v[Y]; do { if( v->v[Y] > ymax ) ymax = v->v[Y]; else if( v->v[Y] < ymin ) ymin = v->v[Y]; v = v->next; } while ( v != vertices ); double scale = 500 / ((xmax - xmin) >= (ymax - ymin) ? xmax - xmin : ymax - ymin); /* PostScript header */ std::cout << "%%!PS\n"; std::cout << "%%%%BoundingBox: " << xmin << ymin << xmax << ymax << std::endl; std::cout << ".00 .00 setlinewidth\n"; std::cout << -xmin*scale+100 << " " << -ymin*scale+100 << " translate\n"; /* The +72 shifts the figure one inch from the lower left corner */ std::cout << scale << " " << scale << " scale " << std::endl; /* Vertices. */ v = vertices; do { if( v->mark ) V++; v = v->next; } while ( v != vertices ); std::cout << "\n%%%% Vertices:\tV = " << V << std::endl; std::cout << "%%%% index:\tx\ty\tz\n"; do { std::cout << "%%%% " << v->vnum << ":\t" << v->v[X] << "\t" << v->v[Y] << "\t" << v->v[Z] << std::endl; std::cout << "newpath\n"; std::cout << v->v[X] << "\t" << v->v[Y] << " 2 0 360 arc\n"; std::cout << "closepath stroke\n\n"; v = v->next; } while ( v != vertices ); /* Faces. */ /* visible faces are printed as PS output */ f = faces; do { ++F; f = f ->next; } while ( f != faces ); std::cout << "\n%%%% Faces:\tF = " << F << std::endl; std::cout << "%%%% Visible faces only: \n"; do { /* Print face only if it is lower */ if ( f-> lower ) { std::cout << "%%%% vnums: " << f->vertex[0]->vnum << " " << f->vertex[1]->vnum << " " << f->vertex[2]->vnum << " " << std::endl; std::cout << "newpath\n"; std::cout << f->vertex[0]->v[X] << "\t" << f->vertex[0]->v[Y] << "\tmoveto\n"; std::cout << f->vertex[1]->v[X] << "\t" << f->vertex[1]->v[Y] << "\tlineto\n"; std::cout << f->vertex[2]->v[X] << "\t" << f->vertex[2]->v[Y] << "\tlineto\n", std::cout << "closepath stroke\n\n"; } f = f->next; } while ( f != faces ); /* prints a list of all faces */ std::cout << "%%%% List of all faces: \n"; std::cout << "%%%%\tv0\tv1\tv2\t(vertex indices)\n"; do { std::cout << "%%%%\t" << f->vertex[0]->vnum << "\t" << f->vertex[1]->vnum << "\t" << f->vertex[2]->vnum << std::endl; f = f->next; } while ( f != faces ); /* Edges. */ e = edges; do { E++; e = e->next; } while ( e != edges ); std::cout << "\n%%%% Edges:\tE = " << E << std::endl; /* Edges not printed out (but easily added). */ std::cout << "\nshowpage\n\n"; std::cout << "%%EOF\n"; check = true; CheckEuler( V, E, F ); } /*--------------------------------------------------------------------- SubVec: Computes a - b and puts it into c. ---------------------------------------------------------------------*/ void SubVec( double a[3], double b[3], double c[3]) { int i; for( i=0; i < 2; i++ ) c[i] = a[i] - b[i]; } /*--------------------------------------------------------------------- DoubleTriangle builds the initial double triangle. It first finds 3 noncollinear points and makes two faces out of them, in opposite order. It then finds a fourth point that is not coplanar with that face. The vertices are stored in the face structure in counterclockwise order so that the volume between the face and the point is negative. Lastly, the 3 newfaces to the fourth point are constructed and the data structures are cleaned up. ---------------------------------------------------------------------*/ void DoubleTriangle( void ) { tVertex v0, v1, v2, v3; tFace f0, f1 = NULL; int vol; /* Find 3 non-Collinear points. */ v0 = vertices; while ( Collinear( v0, v0->next, v0->next->next ) ) if ( ( v0 = v0->next ) == vertices ) { std::cout << "DoubleTriangle: All points are Collinear!\n"; exit(0); } v1 = v0->next; v2 = v1->next; /* Mark the vertices as processed. */ v0->mark = PROCESSED; v1->mark = PROCESSED; v2->mark = PROCESSED; /* Create the two "twin" faces. */ f0 = MakeFace( v0, v1, v2, f1 ); f1 = MakeFace( v2, v1, v0, f0 ); /* Link adjacent face fields. */ f0->edge[0]->adjface[1] = f1; f0->edge[1]->adjface[1] = f1; f0->edge[2]->adjface[1] = f1; f1->edge[0]->adjface[1] = f0; f1->edge[1]->adjface[1] = f0; f1->edge[2]->adjface[1] = f0; /* Find a fourth, non-coplanar point to form tetrahedron. */ v3 = v2->next; vol = VolumeSign( f0, v3 ); while ( !vol ) { if ( ( v3 = v3->next ) == v0 ) { std::cout << "DoubleTriangle: All points are coplanar!\n"; exit(0); } vol = VolumeSign( f0, v3 ); } /* Insure that v3 will be the first added. */ vertices = v3; if ( debug ) { std::cerr << "DoubleTriangle: finished. Head repositioned at v3.\n"; PrintOut( vertices ); } } /*--------------------------------------------------------------------- ConstructHull adds the vertices to the hull one at a time. The hull vertices are those in the list marked as onhull. ---------------------------------------------------------------------*/ void ConstructHull( void ) { tVertex v, vnext; bool changed; /* T if addition changes hull; not used. */ v = vertices; do { vnext = v->next; if ( !v->mark ) { v->mark = PROCESSED; changed = AddOne( v ); CleanUp(); if ( check ) { std::cerr << "ConstructHull: After Add of " << v->vnum << " & Cleanup:\n"; Checks(); } if ( debug ) PrintOut( v ); } v = vnext; } while ( v != vertices ); } /*--------------------------------------------------------------------- AddOne is passed a vertex. It first determines all faces visible from that point. If none are visible then the point is marked as not onhull. Next is a loop over edges. If both faces adjacent to an edge are visible, then the edge is marked for deletion. If just one of the adjacent faces is visible then a new face is constructed. ---------------------------------------------------------------------*/ bool AddOne( tVertex p ) { tFace f; tEdge e; int vol; bool vis = false; if ( debug ) { std::cerr << "AddOne: starting to add v" << p->vnum << ".\n"; PrintOut( vertices ); } /* Mark faces visible from p. */ f = faces; do { vol = VolumeSign( f, p ); if (debug) std::cerr << "faddr: " << f << " paddr: " << p << " Vol = " << vol << std::endl; if ( vol < 0 ) { f->visible = VISIBLE; vis = true; } f = f->next; } while ( f != faces ); /* If no faces are visible from p, then p is inside the hull. */ if ( !vis ) { p->onhull = !ONHULL; return false; } /* Mark edges in interior of visible region for deletion. Erect a newface based on each border edge. */ e = edges; do { tEdge temp; temp = e->next; if ( e->adjface[0]->visible && e->adjface[1]->visible ) /* e interior: mark for deletion. */ e->delete_bit = REMOVED; else if ( e->adjface[0]->visible || e->adjface[1]->visible ) /* e border: make a new face. */ e->newface = MakeConeFace( e, p ); e = temp; } while ( e != edges ); return true; } /*--------------------------------------------------------------------- VolumeSign returns the sign of the volume of the tetrahedron determined by f and p. VolumeSign is +1 iff p is on the negative side of f, where the positive side is determined by the rh-rule. So the volume is positive if the ccw normal to f points outside the tetrahedron. The final fewer-multiplications form is due to Robert Fraczkiewicz. ---------------------------------------------------------------------*/ int VolumeSign( tFace f, tVertex p ) { double vol; int voli = 0; double ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz; double bxdx, bydy, bzdz, cxdx, cydy, czdz; ax = f->vertex[0]->v[X]; ay = f->vertex[0]->v[Y]; az = f->vertex[0]->v[Z]; bx = f->vertex[1]->v[X]; by = f->vertex[1]->v[Y]; bz = f->vertex[1]->v[Z]; cx = f->vertex[2]->v[X]; cy = f->vertex[2]->v[Y]; cz = f->vertex[2]->v[Z]; dx = p->v[X]; dy = p->v[Y]; dz = p->v[Z]; bxdx=bx-dx; bydy=by-dy; bzdz=bz-dz; cxdx=cx-dx; cydy=cy-dy; czdz=cz-dz; vol = (az-dz) * (bxdx*cydy - bydy*cxdx) + (ay-dy) * (bzdz*cxdx - bxdx*czdz) + (ax-dx) * (bydy*czdz - bzdz*cydy); if ( debug ) std::cerr << "Face=" << f << "; Vertex=" << p->vnum << ": vol(int) = " << voli << ", vol(double) = " << vol << std::endl; /* The volume should be an integer. */ if ( vol > 0.5 ) return 1; else if ( vol < -0.5 ) return -1; else return 0; } /*---------------------------------------------------------------------*/ double Volumei( tFace f, tVertex p ) { //int vol; //int ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz; //int bxdx, bydy, bzdz, cxdx, cydy, czdz; double vol; double ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz; double bxdx, bydy, bzdz, cxdx, cydy, czdz; double vold; ax = f->vertex[0]->v[X]; ay = f->vertex[0]->v[Y]; az = f->vertex[0]->v[Z]; bx = f->vertex[1]->v[X]; by = f->vertex[1]->v[Y]; bz = f->vertex[1]->v[Z]; cx = f->vertex[2]->v[X]; cy = f->vertex[2]->v[Y]; cz = f->vertex[2]->v[Z]; dx = p->v[X]; dy = p->v[Y]; dz = p->v[Z]; bxdx=bx-dx; bydy=by-dy; bzdz=bz-dz; cxdx=cx-dx; cydy=cy-dy; czdz=cz-dz; vol = (az-dz)*(bxdx*cydy-bydy*cxdx) + (ay-dy)*(bzdz*cxdx-bxdx*czdz) + (ax-dx)*(bydy*czdz-bzdz*cydy); return vol; } /*--------------------------------------------------------------------- Volumed is the same as VolumeSign but computed with doubles. For protection against overflow. ---------------------------------------------------------------------*/ double Volumed( tFace f, tVertex p ) { double vol; double ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz; double bxdx, bydy, bzdz, cxdx, cydy, czdz; ax = f->vertex[0]->v[X]; ay = f->vertex[0]->v[Y]; az = f->vertex[0]->v[Z]; bx = f->vertex[1]->v[X]; by = f->vertex[1]->v[Y]; bz = f->vertex[1]->v[Z]; cx = f->vertex[2]->v[X]; cy = f->vertex[2]->v[Y]; cz = f->vertex[2]->v[Z]; dx = p->v[X]; dy = p->v[Y]; dz = p->v[Z]; bxdx=bx-dx; bydy=by-dy; bzdz=bz-dz; cxdx=cx-dx; cydy=cy-dy; czdz=cz-dz; vol = (az-dz)*(bxdx*cydy-bydy*cxdx) + (ay-dy)*(bzdz*cxdx-bxdx*czdz) + (ax-dx)*(bydy*czdz-bzdz*cydy); return vol; } /*-------------------------------------------------------------------*/ void PrintPoint( tVertex p ) { int i; for ( i = 0; i < 3; i++ ) std::cout << "\t" << p->v[i]; putchar('\n'); } /*--------------------------------------------------------------------- MakeConeFace makes a new face and two new edges between the edge and the point that are passed to it. It returns a pointer to the new face. ---------------------------------------------------------------------*/ tFace MakeConeFace( tEdge e, tVertex p ) { tEdge new_edge[2]; tFace new_face; int i, j; /* Make two new edges (if don't already exist). */ for ( i=0; i < 2; ++i ) /* If the edge exists, copy it into new_edge. */ if ( !( new_edge[i] = e->endpts[i]->duplicate) ) { /* Otherwise (duplicate is NULL), MakeNullEdge. */ new_edge[i] = MakeNullEdge(); new_edge[i]->endpts[0] = e->endpts[i]; new_edge[i]->endpts[1] = p; e->endpts[i]->duplicate = new_edge[i]; } /* Make the new face. */ new_face = MakeNullFace(); new_face->edge[0] = e; new_face->edge[1] = new_edge[0]; new_face->edge[2] = new_edge[1]; MakeCcw( new_face, e, p ); /* Set the adjacent face pointers. */ for ( i=0; i < 2; ++i ) for ( j=0; j < 2; ++j ) /* Only one NULL link should be set to new_face. */ if ( !new_edge[i]->adjface[j] ) { new_edge[i]->adjface[j] = new_face; break; } return new_face; } /*--------------------------------------------------------------------- MakeCcw puts the vertices in the face structure in counterclock wise order. We want to store the vertices in the same order as in the visible face. The third vertex is always p. ---------------------------------------------------------------------*/ void MakeCcw( tFace f, tEdge e, tVertex p ) { tFace fv; /* The visible face adjacent to e */ int i; /* Index of e->endpoint[0] in fv. */ tEdge s; /* Temporary, for swapping */ if ( e->adjface[0]->visible ) fv = e->adjface[0]; else fv = e->adjface[1]; /* Set vertex[0] & [1] of f to have the same orientation as do the corresponding vertices of fv. */ for ( i=0; fv->vertex[i] != e->endpts[0]; ++i ) ; /* Orient f the same as fv. */ if ( fv->vertex[ (i+1) % 3 ] != e->endpts[1] ) { f->vertex[0] = e->endpts[1]; f->vertex[1] = e->endpts[0]; } else { f->vertex[0] = e->endpts[0]; f->vertex[1] = e->endpts[1]; SWAP( s, f->edge[1], f->edge[2] ); } /* This swap is tricky. e is edge[0]. edge[1] is based on endpt[0], edge[2] on endpt[1]. So if e is oriented "forwards," we need to move edge[1] to follow [0], because it precedes. */ f->vertex[2] = p; } /*--------------------------------------------------------------------- MakeNullEdge creates a new cell and initializes all pointers to NULL and sets all flags to off. It returns a pointer to the empty cell. ---------------------------------------------------------------------*/ tEdge MakeNullEdge( void ) { tEdge e; //NEW( e, tsEdge ); e = new tsEdge; e->adjface[0] = e->adjface[1] = e->newface = NULL; e->endpts[0] = e->endpts[1] = NULL; e->delete_bit = !REMOVED; ADD( edges, e ); return e; } /*-------------------------------------------------------------------- MakeNullFace creates a new face structure and initializes all of its flags to NULL and sets all the flags to off. It returns a pointer to the empty cell. ---------------------------------------------------------------------*/ tFace MakeNullFace( void ) { tFace f; int i; //NEW( f, tsFace); f = new tsFace; for ( i=0; i < 3; ++i ) { f->edge[i] = NULL; f->vertex[i] = NULL; } f->visible = !VISIBLE; ADD( faces, f ); return f; } /*--------------------------------------------------------------------- MakeFace creates a new face structure from three vertices (in ccw order). It returns a pointer to the face. ---------------------------------------------------------------------*/ tFace MakeFace( tVertex v0, tVertex v1, tVertex v2, tFace fold ) { tFace f; tEdge e0, e1, e2; /* Create edges of the initial triangle. */ if( !fold ) { e0 = MakeNullEdge(); e1 = MakeNullEdge(); e2 = MakeNullEdge(); } else { /* Copy from fold, in reverse order. */ e0 = fold->edge[2]; e1 = fold->edge[1]; e2 = fold->edge[0]; } e0->endpts[0] = v0; e0->endpts[1] = v1; e1->endpts[0] = v1; e1->endpts[1] = v2; e2->endpts[0] = v2; e2->endpts[1] = v0; /* Create face for triangle. */ f = MakeNullFace(); f->edge[0] = e0; f->edge[1] = e1; f->edge[2] = e2; f->vertex[0] = v0; f->vertex[1] = v1; f->vertex[2] = v2; /* Link edges to face. */ e0->adjface[0] = e1->adjface[0] = e2->adjface[0] = f; return f; } /*--------------------------------------------------------------------- CleanUp goes through each data structure list and clears all flags and NULLs out some pointers. The order of processing (edges, faces, vertices) is important. ---------------------------------------------------------------------*/ void CleanUp( void ) { CleanEdges(); CleanFaces(); CleanVertices(); } /*--------------------------------------------------------------------- CleanEdges runs through the edge list and cleans up the structure. If there is a newface then it will put that face in place of the visible face and NULL out newface. It also deletes so marked edges. ---------------------------------------------------------------------*/ void CleanEdges( void ) { tEdge e; /* Primary index into edge list. */ tEdge t; /* Temporary edge pointer. */ /* Integrate the newface's into the data structure. */ /* Check every edge. */ e = edges; do { if ( e->newface ) { if ( e->adjface[0]->visible ) e->adjface[0] = e->newface; else e->adjface[1] = e->newface; e->newface = NULL; } e = e->next; } while ( e != edges ); /* Delete any edges marked for deletion. */ while ( edges && edges->delete_bit ) { e = edges; DELETE( edges, e ); } e = edges->next; do { if ( e->delete_bit ) { t = e; e = e->next; DELETE( edges, t ); } else e = e->next; } while ( e != edges ); } /*--------------------------------------------------------------------- CleanFaces runs through the face list and deletes any face marked visible. ---------------------------------------------------------------------*/ void CleanFaces( void ) { tFace f; /* Primary pointer into face list. */ tFace t; /* Temporary pointer, for deleting. */ while ( faces && faces->visible ) { f = faces; DELETE( faces, f ); } f = faces->next; do { if ( f->visible ) { t = f; f = f->next; DELETE( faces, t ); } else f = f->next; } while ( f != faces ); } /*--------------------------------------------------------------------- CleanVertices runs through the vertex list and deletes the vertices that are marked as processed but are not incident to any undeleted edges. ---------------------------------------------------------------------*/ void CleanVertices( void ) { tEdge e; tVertex v, t; /* Mark all vertices incident to some undeleted edge as on the hull. */ e = edges; do { e->endpts[0]->onhull = e->endpts[1]->onhull = ONHULL; e = e->next; } while (e != edges); /* Delete all vertices that have been processed but are not on the hull. */ while ( vertices && vertices->mark && !vertices->onhull ) { v = vertices; DELETE( vertices, v ); } v = vertices->next; do { if ( v->mark && !v->onhull ) { t = v; v = v->next; DELETE( vertices, t ) } else v = v->next; } while ( v != vertices ); /* Reset flags. */ v = vertices; do { v->duplicate = NULL; v->onhull = !ONHULL; v = v->next; } while ( v != vertices ); } /*--------------------------------------------------------------------- Collinear checks to see if the three points given are collinear, by checking to see if each element of the cross product is zero. ---------------------------------------------------------------------*/ bool Collinear( tVertex a, tVertex b, tVertex c ) { return ( c->v[Z] - a->v[Z] ) * ( b->v[Y] - a->v[Y] ) - ( b->v[Z] - a->v[Z] ) * ( c->v[Y] - a->v[Y] ) == 0 && ( b->v[Z] - a->v[Z] ) * ( c->v[X] - a->v[X] ) - ( b->v[X] - a->v[X] ) * ( c->v[Z] - a->v[Z] ) == 0 && ( b->v[X] - a->v[X] ) * ( c->v[Y] - a->v[Y] ) - ( b->v[Y] - a->v[Y] ) * ( c->v[X] - a->v[X] ) == 0 ; } /*--------------------------------------------------------------------- Computes the z-coordinate of the vector normal to face f. ---------------------------------------------------------------------*/ double Normz( tFace f ) { tVertex a, b, c; /*double ba0, ca1, ba1, ca0,z;*/ a = f->vertex[0]; b = f->vertex[1]; c = f->vertex[2]; /* ba0 = ( b->v[X] - a->v[X] ); ca1 = ( c->v[Y] - a->v[Y] ); ba1 = ( b->v[Y] - a->v[Y] ); ca0 = ( c->v[X] - a->v[X] ); z = ba0 * ca1 - ba1 * ca0; printf("Normz = %lf=%g\n", z,z); if ( z > 0.0 ) return 1; else if ( z < 0.0 ) return -1; else return 0; */ return ( b->v[X] - a->v[X] ) * ( c->v[Y] - a->v[Y] ) - ( b->v[Y] - a->v[Y] ) * ( c->v[X] - a->v[X] ); } /*--------------------------------------------------------------------- Consistency runs through the edge list and checks that all adjacent faces have their endpoints in opposite order. This verifies that the vertices are in counterclockwise order. ---------------------------------------------------------------------*/ void Consistency( void ) { register tEdge e; register int i, j; e = edges; do { /* find index of endpoint[0] in adjacent face[0] */ for ( i = 0; e->adjface[0]->vertex[i] != e->endpts[0]; ++i ) ; /* find index of endpoint[0] in adjacent face[1] */ for ( j = 0; e->adjface[1]->vertex[j] != e->endpts[0]; ++j ) ; /* check if the endpoints occur in opposite order */ if ( !( e->adjface[0]->vertex[ (i+1) % 3 ] == e->adjface[1]->vertex[ (j+2) % 3 ] || e->adjface[0]->vertex[ (i+2) % 3 ] == e->adjface[1]->vertex[ (j+1) % 3 ] ) ) break; e = e->next; } while ( e != edges ); if ( e != edges ) std::cerr << "Checks: edges are NOT consistent.\n"; else std::cerr << "Checks: edges consistent.\n"; } /*--------------------------------------------------------------------- Convexity checks that the volume between every face and every point is negative. This shows that each point is inside every face and therefore the hull is convex. ---------------------------------------------------------------------*/ void Convexity( void ) { register tFace f; register tVertex v; int vol; f = faces; do { v = vertices; do { if ( v->mark ) { vol = VolumeSign( f, v ); if ( vol < 0 ) break; } v = v->next; } while ( v != vertices ); f = f->next; } while ( f != faces ); if ( f != faces ) std::cerr << "Checks: NOT convex.\n"; else if ( check ) std::cerr << "Checks: convex.\n"; } /*--------------------------------------------------------------------- CheckEuler checks Euler's relation, as well as its implications when all faces are known to be triangles. Only prints positive information when debug is true, but always prints negative information. ---------------------------------------------------------------------*/ void CheckEuler( int V, int E, int F ) { if ( check ) std::cerr << "Checks: V, E, F = " << V << " " << E << " " << F << ":\t"; if ( (V - E + F) != 2 ) std::cerr << "Checks: V-E+F != 2\n"; else if ( check ) std::cerr << "V-E+F = 2\t"; if ( F != (2 * V - 4) ) std::cerr << "Checks: F=" << F << " != 2V-4=" << 2*V-4 << "; V=" << V << std::endl; else if ( check ) std::cerr << "F = 2V-4\t"; if ( (2 * E) != (3 * F) ) std::cerr << "Checks: 2E=" << 2*E << " != 3F=" << 3*F << "; E=" << E << ", F=" << F << std::endl; else if ( check ) std::cerr << "2E = 3F\n"; } /*-------------------------------------------------------------------*/ void Checks( void ) { tVertex v; tEdge e; tFace f; int V = 0, E = 0 , F = 0; Consistency(); Convexity(); if ( (v = vertices) != NULL ) do { if (v->mark) V++; v = v->next; } while ( v != vertices ); if ( (e = edges) != NULL ) do { E++; e = e->next; } while ( e != edges ); if ( (f = faces) != NULL ) do { F++; f = f ->next; } while ( f != faces ); CheckEuler( V, E, F ); } /*=================================================================== These functions are used whenever the debug flag is set. They print out the entire contents of each data structure. Printing is to standard error. To grab the output in a file in the csh, use this: chull < i.file >&! o.file =====================================================================*/ /*-------------------------------------------------------------------*/ void PrintOut( tVertex v ) { std::cerr << "\nHead vertex " << v->vnum << " = " << v << " :\n"; PrintVertices(); PrintEdges(); PrintFaces(); } /*-------------------------------------------------------------------*/ void PrintVertices( void ) { tVertex temp; temp = vertices; std::cerr << "Vertex List\n"; if (vertices) do { std::cerr << " addr " << vertices << "\t"; std::cerr << " vnum " << vertices->vnum; std::cerr << " (" << vertices->v[X] << "," << vertices->v[Y] << "," << vertices->v[Z] << ")"; std::cerr << " active:" << vertices->onhull; std::cerr << " dup:" << vertices->duplicate; std::cerr << " mark:" << vertices->mark << std::endl; vertices = vertices->next; } while ( vertices != temp ); } /*-------------------------------------------------------------------*/ void PrintEdges( void ) { tEdge temp; int i; temp = edges; std::cerr << "Edge List\n"; if (edges) do { std::cerr << " addr: " << edges << "\t"; std::cerr << "adj: "; for (i=0; i<2; ++i) std::cerr << edges->adjface[i]; std::cerr << " endpts:"; for (i=0; i<2; ++i) std::cerr << edges->endpts[i]->vnum; std::cerr << " del:" << edges->delete_bit << std::endl; edges = edges->next; } while (edges != temp ); } /*-------------------------------------------------------------------*/ void PrintFaces( void ) { int i; tFace temp; temp = faces; std::cerr << "Face List\n"; if (faces) do { std::cerr << " addr: " << faces << "\t"; std::cerr << " edges:"; for( i=0; i<3; ++i ) std::cerr << faces->edge[i]; std::cerr << " vert:"; for ( i=0; i<3; ++i) std::cerr << faces->vertex[i]->vnum; std::cerr << " vis: " << faces->visible << std::endl; faces= faces->next; } while ( faces != temp ); } /*-------------------------------------------------------------------*/ void PrintToLeda( void ) { tVertex temp; temp = vertices; if (vertices) do { std::cout << "(" << vertices->v[X] << ", " << vertices->v[Y] << ", " << vertices->v[Z] << ", " << HOMOGENIZING_FACTOR << ") \n"; vertices = vertices->next; } while ( vertices != temp ); } core++-1.7/progs/delaunay/dt4.cpp0100644000175000001440000000443407662553302016141 0ustar joachimusers/* File: dt4.cc (modified by Chen Li on 09/15/99) Not: This program is from O'Rourke's book. Some changes are made in order to utilize CORE library: 1. use double or long instead of float and int, so that the critical variables can be automatically promoted. 2. change printf and scanf to stream I/O operations. Usage: dt4 < input_file > output_file Input: as above. Output: print to the standard output the delaunay triangles and the total number of faces found. */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE.h" #define NMAX 1001 int main() { double x[NMAX],y[NMAX],z[NMAX];/* input points xy,z=x^2+y^2 */ int n; /* number of input points */ int i, j, k, m; /* indices of four points */ double xn, yn, zn; /* outward vector normal to (i,j,k) */ int flag; /* t if m above of (i,j,k) */ int F = 0; /* # of lower faces */ /* Input points and compute z = x^2 + y^2. */ /* original code: scanf("%d", &n); for ( i = 0; i < n; i++ ) { scanf("%d %d", &x[i], &y[i]); z[i] = x[i] * x[i] + y[i] * y[i]; } */ n = 0; while ((std::cin) && (n < NMAX)) { std::cin >> x[n] >> y[n]; if (std::cin) { z[n] = x[n] * x[n] + y[n] * y[n]; n++; } } std::cout << "n = " << n << std::endl; if (std::cin) { // not all have been read in std::cerr << "ERROR: input array range overflow" << std::endl; exit(1); } /* For each triple (i,j,k) */ for ( i = 0; i < n - 2; i++ ) for ( j = i + 1; j < n; j++ ) for ( k = i + 1; k < n; k++ ) if ( j != k ) { /* Compute normal to triangle (i,j,k). */ xn = (y[j]-y[i])*(z[k]-z[i]) - (y[k]-y[i])*(z[j]-z[i]); yn = (x[k]-x[i])*(z[j]-z[i]) - (x[j]-x[i])*(z[k]-z[i]); zn = (x[j]-x[i])*(y[k]-y[i]) - (x[k]-x[i])*(y[j]-y[i]); /* Only examine faces on bottom of paraboloid: zn < 0. */ flag = (zn < 0); if ( flag ) /* For each other point m */ for (m = 0; m < n; m++) /* Check if m above (i,j,k). */ flag = flag && ((x[m]-x[i])*xn + (y[m]-y[i])*yn + (z[m]-z[i])*zn <= 0); if (flag) { /* printf("z=%10d; lower face indices: %d, %d, %d\n", zn, i, j, k); */ std::cout << "z=" << zn <<"; lower face indices: " << i << ", " << j << ", " << k << std::endl; F++; } } printf("A total of %d lower faces found.\n", F); return 0; } core++-1.7/progs/delaunay/macros.h0100644000175000001440000000171507674167127016407 0ustar joachimusers/*==================================================================== macros.h macros used to access data structures and perform quick tests. ====================================================================*/ /* general-purpose macros */ #define SWAP(t,x,y) { t = x; x = y; y = t; } #define NEW(p,type) if ((p=(type *) malloc (sizeof(type))) == NULL) {\ printf ("Out of Memory!\n");\ exit(0);\ } #define FREE(p) if (p) { free ((char *) p); p = NULL; } #define ADD( head, p ) if ( head ) { \ p->next = head; \ p->prev = head->prev; \ head->prev = p; \ p->prev->next = p; \ } \ else { \ head = p; \ head->next = head->prev = p; \ } #ifdef DELETE #undef DELETE #endif #define DELETE( head, p ) if ( head ) { \ if ( head == head->next ) \ head = NULL; \ else if ( p == head ) \ head = head->next; \ p->next->prev = p->prev; \ p->prev->next = p->next; \ FREE( p ); \ } core++-1.7/progs/delaunay/inputs/0040755000175000001440000000000010147210064016245 5ustar joachimuserscore++-1.7/progs/delaunay/inputs/README0100644000175000001440000000031207437361201017126 0ustar joachimusersInput files: i10: 10 random 2D points i100: 100 random 2D points circ12: 12 co-circular points circ20: 20 co-circular points I10: 10 random points (leda format) I100: 100 random points (leda format) core++-1.7/progs/delaunay/inputs/circ120100644000175000001440000000026407437361201017262 0ustar joachimusers 5 0 4 3 3 4 0 5 -3 4 -4 3 -5 0 -4 -3 -3 -4 0 -5 3 -4 4 -3 core++-1.7/progs/delaunay/inputs/circ200100644000175000001440000000052407437361201017260 0ustar joachimusers 65 0 60 25 52 39 39 52 25 60 0 65 -25 60 -39 52 -52 39 -60 25 -65 0 -60 -25 -52 -39 -39 -52 -25 -60 0 -65 25 -60 39 -52 52 -39 60 -25 core++-1.7/progs/delaunay/inputs/i100100644000175000001440000000022607437361201016566 0ustar joachimusers 31 -76 -13 21 -63 -83 -5 -66 87 -94 40 71 23 -46 64 -80 0 -57 -14 2 core++-1.7/progs/delaunay/inputs/i1000100644000175000001440000000372007437361201016650 0ustar joachimusers -81 82 -97 78 -65 94 -60 -78 -94 89 83 42 96 -97 86 -22 -57 27 80 -76 -1 -58 19 -55 -87 -20 -75 19 39 24 50 8 20 4 11 -8 -19 33 23 13 80 -87 -80 32 -63 44 -51 68 -18 8 4 -41 -31 79 -63 -8 -18 71 -45 -4 -50 -24 -13 -5 68 31 30 80 -89 -38 -84 66 28 -64 46 -28 -44 52 -2 -92 -45 -43 -76 43 23 12 69 -57 82 -47 4 -31 -14 97 -53 43 -2 98 21 -3 -59 50 -65 73 23 -2 43 -33 44 -50 -93 53 -64 -60 -1 -14 -66 83 22 4 -82 44 68 78 -35 1 -27 -54 22 89 -73 96 98 -68 66 30 -21 64 89 -13 96 3 54 -27 -14 36 14 -90 -90 32 53 58 -48 56 88 23 -88 -97 -83 91 26 88 81 42 -85 -71 50 42 31 51 1 5 -32 56 -33 45 94 56 -11 73 -32 0 50 -18 6 -3 99 -53 1 77 35 -21 27 46 -23 -86 49 -91 -76 -3 core++-1.7/progs/delaunay/outputs/0040755000175000001440000000000010147210064016446 5ustar joachimuserscore++-1.7/progs/delaunay/outputs/README0100644000175000001440000000010207444161407017330 0ustar joachimusersREADME file This directory contains outputs from sample programs core++-1.7/progs/demos/0040755000175000001440000000000010147210064014230 5ustar joachimuserscore++-1.7/progs/demos/Makefile0100644000175000001440000000373710144727367015717 0ustar joachimusers# Makefile for testPoint # # Core Library, $Id: Makefile,v 1.8 2004/11/11 18:27:03 exact Exp $ include ../Make.options #================================================= # Define variables #================================================= p=pointOnPlane p=simple p=golden p=scheinerman ifile=i arg= < inputs/${ifile} arg= LEV=1 LEV=3 TARGETS= scheinerman${LEV} MORETARGETS= simple${LEV} pointOnPlane${LEV} golden #================================================= # Define targets #================================================= default: $(TARGETS) test: $(TARGETS) ./scheinerman${LEV} moretest: $(MORETARGETS) ./simple${LEV} ./pointOnPlane${LEV} ./golden all: $(TARGETS) $(MORETARGETS) p: ${p} ./${p}${LEV} ${arg} ${p}: ${p}.o pointOnCircle: pointOnCircle.o pointOnPlane${LEV}: pointOnPlane.o scheinerman${LEV}: scheinerman.o golden: golden.o simple: simple.o t: t.o #================================================= # Rules #================================================= %${LEV}: %.o ${CXX} $(LDFLAGS) $< -lcorex++$(VAR)_level${LEV} $(CORE_LIB) -o $@ %: %.o ${CXX} $(LDFLAGS) $< -lcorex++$(VAR)_level${LEV} $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) -DCORE_LEVEL=${LEV} $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) $(MORETARGETS:=$(EXETYPE)) veryclean: clean echo "EXEPROGS=" $(EXEPROGS) -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) -@rm -f simple1$(EXETYPE) simple3$(EXETYPE) simple$(EXETYPE) -@rm -f golden1$(EXETYPE) golden3$(EXETYPE) golden$(EXETYPE) -@rm -f scheinerman1$(EXETYPE) scheinerman3$(EXETYPE) scheinerman$(EXETYPE) -@rm -f pointOnPlane1$(EXETYPE) pointOnPlane3$(EXETYPE) pointOnPlane$(EXETYPE) save: ci -l -m"Make save" Makefile *.cpp README core++-1.7/progs/demos/README0100644000175000001440000000265110130141617015110 0ustar joachimusersREADME file for demos Core Library: $Id: README,v 1.3 2004/10/04 03:29:19 exact Exp $ ================================================================== These are simple programs to demo the basic capabilities of the Core Library. I use some of these as demos in my talks. Chee ================================================================== To make and test all the test program, do % make test % make moretest The default CORE_LEVEL is 3, but you can compile and test the same programs at CORE_LEVEL 1 by doing % make veryclean % make all LEV=1 % make test ================================================================== PROGRAMS: 1. simple.cpp -- to show CORE comparison of the expressions sqrt(x)+sqrt(y) : sqrt(x+y + 2*sqrt(xy)) for various values of x and y. -- in Level 3, they are all equal, and in Level 1, they are mostly unequal. 2. pointOnPlane.cpp -- if you compute the intersection of a line and a plane, and test if the intersection is on the plane, what is the probability that you get the correct response? -- about 66% 3. scheinerman.cpp -- an imaginary conversation between a student and teacher in which the teacher convinces the student that you cannot prove algebraic identities by numerical approximation (Adapted from a paper by Ed Scheinerman) 4. golden.cpp -- some simple tests with the golden ratio ================================================================== core++-1.7/progs/demos/golden.cpp0100644000175000001440000000312310130300455016174 0ustar joachimusers/* ************************************************ File: golden.cpp Purpose: Simple Demo Program Usage: % simple Since Core Library $Id: golden.cpp,v 1.3 2004/10/04 16:58:21 exact Exp $ ************************************************ */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" // this must appear after the standard headers using namespace std; typedef BigInt NT; typedef Polynomial Poly; int main() { ////////////////////////////////////////////////////////////// // Golden Ratio Test ////////////////////////////////////////////////////////////// NT c[] = {-1, -1, 1}; Poly P(2,c); double phi = rootOf(P,2); cout << "==============================================" << endl; cout << "GOLDEN RATIO TESTS" << endl; cout << "==============================================" << endl; cout << "Golden ratio, phi = " << phi << endl; if (phi*phi - phi - 1 == 0) cout << "CORRECT! phi^2 = 1+ phi" << endl; else cout << "ERROR! phi^2 != 1+ phi" << endl; ////////////////////////////////////////////////////////////// // A random polynomial test ////////////////////////////////////////////////////////////// NT cc[] = {123, 23, 3, -2}; Poly Q(3,cc); double theta = rootOf(Q,0); cout << "Polynomial Q(X) = "; Q.mapleDump(); cout << "r = rootOf(Q,0) = " << theta << endl; double theta2 = theta*theta; if (2*theta*theta2 == 3*theta2 + 23*theta + NT(123) ) cout << "CORRECT! 2*rrr == 3rr + 23r + 123" << endl; else cout << "ERROR! 2*rrr != 3rr + 23r + 123" << endl; return 0; } core++-1.7/progs/demos/pointOnPlane.cpp0100644000175000001440000000415310033047775017355 0ustar joachimusers/*************************************************************** * File: pointOnPlane.cpp * Author: Chee Yap * Chen Li * Date: 12/98 * Desc: Determine the intersection point of the plane * P: sqrt(2)*x + y + z - 1 = 0 * and the line: * L : (0, 0, 0) --- (sqrt(i), j*sqrt(j), 3) * where i, j is in the range [1, N). * is really on the plane P. (Set N=32 in this test) * * $Id: pointOnPlane.cpp,v 1.1 2004/04/01 17:23:09 exact Exp $ **************************************************************/ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" #include "CORE/geometry3d.h" using namespace std; const static int N = 32; // The following program // (1) shoots N*N rays from the origin, // (2) compute their intersections with a plane P and // (3) check if the intersection points lie on the plane P // In CORE_LEVEL 3, they ought to lie on P every time. int main() { const Point3d origin(0, 0, 0); Plane3d P(sqrt(2.0), 1.0, 1.0, -1.0); int counter=0; for (int i=1; i<=N; i++) { for (int j=1; j<=N; j++) { //Vector v(i, j*sqrt(j), 3.0); //Line3d L(origin, v); Line3d L(origin, Vector(i, j*sqrt(double(j)), 3.0)); Point3d* intp = (Point3d*)P.intersection(L); //cout << "p=" << *intp << endl; if (P.contains(*intp)) counter ++; } } cout << "++++++++++++++++++++++++++++++++++++++++++++++" << endl; cout << "> Equation of Plane P is Sqrt(2)*X + Y + Z - 1 = 0" << endl; cout << "> Number of points on plane P = " << counter << endl; cout << "> Number of points NOT on Plane P = " << N*N-counter << endl; if (counter < N*N) { cout << " INCORRECT!" ; if (CORE_LEVEL != 3) cout << " (As expected, when not in CORE_LEVEL 3) " << endl; else cout << " (BAD!! Should not happen in CORE_LEVEL 3)" << endl; } else cout << " CORRECT! (not a single error)" << endl; cout << "++++++++++++++++++++++++++++++++++++++++++++++" << endl; return 0; } core++-1.7/progs/demos/scheinerman.cpp0100644000175000001440000001517410130300455017231 0ustar joachimusers/*************************************************************** * File: scheinerman.cpp * Author: Chee Yap * * Description: * Based on a paper by E.R. Scheinerman, * ``When Close Enough is Close Enough'' * Amer.Math.Monthly, 107(2000)489--499. * * There is an imaginary conversation between a student * who tried to prove an algebraic identity by numerical * approximation, and teacher who insists that it is the * wrong way to prove such identities. * * Their conversation has been paraphrased to suit Core Library: * * Date: Apr 14, 2004 * Since Core Library Version 1.7 * $Id: scheinerman.cpp,v 1.4 2004/10/04 16:58:21 exact Exp $ **************************************************************/ #include "CORE/CORE.h" using namespace std; int main() { // **************************************************************************** // Set the output to show 10 digits (like the calculator) // **************************************************************************** cout << "==============================================" << endl; cout << "SCHEINERMAN'S TEST" << endl; cout << "==============================================" << endl; setDefaultOutputDigits(10); cout << "########### Output Digits = 10" << endl; // **************************************************************************** // TEACHER: Show that sqrt(2) + sqrt(5 - 2* sqrt(6)) = sqrt(3) // **************************************************************************** double X = sqrt(Expr(2)) + sqrt(5 - 2* sqrt(Expr(6))); double Y = sqrt(double(3)); cout << "\n X = sqrt(2) + sqrt(5-2 sqrt(6)) \n" << " = " << X << endl; cout << "\n Y = sqrt(3) \n" << " = " << Y << endl; // **************************************************************************** // STUDENT: They are the same! My calculator shows that both sides // evaluates to 1.732050808. // TEACHER: That is an accident! Your calculator display only 10 digits. // STUDENT: Go away, it cannot be coincidence. // TEACHER: OK, try this on your calculator: // sqrt(75025) + sqrt(121393) + sqrt(196418) + sqrt(317811) // **************************************************************************** double A = sqrt(Expr(75025))+sqrt(Expr(121393))+sqrt(Expr(196418))+sqrt(Expr(317811)); cout << "\n A = sqrt(75025) + sqrt(121393) + sqrt(196418) + sqrt(317811) \n" << " = " << A << endl; // **************************************************************************** // STUDENT: (after a pause) I get 1629.259889. // TEACHER: Good, now try sqrt(514229) + sqrt(832040) // **************************************************************************** double B = sqrt(Expr(514229)) + sqrt(Expr(832040)); cout << "\n B = sqrt(514229) + sqrt(832040) \n" << " = " << B << endl; // **************************************************************************** // STUDENT: (after another pause) Hey, I get 1629.259889 again! // So they are equal. // TEACHER: No, let me show you in Core Library... // **************************************************************************** // **************************************************************************** // Set the output to 20 digits first // **************************************************************************** setDefaultOutputDigits(20); cout << "\n\n ########### Output Digits = 20" << endl; // **************************************************************************** // Redisplay A and B at 20 digit // **************************************************************************** cout << "\n Here is A again: " << A << endl; cout << "\n Here is B again: " << B << endl; // **************************************************************************** // TEACHER: Notice that these two numbers differ at the 9th decimal place. // But you see, it would be impossible to numerically determine // whether // // X = sqrt(2) + sqrt(5 - 2* sqrt(6)) // Y = sqrt(3) // // since no many how many digits of a and b you compute, you // will see that they agree except possibly the last one. // // Let us compute X and Y to 70 digits. // **************************************************************************** setDefaultOutputDigits(70); cout << "\n\n ########### Output Digits = 70" << endl; cout << "\n X = sqrt(2) + sqrt(5-2 sqrt(6)) \n" << " = " << X << endl; // Prints: 1.7320508075688772935274463415058723669428 (41 digits) cout << "\n Y = sqrt(3) \n" << " = " << Y << endl; // Prints: 1.73205080756887729352744634150587236694 (39 digits) // **************************************************************************** // STUDENT: Hey, they seem to agree, but neither one printed 70 digits! // // TEACHER: Oh, I know what is going on. I read in the Tutorial that // Core Library prints the current approximation that it knows // Apparently, the current approximations do not have 70 digits of accuracy. // // We can ask Core Library to approximate X and Y to at least 70 digits. // Let us see: 70 digits is less than 4*70 = 280 bits. // So if we force evaluation to 280 relative bits of precision, // we will be able to see 70 digits. // **************************************************************************** cout << "\n\n ########### Approximate to 280 bits of relative precision" << endl; X.approx(280,CORE_INFTY); Y.approx(280,CORE_INFTY); cout << "\n X = " << X << endl; // X = 1.732050807568877293527446341505872366942805253810380628055806979451933 cout << "\n Y = " << Y << endl; // Y = 1.732050807568877293527446341505872366942805253810380628055806979451933 // **************************************************************************** // STUDENT: Great, both prints exactly 70 digits. But // why don't we ask Core Library whether X and Y are equal? // **************************************************************************** if (X == Y) cout << "\n Core Library thinks X == Y (CORRECT!)" << endl; else cout << "\n Core Library thinks X != Y (ERROR!)" << endl; // **************************************************************************** // STUDENT: Hey, Core Library got it right! // // TEACHER: Perhaps that was a fluke. Let us run a few more tests. // // (After testing a few more identities...) // // Amazing! Core Library got it right every time! // // Now I am convinced that Core Library does some kind of theorem proving. // After all, we know that that it is impossible to decide equality by // numerical approximation. // // STUDENT: Thanks, teach! That was a great object lesson. // **************************************************************************** return 0; } core++-1.7/progs/demos/simple.cpp0100644000175000001440000000324210130141617016222 0ustar joachimusers/* ************************************************ File: simple.cpp Purpose: Simple Program from Tutorial This program will compile in Core Levels 1 and 3. In Level 3, there is no error. In Level 1, it is mostly error. Usage: % simple Core Library $Id: simple.cpp,v 1.2 2004/10/04 03:29:19 exact Exp $ ************************************************ */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" // this must appear after the standard headers using namespace std; bool test(double x, double y, bool verbose=false) { double e = sqrt(x) + sqrt(y); double f = sqrt(x + y + 2 * sqrt(x*y)); bool correct = ((e==f)? true : false); if (verbose) { cout << "==============================================" << endl; cout << ">> x = " << x << endl; cout << ">> y = " << y << endl; cout << ">> e = sqrt(x) + sqrt(y)" << endl; cout << ">> f = sqrt(x + y + 2*sqrt(x*y))" << endl; cout << ">> e == f ? " << ((correct) ? " yes (CORRECT!)" : " no (ERROR!)" ) << endl; cout << "==============================================" << endl; } return correct; } int main() { double x = 1234567890; double y = 1234567890.987654321; test(x,y,true); int corr = 0; int incorr = 0; for (int i= 100; i<120; i++) { for (int j = 117; j< 137; j++) { if (test(i, j/7, false)) corr++; else incorr++; } } cout << "Correct Tests = " << corr << endl; cout << "Incorrect Tests = " << incorr << endl; if (incorr>0) cout << "ERROR! There is at least one test with error!" << endl; else cout << "CORRECT! There are no test with error!" << endl; return 0; } core++-1.7/progs/determinant/0040755000175000001440000000000010147210064015433 5ustar joachimuserscore++-1.7/progs/determinant/Makefile0100644000175000001440000000632310144727373017111 0ustar joachimusers# Makefile for determinant # # Core Library, $Id: Makefile,v 1.5 2004/11/11 18:27:07 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= LEVEL= 3 TARGETS= determinant all: $(TARGETS) test: $(TARGETS) ./determinant inputs/random_50bits_dim_5 10 ./determinant inputs/random_100bits_dim_5 10 ./determinant inputs/random_200bits_dim_5 10 ./determinant inputs/random_500bits_dim_5 10 # ./determinant inputs/random_double_2 10 # ./determinant inputs/random_double_5 10 determinant: determinant.o createMatrices: createMatrices.o experiment1: determinant ./determinant inputs/random_100bits_dim2 1 ./determinant inputs/random_100bits_dim3 1 ./determinant inputs/random_100bits_dim4 1 ./determinant inputs/random_100bits_dim5 1 experiment2: time ./determinant inputs/random_100bits_dim2_degenerate 100000 time ./determinant inputs/random_100bits_dim3_degenerate 10000 time ./determinant inputs/random_100bits_dim4_degenerate 1000 time ./determinant inputs/random_100bits_dim5_degenerate 1000 experiment3: time ./determinant inputs/random_50digits_dim2 1000000 time ./determinant inputs/random_50digits_dim3 1000000 time ./determinant inputs/random_50digits_dim4 100000 time ./determinant inputs/random_50digits_dim5 10000 experiment4: time ./determinant inputs/random_50digits_dim2_degenerate 10000 time ./determinant inputs/random_50digits_dim3_degenerate 10000 time ./determinant inputs/random_50digits_dim4_degenerate 1000 time ./determinant inputs/random_50digits_dim5_degenerate 1000 matrices: createMatrices ./createMatrices inputs/random_100bits_dim2 1 2 100 2 ./createMatrices inputs/random_100bits_dim3 1 3 100 2 ./createMatrices inputs/random_100bits_dim4 1 4 100 2 ./createMatrices inputs/random_100bits_dim5 1 5 100 2 ./createMatrices inputs/random_100bits_dim6 1 6 100 2 matrices10: createMatrices ./createMatrices inputs/random_50digits_dim2 1 2 50 10 ./createMatrices inputs/random_50digits_dim3 1 3 50 10 ./createMatrices inputs/random_50digits_dim4 1 4 50 10 ./createMatrices inputs/random_50digits_dim5 1 5 50 10 ./createMatrices inputs/random_50digits_dim6 1 6 50 10 bigmatrices: createMatrices ./createMatrices inputs/bigrandom_50bits_dim2 1 2 50 2 ./createMatrices inputs/bigrandom_50bits_dim4 1 4 50 2 ./createMatrices inputs/bigrandom_50bits_dim6 1 6 50 2 ./createMatrices inputs/bigrandom_50bits_dim10 1 10 50 2 ./createMatrices inputs/bigrandom_50bits_dim20 1 20 50 2 ./createMatrices inputs/bigrandom_50bits_dim50 1 50 50 2 #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< -lcorex++$(VAR)_level${LEVEL} $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) -DCORE_LEVEL=${LEVEL} $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/determinant/README0100644000175000001440000000156010130300460016302 0ustar joachimusersREADME for determinant directory ================================ These programs are used to produce the experimental results described in the paper, "Constructive Root Bound Method for k-Ary Rational Input Numbers" by Sylvain Pion and Chee Yap, To appear in Proc. 19th ACM Symp. Comp.Geom., June 2003. Basically, we compare the various root bounds of three different methods of computing the determinant: 1) gaussian elimination 2) factorial expansion method 3) dynamic programming method files: Makefile -- determinant.ccp -- testing the correctness of filter createMatrices.ccp -- generates random matrices dynamicProgrammingCodeGenerator -- generates CGAL code for determinant evaluation using dynamic programming directories: inputs -- matrices generated by createMatrices are put here -- Sylvain Pion and Chee Yap Oct 2002 core++-1.7/progs/determinant/createMatrices.cpp0100644000175000001440000000425610103167042021075 0ustar joachimusers/* ************************************** File: createMatrices.cpp Purpose: To generate random matrices for testing. Each entry is given as a pair of integers representing a binary rational The outfile format has the following format: line 1: N = number of matrices line 2: d = dimension of matrices Subsequent lines has a pair of integers. These pairs represent a single entry, and the entries are listed in row-major order. Each pair (m, L) represents m*2^{-L}. Usage: % createMatrices fname N d b where fname = output file name N = the number of matrices d = dimension of the matrices b = bit length of entries CORE Library, $Id: createMatrices.cpp,v 1.2 2004/08/01 13:20:34 exact Exp $ ************************************** */ #include #include #include "CORE.h" int main( int argc, char *argv[] ) { int no_matrices; int dim; int digitLen; int base; char filename[256]; if (argc != 5 && argc != 6) { std::cout << "Usage: createMatrices " << " " << std::endl; exit(1); } strcpy(filename, argv[1]); no_matrices = atoi(argv[2]); dim = atoi(argv[3]); digitLen = atoi(argv[4]); base = (argc == 6) ? atoi(argv[5]) : 2; std::ofstream ofs(filename); if ( !ofs ) { std::cout << "Cannot open the output file!" << std::endl; exit(1); } std::cout << "Generate " << no_matrices << " random matrices..." << std::endl; // write the total number of randomly generated matrices ofs << no_matrices << std::endl; // write the base ofs << base << std::endl; // write the dimension of the matrix ofs << dim << std::endl; ofs << std::endl; // write the matrices BigInt x, y; BigInt BASE1 = 1; power(BASE1, BigInt(base), (digitLen-1)); unsigned int seed1 = (unsigned int) (time(NULL) % UINT_MAX); srand(seed1); for (int k=0; k< no_matrices; k++) { for (int i=0; i where is the name of an ascii file containing matrices, each of dimension . The first two integers in in are and . The remaining entries contains the entries of each of the matrices in the usual row major order. In particular, the program "createMatrices" produce such input files. A sample input file named "inputs/1000x4matrices" may be found in this directory. Author: Sylvain Pion $Id: determinant.cpp,v 1.7 2004/10/04 16:58:24 exact Exp $ ******************************************************************** */ #include #include #include "CORE/linearAlgebra.h" #include "determinant.h" using namespace CORE; double factorial_determinant(const Matrix & A) { int dim = A.dimension_1(); if (dim == 1) return A(0,0); double det = 0; int parity = 1; Matrix B(dim-1,dim-1); for (int i=0; ii ? j-1 : j, k) = A(j, k+1); } if (parity>0) det += factorial_determinant(B) * A(i, 0); else det -= factorial_determinant(B) * A(i, 0); parity = -parity; } return det; } double gaussian_determinant(Matrix A) { int dim = A.dimension_1(); int *permutation = new int[dim]; int swap_counter = 0; // Number of swaps done. int i; // Initialize the permutation of rows to Identity for (i = 0; i < dim; i++) permutation[i] = i; // This is the pivoting version of Gaussian elimination: for (i = 0; i < dim-1; i++) { // Look for a non-zero pivot. int pivot = i; while (pivot < dim && A(i, permutation[pivot]) == 0) pivot++; // All candidates are zero => det == 0 if (pivot == dim) { delete[] permutation; return 0; } // Do we need to swap two rows ? if (pivot != i) { std::swap(permutation[i], permutation[pivot]); swap_counter++; } for (int j = i + 1; j < dim; j++) for (int k = i + 1; k < dim; k++) { assert(A(i, permutation[i]) != 0); A(j, permutation[k]) -= A(j, permutation[i]) * A(i, permutation[k]) / A(i, permutation[i]); } } double det = 1; for (i = 0; i < dim; i++) det *= A(i, permutation[i]); if (swap_counter & 1 != 0) // Odd number of swaps det = -det; delete[] permutation; return det; } enum Method {Gaussian, Dynamic, Factorial}; int main(int argc, char **argv) { defRelPrec = 100; defAbsPrec = CORE_INFTY; int defPrtDgt = 40; int base; Method method; // setProgressiveEvalFlag(false); if (argc != 3 && argc != 4) { std::cerr << "Usage: determinant " "<0,default=gaussian, 1=dynamic_programming, other=factorial>" << std::endl; exit(1); } if (argc < 4) { method = Gaussian; } else if (atoi(argv[3]) == 0) { method = Gaussian; } else if (atoi(argv[3]) == 1) { method = Dynamic; } else { method = Factorial; } std::ifstream ifile(argv[1]); int number_of_matrices; ifile >> number_of_matrices; //throw it away. ifile >> base; int dim; ifile >> dim; double *A = new double[dim*dim]; for (int i=0; i> bi; ifile >> L; BigInt den; power(den, base, L); BigRat br (bi, den); A[i*dim+j] = br; } Matrix M(dim, dim, A); int iterations = atoi(argv[2]); double e; // std::cout << M << std::endl; // without the print, I get crashes in gaussian. Why ??? switch (method) { case Gaussian: std::cout << " Using Gaussian elimination" << std::endl; break; case Dynamic: std::cout << " Using Dynamic programming" << std::endl; break; case Factorial: std::cout << " Using Factorial expansion" << std::endl; } for (int i=0; i inline FT det2x2_by_formula( const FT& a00, const FT& a01, const FT& a10, const FT& a11) { // First compute the det2x2 const FT m01 = a00*a11 - a10*a01; return m01; } template inline FT det3x3_by_formula( const FT& a00, const FT& a01, const FT& a02, const FT& a10, const FT& a11, const FT& a12, const FT& a20, const FT& a21, const FT& a22) { // First compute the det2x2 const FT m01 = a00*a11 - a10*a01; const FT m02 = a00*a21 - a20*a01; const FT m12 = a10*a21 - a20*a11; // Now compute the minors of rank 3 const FT m012 = m01*a22 - m02*a12 + m12*a02; return m012; } template FT det4x4_by_formula( const FT& a00, const FT& a01, const FT& a02, const FT& a03, const FT& a10, const FT& a11, const FT& a12, const FT& a13, const FT& a20, const FT& a21, const FT& a22, const FT& a23, const FT& a30, const FT& a31, const FT& a32, const FT& a33) { // First compute the det2x2 const FT m01 = a10*a01 - a00*a11; const FT m02 = a20*a01 - a00*a21; const FT m03 = a30*a01 - a00*a31; const FT m12 = a20*a11 - a10*a21; const FT m13 = a30*a11 - a10*a31; const FT m23 = a30*a21 - a20*a31; // Now compute the minors of rank 3 const FT m012 = m12*a02 - m02*a12 + m01*a22; const FT m013 = m13*a02 - m03*a12 + m01*a32; const FT m023 = m23*a02 - m03*a22 + m02*a32; const FT m123 = m23*a12 - m13*a22 + m12*a32; // Now compute the minors of rank 4 const FT m0123 = m123*a03 - m023*a13 + m013*a23 - m012*a33; return m0123; } template FT det5x5_by_formula( const FT& a00, const FT& a01, const FT& a02, const FT& a03, const FT& a04, const FT& a10, const FT& a11, const FT& a12, const FT& a13, const FT& a14, const FT& a20, const FT& a21, const FT& a22, const FT& a23, const FT& a24, const FT& a30, const FT& a31, const FT& a32, const FT& a33, const FT& a34, const FT& a40, const FT& a41, const FT& a42, const FT& a43, const FT& a44) { // First compute the det2x2 const FT m01 = a10*a01 - a00*a11; const FT m02 = a20*a01 - a00*a21; const FT m03 = a30*a01 - a00*a31; const FT m04 = a40*a01 - a00*a41; const FT m12 = a20*a11 - a10*a21; const FT m13 = a30*a11 - a10*a31; const FT m14 = a40*a11 - a10*a41; const FT m23 = a30*a21 - a20*a31; const FT m24 = a40*a21 - a20*a41; const FT m34 = a40*a31 - a30*a41; // Now compute the minors of rank 3 const FT m012 = m12*a02 - m02*a12 + m01*a22; const FT m013 = m13*a02 - m03*a12 + m01*a32; const FT m014 = m14*a02 - m04*a12 + m01*a42; const FT m023 = m23*a02 - m03*a22 + m02*a32; const FT m024 = m24*a02 - m04*a22 + m02*a42; const FT m034 = m34*a02 - m04*a32 + m03*a42; const FT m123 = m23*a12 - m13*a22 + m12*a32; const FT m124 = m24*a12 - m14*a22 + m12*a42; const FT m134 = m34*a12 - m14*a32 + m13*a42; const FT m234 = m34*a22 - m24*a32 + m23*a42; // Now compute the minors of rank 4 const FT m0123 = m123*a03 - m023*a13 + m013*a23 - m012*a33; const FT m0124 = m124*a03 - m024*a13 + m014*a23 - m012*a43; const FT m0134 = m134*a03 - m034*a13 + m014*a33 - m013*a43; const FT m0234 = m234*a03 - m034*a23 + m024*a33 - m023*a43; const FT m1234 = m234*a13 - m134*a23 + m124*a33 - m123*a43; // Now compute the minors of rank 5 const FT m01234 = m1234*a04 - m0234*a14 + m0134*a24 - m0124*a34 + m0123*a44; return m01234; } template FT det6x6_by_formula( const FT& a00, const FT& a01, const FT& a02, const FT& a03, const FT& a04, const FT& a05, const FT& a10, const FT& a11, const FT& a12, const FT& a13, const FT& a14, const FT& a15, const FT& a20, const FT& a21, const FT& a22, const FT& a23, const FT& a24, const FT& a25, const FT& a30, const FT& a31, const FT& a32, const FT& a33, const FT& a34, const FT& a35, const FT& a40, const FT& a41, const FT& a42, const FT& a43, const FT& a44, const FT& a45, const FT& a50, const FT& a51, const FT& a52, const FT& a53, const FT& a54, const FT& a55) { // First compute the det2x2 const FT m01 = a00*a11 - a10*a01; const FT m02 = a00*a21 - a20*a01; const FT m03 = a00*a31 - a30*a01; const FT m04 = a00*a41 - a40*a01; const FT m05 = a00*a51 - a50*a01; const FT m12 = a10*a21 - a20*a11; const FT m13 = a10*a31 - a30*a11; const FT m14 = a10*a41 - a40*a11; const FT m15 = a10*a51 - a50*a11; const FT m23 = a20*a31 - a30*a21; const FT m24 = a20*a41 - a40*a21; const FT m25 = a20*a51 - a50*a21; const FT m34 = a30*a41 - a40*a31; const FT m35 = a30*a51 - a50*a31; const FT m45 = a40*a51 - a50*a41; // Now compute the minors of rank 3 const FT m012 = m01*a22 - m02*a12 + m12*a02; const FT m013 = m01*a32 - m03*a12 + m13*a02; const FT m014 = m01*a42 - m04*a12 + m14*a02; const FT m015 = m01*a52 - m05*a12 + m15*a02; const FT m023 = m02*a32 - m03*a22 + m23*a02; const FT m024 = m02*a42 - m04*a22 + m24*a02; const FT m025 = m02*a52 - m05*a22 + m25*a02; const FT m034 = m03*a42 - m04*a32 + m34*a02; const FT m035 = m03*a52 - m05*a32 + m35*a02; const FT m045 = m04*a52 - m05*a42 + m45*a02; const FT m123 = m12*a32 - m13*a22 + m23*a12; const FT m124 = m12*a42 - m14*a22 + m24*a12; const FT m125 = m12*a52 - m15*a22 + m25*a12; const FT m134 = m13*a42 - m14*a32 + m34*a12; const FT m135 = m13*a52 - m15*a32 + m35*a12; const FT m145 = m14*a52 - m15*a42 + m45*a12; const FT m234 = m23*a42 - m24*a32 + m34*a22; const FT m235 = m23*a52 - m25*a32 + m35*a22; const FT m245 = m24*a52 - m25*a42 + m45*a22; const FT m345 = m34*a52 - m35*a42 + m45*a32; // Now compute the minors of rank 4 const FT m0123 = m012*a33 - m013*a23 + m023*a13 - m123*a03; const FT m0124 = m012*a43 - m014*a23 + m024*a13 - m124*a03; const FT m0125 = m012*a53 - m015*a23 + m025*a13 - m125*a03; const FT m0134 = m013*a43 - m014*a33 + m034*a13 - m134*a03; const FT m0135 = m013*a53 - m015*a33 + m035*a13 - m135*a03; const FT m0145 = m014*a53 - m015*a43 + m045*a13 - m145*a03; const FT m0234 = m023*a43 - m024*a33 + m034*a23 - m234*a03; const FT m0235 = m023*a53 - m025*a33 + m035*a23 - m235*a03; const FT m0245 = m024*a53 - m025*a43 + m045*a23 - m245*a03; const FT m0345 = m034*a53 - m035*a43 + m045*a33 - m345*a03; const FT m1234 = m123*a43 - m124*a33 + m134*a23 - m234*a13; const FT m1235 = m123*a53 - m125*a33 + m135*a23 - m235*a13; const FT m1245 = m124*a53 - m125*a43 + m145*a23 - m245*a13; const FT m1345 = m134*a53 - m135*a43 + m145*a33 - m345*a13; const FT m2345 = m234*a53 - m235*a43 + m245*a33 - m345*a23; // Now compute the minors of rank 5 const FT m01234 = m0123*a44 - m0124*a34 + m0134*a24 - m0234*a14 + m1234*a04; const FT m01235 = m0123*a54 - m0125*a34 + m0135*a24 - m0235*a14 + m1235*a04; const FT m01245 = m0124*a54 - m0125*a44 + m0145*a24 - m0245*a14 + m1245*a04; const FT m01345 = m0134*a54 - m0135*a44 + m0145*a34 - m0345*a14 + m1345*a04; const FT m02345 = m0234*a54 - m0235*a44 + m0245*a34 - m0345*a24 + m2345*a04; const FT m12345 = m1234*a54 - m1235*a44 + m1245*a34 - m1345*a24 + m2345*a14; // Now compute the minors of rank 6 const FT m012345 = m01234*a55 - m01235*a45 + m01245*a35 - m01345*a25 + m02345*a15 - m12345*a05; return m012345; } double dynamic_programming_determinant(const Matrix&m) { switch(m.dimension_1()) { case 2: return det2x2_by_formula(m(0,0), m(1,0), m(0,1), m(1,1)); case 3: return det3x3_by_formula(m(0,0), m(1,0), m(2,0), m(0,1), m(1,1), m(2,1), m(0,2), m(1,2), m(2,2)); case 4: return det4x4_by_formula(m(0,0), m(1,0), m(2,0), m(3,0), m(0,1), m(1,1), m(2,1), m(3,1), m(0,2), m(1,2), m(2,2), m(3,2), m(0,3), m(1,3), m(2,3), m(3,3)); case 5: return det5x5_by_formula(m(0,0), m(1,0), m(2,0), m(3,0), m(4,0), m(0,1), m(1,1), m(2,1), m(3,1), m(4,1), m(0,2), m(1,2), m(2,2), m(3,2), m(4,2), m(0,3), m(1,3), m(2,3), m(3,3), m(4,3), m(0,4), m(1,4), m(2,4), m(3,4), m(4,4)); default: std::cerr << "Dimension out of bounds" << std::endl; exit(1); } } #endif // CGAL_DETERMINANT_H core++-1.7/progs/determinant/dynamicProgrammingCodeGenerator.cpp0100644000175000001440000000455307671204414024446 0ustar joachimusers // Produces the CGAL code corresponding to the determinant computation using // dynamic programming. // // This method gives low number of multiplications [ n(2^(n-1)-1) ] // and additions [ (n-2)2^(n-1)+1 ]. It's nearly optimal for dimension < 6. // However, this method uses more stack memory (than Gaussian elimination, // or simple development). Benchmarks should have the last word, as always. // // Author: Sylvain Pion , copyright 1998-9. #include #include void print_current_tab(int rank); void do_minors (int rank); bool next_tab (int rank); int dim; int *tab; int main(char argc, char ** argv) { int i,j,k; if (argc != 2) { cerr << "Usage : " << argv[0] << " dimension" << endl; return 1; } dim = atoi(argv[1]); tab = (int *) calloc ( dim, sizeof(int) ); if (tab == NULL) { cerr << "Not enough memory." << endl; return -1; } // Prints the headers. cout << "FT" << endl << "det" << dim << "x" << dim << "_by_formula (" << endl; for (i=0; i #include #include "CORE.h" using namespace std; int main (int argc, char **argv) { ifstream inFile; ofstream outFile; BigInt product, test; // compute n! for n = 20000. // Note: if you change the value of n, you should change the // size of char array of str to hold the result. int n = 20000; product = 1; cout << "computing " << n << "!...\n"; for (int j=1; j<=n; j++) product *= j; // print out the result. // string s = product.toString(); // cout << "The result of " << n << "! = " << s << '\n'; // read/write BigInt in 4 different bases. int bases[] = {2, 8, 10, 16}; const char* filename[] = {"bin.big", "octal.big", "dec.big", "hex.big"}; machine_long t1=0, t2=0; for (int i=2; i < 4; i++ ) { cout << "\nWrite the result to the file " << filename[i] << " in base = " << bases[i] <<"...\n"; outFile.open(filename[i]); t1 = clock(); writeToFile(product, outFile, bases[i], 70); t2 = clock(); outFile.close(); outFile.clear(); cout << "Done (Time spent: " << (float)(t2-t1)/CLOCKS_PER_SEC << " seconds)\n\n"; cout << "Read the result from the file " << filename[i] << "...\n"; inFile.open(filename[i]); t1 = clock(); readFromFile(test, inFile, 0); // maxLength = 0 means the length is // determined by length field in file. t2 = clock(); inFile.close(); inFile.clear(); cout << "Done (Time spent: " << (float)(t2-t1)/CLOCKS_PER_SEC << " seconds)\n\n"; if ( test == product ) cout << "---<>---\n"; else cout << "---<>---\n"; } return 0; } core++-1.7/progs/fileIO/Makefile0100644000175000001440000000206010144502324015723 0ustar joachimusers# Makefile for fileIO # # Core Library, $Id: Makefile,v 1.8 2004/11/10 21:15:00 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= fileIO MORETARGETS= IOspeed stringIO default: $(TARGETS) test: $(TARGETS) ./fileIO moretest: $(MORETARGETS) ./IOspeed ./stringIO fileIO: fileIO.o IOspeed: IOspeed.o stringIO: stringIO.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/fileIO/README0100644000175000001440000000300707667156775015204 0ustar joachimusers============================================================================= File: README for fileIO Core Library $Id: README,v 1.4 2003/06/03 17:42:21 exact Exp $ ============================================================================= SYNOPSIS: The programs here tests the file IO routines in Core Library. We also test analogous string IO routines here. FILES: README -- this file Makefile -- compiling and testing bigNumFormat.txt -- specification for a bigNumber file format (moved to doc) fileIO.cpp -- testing file I/O facilities for BigInt -- the analogous I/O facilities for BigFloat can be found in the files log2.cpp and pi.cpp under COREPATH/progs/hypergeom/const. stringIO.cpp -- testing string I/O facilities IOspeed.cpp -- shows that storing and reading in hex or binary is much faster than in base 10. The files here only tests BigInt. We also support file I/O for BigRat and BigFloat. To see examples for BigFloat, please see progs/hypergeom/const/{pi,log2}.cpp Sample Timing on a Sparc 10: =========================== We computed the value of 20000! (factorial), and wrote the result to a file and then read it back. RESULTS: In base 10, then time to write is 550 ms, and time to read is 78 ms. In base 16, then time to write is 0 ms, and time to read is 2 ms. UPDATE: July 2002: ================== Above was for BigInt file formats. We now also have file I/O for BigFloat and Rational numbers. ============================================================================= core++-1.7/progs/fileIO/bigNumFileFormat0100644000175000001440000002330107627742302017417 0ustar joachimusersProposal for A BigNumber File Format ==================================== -- Chee Yap (yap@cs.nyu.edu) (Aug 1, 2001) Motivation ========== We need the ability to store bignumbers in files, and functions to read such files. The format should support various bases (decimal, binary and hex). This capability is vital for fast elementary function computations that often need special constants to very high precision. We want to store these in precomputed form in files. Examples of constants we will need: e, Pi, sqrt(Pi), 1/sqrt(Pi), sqrt(2), etc., We want this in hex since this avoids the \Omega(n\log^2 n) time to convert between binary and decimal representations. The following design aims at human readability -- hence we only define a text-based (ascii) version. The speed advantage of a byte-based (binary) version is not in our intended applications. If file size is an issue, it is usually sufficient to run our text file through a standard compression program such as gzip. A text-based version allows a human (using any text editor) to create sample files, or to verify and modify output files produced by a program. Also important is the ability for self-documentation, through the comments and white-space management. BigNum File Format Version 1.0 ======+++++++================= (0) A data file in this format will have the file extension ".big". (1) The file is a line-based ascii file In the present version, we assume that each file contains a sequence of big numbers. (2) An input file is regarded as a sequence of "physical lines" which are terminated by (or ). (3) The comment character is '#'. The rest of a physical line is ignored after '#' (4) One or more physical lines are merged into "logical lines" If the last character before the or is '\' (continuation character), then the next physical line is considered a continuation of the current "logical line". The continuation character is discarded. (5) White space characters are or characters. Note that and are not white space characters. There are two distinct ways to treat white spaces in a logical line: (i) Space-reduced line: Replace consecutive white space characters by a single character. (ii) Non-white line: Ignore (i.e., delete) all white spaces. N.B. Based on (4) and (5), we can provide three useful file reading functions: read_logical_line(), read_reduced_line(), read_nonwhite_line(). (6) The following bases are supported: (i) Base 10 (digits are 0-9) (ii) Base 16 (digits are 0-9, A-F (or a-f)) (iii) Base 2 (digits are 0,1) (7) The concept of a "base number" is basically an unsigned natural number, to any of the supported bases. Examples of Base number: (1a) 123456789 (1b) 1234 5678 (2a) 0x1234ABCD (2b) 0X 1234 ABCD (3a) 0b 1111 0000 (3b) 0b 11 110 000 (4a) 01234 5670 (4b) 0 12345670 More precisely: = [] where [...] indicates an optional element (this convention is used throughout this document) is '0b' or '0B' (for base 2), '0' (for base 8), and '0x' or '0X' (for base 16). When the is omitted, the base is 10. is a sequence of at least one digit to the appropriate base, interspersed with white spaces (which are ignored). We define the of the to be the number of digits in (thus, is not counted). N.B. As will be seen below, a is typically represented by a single nonwhite line in the input file. Thus, we use white spaces to help visualization and debugging in that is large. (8) We define the following number formats: Integer, Float, NFloat, Rational These formats represent the corresponding types of mathematical real numbers (called its "value"). (9) An integer is represented by two space-reduced lines as follows: Integer [] [] where and are both base numbers "Integer" is a key word, is an optional sign ('+' or '-'). If omitted, assume '+' sign. the second space-reduced line is treated as a nonwhite line NOTE: is optional because it is defaulted to the actual number of digits in . It could be less than the number of digits in , in which case no reader will read the extra digits. But if it is more, it is automatically set to the actual number of digits. Thus is a helpful hint to readers that may need to preallocate space for reading in the integer. E.g. Integer 12345 67890 12345 # space in the second logical line is ignored Integer 6 # space before the length of 6 is required -0X 369 BDF Integer 12 +0b 1010 1010\ 1010 1111 0011 (10) A float is represented by three space-reduced lines as follows Float () [] [] [] where , , and are all base numbers is the base B of the floating point representation, is the optional length of , again represented in decimal notation. line 2 is a nonwhite line and represents the exponent E line 3 is a nonwhite line and represents the mantissa M So the value of the Float is (M * B**E). NOTES: The value is again optional, but the parenthesis '(', ')' in the first logical line is required. Note that, as a base number, M has a base that is equal to 2, 16 or 10. For efficiency, we recommend that B be a power of this base. E.g., if M is in Hex, it is best to have B to be a power of 16. If this is not possible (as in Core Library numbers), then B should be a power of 2. E.g. Float(2) 6 - 0x A # exponent +0x 369 BDF # mantissa E.g. # Value of this float is -10**(-5) * 123 = 0.00123. Float(10) -0101 123 E.g. Float(0b 10000 00000 0000) # base is 2**(14) -2 0b 1111 # value is 15*2**(-14*2 - 3) = 15*2**(-31) (11) We also have the "Normalized Float" variation which uses the key word "Normalized Float" (or "NFloat") instead of "Float". This format is useful for well-known mathematical constants and or physical constants because the exponent of such a constant tells us its magnitude, independent of the choice of mantissa. The format is exactly as for Floats, except that the value of a normalized float is defined differently. For mantissa M, exponent E, and base B, is equal to <> * B**E, where <> is the normalized value of an integer M. In the positional representation, <> just amounts to placing the radical point between the first and second digits of M. E.g., if M = 1234, then <> = 1.234. If M = 0xABC123, then <> = 0x A.BC123. Alternatively, <> = M * B**(- len(M) + 1) where len(M) is the number of digits of M in its base representation. Thus, len(M) = 1 + floor(log_b(M)) where b is tbe base of M. E.g. # Value of Pi Normalized Float(10) 0 # exponent 314159 # mantissa (12) A rational is represented by 3 space-reduced lines as follows: Rational [ []] [] where "Rational" is a key word, , , and are base numbers. The value of this rational number is [] /. The base of and are strongly recommended to be identical. This facilitates our goal (below) of only reading in initial parts of a number. The optional and are lengths of the numerator and denominator. We strongly recommend providing these lengths when the numbers involved are very big. This allows our functions to compute high order digits of the rational number without having to read the entire file. E.g. Rational 3 5 -X123 X12345 (13) Input from files. We want to read any of the above numbers into our Real numbers: -- Natural and Integer becomes our BigInt -- Float becomes our BigFloat -- Rational becomes our BigFloat (14) It is important to be able to read ONLY the initial segment of the input digits. So, this means for any of our big number formats, we can ask to read to at most "precision"

where

is a natural number. -- For Natural and Integers, this means we read min(

,) digits of the , where is the length of the base number. -- For Floats, this means we only read the first min(

,) digits of the mantissa where is the length of the mantissa. -- For Rational, this is trickier. Assume (as recommended) that the base of the numerator and denominator are the same, and equal to b. Suppose we want the relative precision to be O(b^{-

}). Let the number of digits in N and D be ln and ld, respectively. Let N' and D' be the integer obtained from the first

digits of N and D, respectively. Then we compute the value N'/D' * b^{ln - ld}. REMARKS: (1) Zilin has recently implemented the integer part of the above proposal. This has been incorporated into the Core Library Version 1.4. (2) Most systems seem to implement a quadratic time conversion. Recently, with Valentina Marotta, we designed and implemented an O(n\log^2 n) time decimal to binary conversion routine. That should be incorporated into Core Library soon. (3) Float Format implementation: we currently only implement the case where = 2^{14}, and the is restricted to a machine Long. Both restrictions are motivated by our Core Library BigFloat number class, where the base is 2^{14} and exponent must be machine Long. (4) We should probably overload "<<" (by setting some stream manipulation parameters) to achieve the above file I/O functionality. ======================= END ============================================ core++-1.7/progs/fileIO/fileIO.cpp0100644000175000001440000000672110130300463016141 0ustar joachimusers/* ************************************************ File: fileIO.cpp Purpose: To exercise the file input and output facilities for big numbers. For more information about the file format, see the file "bigNumFileFormat" in this directory. June, 2001 Note: Only the big integer facilities in this format has been implemented. Functions provided: (1) void BigInt::readFromFile(istream is, long maxLen = 0) -- this constructs a BigInt from file, reading at most maxlen number of digits (of the appropriate base). If maxLen=0, then read the entire file. (2) void writeToFile(const BigInt& z, std::ostream os, int b = 10, int lineLen = 80) -- this writes the BigInt value to file os, in base b. Each output line is 80 characters. (3) int BigInt::fromString(const char* s, int b = 0) -- this reads a string s (in the "base number format") in base b into a BigInt. If b=0, then the base is directly determined by the leading characters in string s as follows: "0x" or "0X" for hex, "0" for octal, "0b" or "0B" for bin, null for decimal (4) std::string BigInt::get_str(int b = 10) -- inverse of the previous function. -- Remark: formerly, this was getString(int b=10) Usage: % fileIO Author: Zilin Du (zilin@cs.nyu.edu) $Id: fileIO.cpp,v 1.12 2004/10/04 16:58:27 exact Exp $ ************************************************ */ #include #include "CORE.h" using namespace std; //////////////////////////////////////////////////////////// // This method is NOT tested in this file??? Please fix it! // // BigInt::fromString(const char* s, int b = 0) // //////////////////////////////////////////////////////////// int main (int argc, char **argv) { ifstream inFile; ofstream outFile; BigInt product, test; // Compute n! for n = 500. // Note: if you change the value of n, you should change the // size of char array of str to hold the result. int n = 500; product = 1; for (int j=1; j<=n; j++) product *= j; //////////////////////////////////////////////////////////// // print out the result. //////////////////////////////////////////////////////////// string s = product.get_str(); cout << "The result of " << n << "! = " << s << "\n"; //////////////////////////////////////////////////////////// // read/write BigInt in 4 different bases. //////////////////////////////////////////////////////////// int bases[] = {2, 8, 10, 16}; const char* filename[] = {"bin.big", "octal.big", "dec.big", "hex.big"}; for (int i=0; i < 4; i++ ) { cout << "\nWrite the result to the file " << filename[i] << " in base = " << bases[i] <<"...\n"; outFile.open(filename[i]); // product.writeToFile(outFile, bases[i], 40); writeToFile(product, outFile, bases[i], 40); outFile.close(); outFile.clear(); cout << "Read the result from the file " << filename[i] << "...\n"; inFile.open(filename[i]); if (inFile.good()) { //test.readFromFile(inFile, 0); // maxLength = 0 means length is // determined by length field in file. readFromFile(test, inFile, 0); } else { cout << "ERROR" << endl; } inFile.close(); inFile.clear(); if ( test == product ) cout << "CORRECT! write and read from file" << endl; else cout << "ERROR! write and read from file" << endl; } return 0; } core++-1.7/progs/fileIO/stringIO.cpp0100644000175000001440000000776410130300463016540 0ustar joachimusers/* ************************************************ File: stringIO.cpp Purpose: To exercise the conversions facilities for big numbers from/to strings. Functions provided: (1) For the BigInt class int BigInt::fromString(const char* s, int b = 0) -- this reads a string s (in the "base number format") in base b into a BigInt. If b=0, then the base is directly determined by the leading characters in string s as follows: "0x" or "0X" for hex, "0" for octal, "0b" or "0B" for bin, null for decimal string BigInt::get_str(int b = 10) -- inverse of the previous function. (2) For the BigFloat class void fromString(const char* s, const extLong& p=defBigFloatInputDigits) -- This reads a string s into a BigFloat accepting p as input digits. The base is always 10. string toString(long prec=defBigFloatOutputDigits, bool sci=false) -- Inverse of the previous function and printing in scientific format if specified. Usage: % stringIO Author: Joaquin Grech (jg568@nyu.edu) $Id: stringIO.cpp,v 1.5 2004/10/04 16:58:27 exact Exp $ ************************************************ */ #include #include "CORE.h" using namespace std; int main (int argc, char **argv) { BigInt product, test; BigFloat fproduct, ftest; // Compute n! for n = 500. int n = 500; product = 1; cout << "Testing string conversion for BigInt class" << endl; cout << "------------------------------------------\n\n"; cout << "Computing 500! (Factorial)" << endl; for (int j=1; j<=n; j++) product *= j; // print out the result. cout << "The result of the BigInt printed by cout " << product << "\n\n"; string s = product.get_str(); cout << "The result of BigInt.get_str() " << s << "\n"; test.set_str(product.get_str().c_str(), 10); if (test.get_str().compare(product.get_str()) == 0) cout << "CORRECT! Both strings are equal" << endl; else cout << "ERROR!!! Strings are not equal" << endl; cout << "Testing base conversion: (Convert from binary to decimal and viceversa)" << endl; product.set_str("11111", 2); cout << "The result of BigInt.fromString(\"11111\",2) is: " << product << endl; cout << "It should print: 31." << endl; if (product == 31) cout << "CORRECT! base conversion is fine" << endl; else cout << "ERROR!! base conversion is wrong!" << endl; cout << "The result of BigInt(31).get_str(2) is: " << product.get_str(2) << endl; cout << "It should print: 11111." << endl; if (product.get_str(2).compare("11111")==0) cout << "CORRECT! BigInt get_str is OK" << endl; else cout << "ERROR!!! BigInt get_str is wrong" << endl; cout << "\nTesting string conversion for BigFloat class" << endl; cout << "--------------------------------------------\n\n"; cout << "Computing 500!/3 " << endl; setDefaultPrecision(120, CORE_posInfty); fproduct=test/3; // print out the result using scientific format cout.setf(ios::scientific, ios::floatfield); cout << "Result of BigFloat printed by cout " << fproduct << "\n\n"; cout << "Result of BigFloat.toString() " << fproduct.toString() << "\n"; ftest.fromString(fproduct.toString().c_str()); if (ftest.toString().compare(fproduct.toString()) == 0) cout << "CORRECT! Bigfloat::tostring conversions is OK" << endl; else cout << "ERROR!!! Bigfloat::tostring conversions is wrong" << endl; cout.setf(ios::fixed, ios::floatfield); cout << "\nNOT printing in scientist format:\n"; cout << "The result of the BigFloat printed by cout " << fproduct << "\n\n"; cout << "The result of BigFloat.toString() " << fproduct.toString(defBigFloatOutputDigits,false) << "\n"; ftest.fromString(fproduct.toString().c_str()); if (ftest.toString().compare(fproduct.toString()) == 0) cout << "CORRECT! BigFloat toString (non-scientific format) OK" << endl; else cout << "ERROR!!! BigFloat toString (non-scientific format) bad" << endl; return 0; } core++-1.7/progs/fortune/0040755000175000001440000000000010147210064014603 5ustar joachimuserscore++-1.7/progs/fortune/vor/0040755000175000001440000000000010147210064015411 5ustar joachimuserscore++-1.7/progs/fortune/vor/Makefile0100644000175000001440000000350710145241130017047 0ustar joachimusers# Makefile for voronoi # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.11 2004/11/12 23:08:08 exact Exp $ CORE_PATH=../../.. include ../../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= voronoi MORETARGETS= EXTRATARGETS= voronoi_lattice OBJS=edgelist.o geometry.o heap.o memory.o output.o voronoi.o PQlist.o # The getopt.{h,c} files have been removed from our distribution # because of the licensing problems. You can download # these files from the Core Library Website (under downloads) # if you need them: # # ifeq ($(PLATFORM), mingw) # OBJS+=getopt.o # endif default: $(TARGETS) test: $(TARGETS) ./voronoi -c < inputs/lattice9 > outputs/lattice9.ps ./voronoi -c < inputs/points100 > outputs/points100.ps ./voronoi -ct < inputs/points100 > outputs/points100-tri.ps moretest: extratest: $(EXTRATARGETS) all: $(TARGETS) $(MORETARGETS) voronoi: main.o $(OBJS) voronoi_lattice: main_lattice.o $(OBJS) tri triangulate: ./voronoi -d < inputs/lattice9a > outputs/lattice9a ./voronoi -t < inputs/lattice9a > outputs/lattice9a-tri ./voronoi -c < inputs/lattice9a > outputs/lattice9a.ps #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $? $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/fortune/vor/PQlist.cpp0100644000175000001440000000232207502255533017340 0ustar joachimusers#include "definitions.h" #include "PQlist.h" int triangulate, sorted, plot, debug, postscript; MyFloat xmin, xmax, ymin, ymax, deltax, deltay; int nsites; int siteidx; int sqrt_nsites; const Halfedge & ELleftend = Halfedge(Edge(), 0); const Halfedge & ELrightend = Halfedge(Edge(), 0); PQlist::PQlist(Halfedge& he, PQlist& next) { r = new PQlistRep(he, next); } PQlist PQlist::PQnext() { return r->PQnext; } Halfedge PQlist::he() { return r->he; } Halfedge:: Halfedge(const Edge& e, int pm) { r = new HalfedgeRep(e, pm); ref(); } void Halfedge::ref() { if (r != (HalfedgeRep *)NULL) r->ELrefcnt++; } void Halfedge::kill() { if (r != (HalfedgeRep *)NULL) if (--(r->ELrefcnt) <= 0) delete r; } const Halfedge & Halfedge::ELleft() const { return r->ELleft; } const Halfedge &Halfedge::ELright() const { return r->ELright; } int Halfedge::isDeleted() { if (isNull()) return 0; return (r->deleted); } bool operator == (const Halfedge& h1, const Halfedge& h2) { return (h1.r == h2.r); } bool operator != (const Halfedge& h1, const Halfedge& h2) { return (h1.r != h2.r); } bool operator < (const Point& p1, const Point& p2) { return (compare(p1, p2) < 0); } core++-1.7/progs/fortune/vor/PQlist.h0100644000175000001440000000114507437361201017004 0ustar joachimusers // PQlist class PQlistRep; //forward reference class PQlist { public: PQlistRep* r; PQlist() {r = (PQlistRep *)NULL; } PQlist(Halfedge& he, PQlist& next); PQlist(PQlist& p) { r = p.r; } ~PQlist() { } void operator = (PQlist& p) { r = p.r; } int isNull() { return (r == (PQlistRep *)NULL); } int notNull() { return (r != (PQlistRep *)NULL); } void PQinsert(Halfedge& he); void PQdelete(Halfedge& he); Halfedge extractmin(); PQlist PQnext(); Halfedge he(); }; class PQlistRep { public: Halfedge he; PQlist PQnext; PQlistRep(Halfedge& he_in, PQlist next) : he(he_in), PQnext(next) {} }; core++-1.7/progs/fortune/vor/README0100644000175000001440000000331710136220417016273 0ustar joachimusers============================================================================= File: README for voronoi Author: Celso Rodriguez (rodr7076@cs.nyu.edu, crodrigu@mobius.com) This was adapted from the C++ version by Tom Dube and Chee Yap, which was in turn derived from Fortune's implementation in C. Date: May 2000 CORE Library, $Id: README,v 1.2 2004/10/22 15:02:39 exact Exp $ ============================================================================= SYNOPSIS: Fortune's sweepline algorithm for Voronoi diagram of a 2-D point set. Files in this directory: README --This file Makefile --To compile and test programs main.ccp --Compiles to executable program called "voronoi" definitions.h edgelist.ccp geometry.ccp heap.ccp memory.ccp output.ccp PQlist.h voronoi.ccp Compiling Instructions: ====================== Simply invoke "make test" to compile and run a simple test. Running Instructions: ==================== The program reads from standard input and writes standard output: % voronoi [-dctsp] < input_file > output_file The input file is a text file containing a sequence of points: e.g., 0.1 0.3 0.1 0.5 0.9 0.9 0.5 0.1 The output is a text file describing the Voronoi diagram of the input points. The following options are available: -d: (debug mode) more verbose version of the default output -c: postscript output -t: compute Delaunay triangulaation instead of Vor.Diagram -s: sort the input points (to speed up computation) -p: plot option (this is disabled) See main.cpp for more information. ============================================================================ core++-1.7/progs/fortune/vor/definitions.h0100644000175000001440000001701310144502357020102 0ustar joachimusers/* MyFloat */ #include // must include this BEFORE BigFloat #ifndef CORE_LEVEL #define CORE_LEVEL 3 #endif #include "CORE.h" typedef double MyFloat; // MyFloat is the number type assumed in // the program. At CORE_LEVEL 3, this means MyFloat is // really Expr. At CORE_LEVEL 1, MyFloat is machine double. #ifndef NULL #define NULL 0 #endif #define DELETED -2 #define le 0 #define re 1 // yap: resolution of postscript output const int RES = 250; // yap: translation of postscript output const int XTRANS = 10; const int YTRANS = 15; #define NEED_INPUT //typedef float MyFloat; /* Freenode */ struct Freenode_struct { struct Freenode_struct *nextfree; }; typedef struct Freenode_struct Freenode; /* Freelist */ /* class Freelist { Freenode *head; int nodesize; public: Freelist(int size); void *getfree(); void makefree(void* curr); }; */ /* Point */ class Point { public: MyFloat x; MyFloat y; Point() {} Point(const MyFloat& xx, const MyFloat& yy) { x = xx; y = yy; } friend int compare(const Point& p1, const Point& p2); }; bool operator < (const Point& p1, const Point& p2); /* Site */ class Site; // forward reference class Vertex; // forward reference /* structure used both for sites and for vertices */ class SiteRep { Point coord; int sitenbr; int refcnt; // static Freelist flist; // void* operator new (unsigned size) {return flist.getfree();} // void operator delete (void *ptr) {flist.makefree(ptr);} public: SiteRep(const MyFloat& x, const MyFloat& y, int id) : coord(x, y) { sitenbr = id; refcnt = 0;} friend class Site; friend class Vertex; }; class Site { SiteRep *r; void kill() { if (r != (SiteRep *)NULL) if (--(r->refcnt) <= 0) delete r; } void ref() { if (r != (SiteRep *)NULL) r->refcnt++; } public: Site() { r = (SiteRep *)NULL; } Site(MyFloat& x, MyFloat& y, int id) { r = new SiteRep(x,y,id); ref(); } Site(const Site& s) { r = s.r; ref(); } void setSite(MyFloat x, MyFloat y, int id) { r = new SiteRep(x, y, id); ref(); } void operator = (const Site & s) { (const_cast(s)).ref(); kill(); r = s.r; } virtual ~Site() { kill();} int isNull() { return (r == (SiteRep *)NULL); } int notNull() { return (r != (SiteRep *)NULL); } void setNull() { r = NULL; } MyFloat& x() const {return r->coord.x; } MyFloat& y() const {return r->coord.y; } Point& point() const { return r->coord; } int id() const { return r->sitenbr; } void output(); void print (std::ostream &o) const { o << "(" << x() << ", " << y() << ")" << std::endl; } friend bool operator == (const Site& s1, const Site& s2); friend class Vertex; }; class Vertex : public Site { public: static int nvertices; Vertex() {r = (SiteRep *)NULL; } Vertex(MyFloat& x, MyFloat& y) { r = new SiteRep(x,y,0); ref(); } Vertex(const Vertex& v) { r = v.r; ref(); } void operator = (const Vertex & s) { (const_cast(s)).ref(); kill(); r = s.r; } void operator = (Site & s) { s.ref(); kill(); r = s.r; } void makevertex(); void output(); }; /* Edge */ class Edge; // forward reference class EdgeRep { // static Freelist flist; // void* operator new (unsigned size) {return flist.getfree();} // void operator delete (void *ptr) {flist.makefree(ptr);} public: MyFloat a,b,c; // equation of line is aX+bY=c Vertex ep[2]; Site reg[2]; int edgenbr; int refcnt; static int nedges; EdgeRep(Site& s1, Site& s2); friend class Edge; friend Vertex intersect(Edge& e1, Edge& e2); }; class Edge { public: EdgeRep* r; void ref() { if (r != (EdgeRep *)NULL) r->refcnt++; } void kill() { if (r != (EdgeRep *)NULL) if ((--r->refcnt) < 1) delete r; } Edge() { r = (EdgeRep *)NULL; } Edge(Site& s1, Site& s2) { r = new EdgeRep(s1, s2); ref();} Edge(const Edge& e) { r = e.r; ref(); } ~Edge() {kill(); } void operator = (const Edge& e) { (const_cast(e)).ref(); kill(); r = e.r; } int isNull() { return (r == (EdgeRep *)NULL); } int notNull() { return (r != (EdgeRep *)NULL); } Site& reg(int lr) { return r->reg[lr]; } }; /* Halfedge */ class HalfedgeRep; // forward reference; class Halfedge { void ref(); void kill(); public: HalfedgeRep* r; Halfedge() { r = (HalfedgeRep *)NULL; } Halfedge(const Edge& e, int pm); Halfedge(const Halfedge& he) { r = he.r; ref(); } ~Halfedge() { kill(); } void operator = (const Halfedge& he) { (const_cast(he)).ref(); kill(); r = he.r; } int isNull() { return (r == (HalfedgeRep *)NULL); } int notNull() { return (r != (HalfedgeRep *)NULL); } int isDeleted(); friend bool operator == (const Halfedge& h1, const Halfedge& h2); friend bool operator != (const Halfedge& h1, const Halfedge& h2); const Halfedge & ELleft() const; const Halfedge & ELright() const; Site& leftreg(Site& bottomsite); Site& rightreg(Site& bottomsite); }; class HalfedgeRep { // static Freelist flist; // void* operator new (unsigned size) {return flist.getfree();} // void operator delete (void *ptr) {flist.makefree(ptr);} public: Halfedge ELleft, ELright; Edge ELedge; int ELrefcnt; char ELpm; Vertex vertex; MyFloat ystar; int deleted; HalfedgeRep(const Edge& e, int pm) { ELedge = const_cast(e); ELpm = pm; ELrefcnt = 0; deleted = 0; } friend class Halfedge; }; bool operator == (const Halfedge& h1, const Halfedge& h2); bool operator != (const Halfedge& h1, const Halfedge& h2); /* the following functions are in edgelist.c */ void ELinitialize(); void ELinsert(Halfedge lb, Halfedge neww); Halfedge ELgethash(int b); Halfedge ELleftbnd(Point *p); void ELdelete(Halfedge he); /* the following functions ae in geometry.c */ void geominit(); Edge bisect(Site& s1, Site& s2); Vertex intersect(Halfedge el1, Halfedge el2); int right_of(Halfedge el, Point *p); void endpoint(Edge& e, int lr, Vertex& v); MyFloat dist(const Point& s, const Point& e); /* the following functions are in heap.c */ void PQinsert(Halfedge& he, Vertex& v, MyFloat offset); void PQdelete(Halfedge& he); int PQbucket(Halfedge& he); int PQempty(); void PQ_min(Point *answer); Halfedge PQextractmin(); void PQinitialize(); /* The following is defined in main.cc */ Site& nextsite(); /* The following functions are in memory.c */ void moreSites(Site **s, unsigned current, unsigned additional); /* The following functions are in output.c */ void out_bisector(Edge& e); void out_ep(Edge& e); void out_triple(const Site& s1, const Site& s2, const Site& s3); void plotinit(); void plotclose(); /* The following function is in voronoi.c */ void voronoi(int triangulate); /* global data */ /* #ifdef INCLUDEGLOBAL int triangulate, sorted, plot, debug, postscript; MyFloat xmin, xmax, ymin, ymax, deltax, deltay; int nsites; int siteidx; int sqrt_nsites; const Halfedge & ELleftend = Halfedge(Edge(), 0); const Halfedge & ELrightend = Halfedge(Edge(), 0); #else extern int triangulate, sorted, plot, debug, postscript; extern MyFloat xmin, xmax, ymin, ymax, deltax, deltay; extern std::size_t nsites; extern int siteidx; extern int sqrt_nsites; extern const Halfedge & ELleftend; extern const Halfedge & ELrightend; #endif */ extern int triangulate, sorted, plot, debug, postscript; extern MyFloat xmin, xmax, ymin, ymax, deltax, deltay; extern int nsites; extern int siteidx; extern int sqrt_nsites; extern const Halfedge & ELleftend; extern const Halfedge & ELrightend; core++-1.7/progs/fortune/vor/edgelist.cpp0100644000175000001440000000443107437361201017724 0ustar joachimusers #include "definitions.h" int ELhashsize; Halfedge *ELhash; void ELinitialize() { ELhashsize = 2 * sqrt_nsites; ELhash = new Halfedge[ELhashsize]; //ELleftend = Halfedge( Edge(), 0); //ELrightend = Halfedge(Edge(), 0); ELleftend.r -> ELright = ELrightend; ELrightend.r -> ELleft = ELleftend; ELhash[0] = ELleftend; ELhash[ELhashsize-1] = ELrightend; } void ELinsert(Halfedge lb, Halfedge neww) { neww.r -> ELleft = lb; neww.r -> ELright = lb.ELright(); (lb.r -> ELright).r -> ELleft = neww; lb.r -> ELright = neww; } Halfedge NullHalfedge; /* Get entry from hash table, pruning any deleted nodes */ Halfedge ELgethash(int b) { Halfedge he; if(b<0 || b>=ELhashsize) return NullHalfedge; he = ELhash[b]; if (!he.isDeleted()) return (he); /* Hash table points to deleted half edge. Patch as necessary. */ ELhash[b] = NullHalfedge; return NullHalfedge; } Halfedge ELleftbnd(Point *p) { int i, bucket; Halfedge he; /* Use hash table to get close to desired halfedge */ bucket = ((p->x - xmin)/deltax * (ELhashsize)).intValue(); // double bucket2 = ((p->x - xmin)/deltax * ELhashsize); if(bucket<0) bucket =0; if(bucket>=ELhashsize) bucket = ELhashsize - 1; he = ELgethash(bucket); if(he.isNull()) { for(i=1; 1 ; i += 1) { he=ELgethash(bucket-i); if (he.notNull()) break; he=ELgethash(bucket+i); if (he.notNull()) break; } } /* Now search linear list of halfedges for the corect one */ if (he==ELleftend || (he != ELrightend && right_of(he,p))) {do {he = he.ELright();} while (he!=ELrightend && right_of(he,p)); he = he.ELleft(); } else do {he = he.ELleft();} while (he!=ELleftend && !right_of(he,p)); /* Update hash table and reference counts */ if(bucket > 0 && bucket ELleft).r -> ELright = he.ELright(); (he.r -> ELright).r -> ELleft = he.ELleft(); he.r -> deleted = 1; } Site& Halfedge::leftreg(Site& bottomsite) { if((r->ELedge).isNull()) return(bottomsite); return (r -> ELedge.reg(r->ELpm)); } Site& Halfedge::rightreg(Site& bottomsite) { if((r->ELedge).isNull()) return(bottomsite); return (r -> ELedge.reg(1 - r->ELpm)); } core++-1.7/progs/fortune/vor/geometry.cpp0100644000175000001440000000707607674161535020002 0ustar joachimusers#include "definitions.h" int EdgeRep::nedges = 0; int Vertex::nvertices = 0; void geominit() { double sn; // This is just used for finding a square root sn = nsites+4; sqrt_nsites = (sqrt(sn)).intValue(); deltay = ymax - ymin; deltax = xmax - xmin; } int compare(const Point& p1, const Point& p2) { if (p1.y < p2.y) return -1; if (p1.y > p2.y) return 1; if (p1.x < p2.x) return -1; if (p1.x > p2.x) return 1; return 0; } EdgeRep::EdgeRep(Site& s1, Site& s2) { MyFloat dx,dy,adx,ady; reg[0]=s1; reg[1]=s2; edgenbr=nedges++; refcnt = 0; dx = s2.x() - s1.x(); dy = s2.y() - s1.y(); if (dx > (MyFloat)0) adx = dx; else adx = -dx; if (dy > (MyFloat)0) ady = dy; else ady = -dy; c = s1.x() * dx + s1.y() * dy + (dx*dx + dy*dy) * (MyFloat)0.5; if (adx>ady) { a = 1.0; b = dy/dx; c /= dx; } else { b = 1.0; a = dx/dy; c /= dy; }; } Edge bisect(Site& s1, Site& s2) { Edge newedge(s1, s2); out_bisector(newedge); return(newedge); } int isSmall(MyFloat& f) { // CHen Li: use exact comparison // if (f > (MyFloat)1.0e-10) return 0; // if (f < (MyFloat)-1.0e-10) return 0; return (f == 0); } Vertex intersect(Halfedge el1, Halfedge el2) { Edge e1, e2, e; Halfedge el; MyFloat d, xint, yint; int right_of_site; Vertex v; // a null vertex until we assign it something else e1 = el1.r -> ELedge; e2 = el2.r -> ELedge; if(e1.isNull() || e2.isNull()) return v; if (e1.r->reg[1] == e2.r->reg[1]) return v; d = e1.r->a * e2.r->b - e1.r->b * e2.r->a; if (isSmall(d)) return v; xint = (e1.r->c*e2.r->b - e2.r->c*e1.r->b)/d; yint = (e2.r->c*e1.r->a - e1.r->c*e2.r->a)/d; if( e1.r->reg[1].point() < e2.r->reg[1].point()) { el = el1; e = e1;} else { el = el2; e = e2;}; right_of_site = xint >= e.r -> reg[1].x(); if ((right_of_site && el.r -> ELpm == le) || (!right_of_site && el.r -> ELpm == re)) return v; Vertex v2(xint, yint); return(v2); } /* returns 1 if p is to right of halfedge e */ int right_of(Halfedge el, Point *p) { Edge e; Site topsite; int right_of_site, above, fast; MyFloat dxp, dyp, dxs, t1, t2, t3, yl; e = el.r -> ELedge; topsite = e.r -> reg[1]; right_of_site = p -> x > topsite.x(); if(right_of_site && el.r -> ELpm == le) return(1); if(!right_of_site && el.r -> ELpm == re) return (0); if (e.r->a == (MyFloat)1.0) { dyp = p->y - topsite.y(); dxp = p->x - topsite.x(); fast = 0; if (((!right_of_site) & (e.r->b<(MyFloat)0.0)) | (right_of_site&(e.r->b>=(MyFloat)0.0)) ) { above = dyp>= e.r->b*dxp; fast = above; } else { above = p->x + p->y*e.r->b > e.r-> c; if(e.r->b<(MyFloat)0.0) above = !above; if (!above) fast = 1; }; if (!fast) { dxs = topsite.x() - e.r->reg[0].x(); above = e.r->b * (dxp*dxp - dyp*dyp) < dxs*dyp*((MyFloat)(1.0)+(MyFloat)(2.0)*dxp/dxs + e.r->b*e.r->b); if(e.r->b<(MyFloat)(0.0)) above = !above; }; } else /*e->b==1.0 */ { yl = e.r->c - e.r->a*p->x; t1 = p->y - yl; t2 = p->x - topsite.x(); t3 = yl - topsite.y(); above = t1*t1 > t2*t2 + t3*t3; }; return (el.r->ELpm==le ? above : !above); } void endpoint(Edge& e, int lr, Vertex& s) { e.r -> ep[lr] = s; if(e.r -> ep[re-lr].isNull()) return; out_ep(e); } MyFloat dist(const Point& s, const Point& t) { double dx,dy; // Again, these are used for finding a Square root dx = (MyFloat)(s.x) - (MyFloat)(t.x); dy = (MyFloat)(s.y) - (MyFloat)(t.y); return((MyFloat)sqrt(dx*dx + dy*dy)); } void Vertex::makevertex() { r -> sitenbr = nvertices++; output(); } bool operator == (const Site& s1, const Site& s2) { return (s1.r == s2.r); } core++-1.7/progs/fortune/vor/heap.cpp0100644000175000001440000000431107520314022017026 0ustar joachimusers#include "definitions.h" #include "PQlist.h" PQlist *PQhash; int PQhashsize; int PQcount; int PQmin; int compare(const Halfedge& h1, const Halfedge& h2) { if (h1.r->ystar > h2.r->ystar) return 1; if (h1.r->ystar < h2.r->ystar) return -1; if (h1.r->vertex.x() > h2.r->vertex.x()) return 1; if (h1.r->vertex.x() < h2.r->vertex.x()) return -1; return(0); } inline int operator > (const Halfedge& h1, const Halfedge& h2) { return (compare(h1, h2) > 0); } void PQlist::PQinsert(Halfedge& he) { PQlist last; PQlist next = *this; while (next.notNull() && (he > next.r->he)) {last = next; next = next.r->PQnext;} PQlistRep *neww = new PQlistRep(he, next); if (last.isNull()) r = neww; else last.r -> PQnext.r = neww; PQcount += 1; } void PQinsert(Halfedge& he, Vertex& v, MyFloat offset) { he.r -> vertex = v; he.r -> ystar = v.y() + offset; int bucket = PQbucket(he); PQhash[bucket].PQinsert(he); } void PQlist::PQdelete(Halfedge& he) { PQlist last = *this; if (last.r->he == he) { PQlist next = last.r->PQnext; delete r; r = next.r; } else { while (last.r -> PQnext.r->he != he) last = last.r -> PQnext; PQlist next = last.r->PQnext.r -> PQnext; delete last.r->PQnext.r; last.r -> PQnext = next; } PQcount -= 1; } void PQdelete(Halfedge& he) { if((he.r -> vertex.isNull())) return; he.r -> vertex.setNull(); // give it a Null site int bucket = PQbucket(he); PQhash[bucket].PQdelete(he); } int PQbucket(Halfedge& he) { int bucket; bucket = ((he.r->ystar - ymin)/deltay * (MyFloat)PQhashsize).intValue(); if (bucket<0) bucket = 0; if (bucket>=PQhashsize) bucket = PQhashsize-1 ; if (bucket < PQmin) PQmin = bucket; return(bucket); } int PQempty() { return(PQcount==0); } void PQ_min(Point *answer) { while(PQhash[PQmin].isNull()) {PQmin += 1;}; answer->x = PQhash[PQmin].r->he.r -> vertex.x(); answer->y = PQhash[PQmin].r->he.r -> ystar; } Halfedge PQlist::extractmin() { Halfedge curr = r->he; PQlist next = r -> PQnext; delete r; r = next.r; --PQcount; return(curr); } Halfedge PQextractmin() { return PQhash[PQmin].extractmin(); } void PQinitialize() { PQcount = 0; PQmin = 0; PQhashsize = 4 * sqrt_nsites; PQhash = new PQlist[PQhashsize]; } core++-1.7/progs/fortune/vor/main.cpp0100644000175000001440000001067710145242047017055 0ustar joachimusers/* ***************************************************** File: main.cpp This is the Core Version of Fortune's implementation of his Voronoi diagram algorithm for a 2-D point set. Usage: The program (called voronoi here) reads from standard input and outputs standard output. You can redirect input and output as follows: % ./voronoi < input_file > output_file Without any arguments, the default output is a Voronoi diagram represented by a text file with lines in one of the 4 forms: s [x] [y] -- "site" with coordinates (x,y), an input point v [x] [y] -- "voronoi vertex" with coordinates (x,y) e [u] [uL] [uR] -- "voronoi edge" with ID=u, and with endpoints (i.e., voronoi vertices) whose ID's are uL and uR. l [a] [b] [c] -- "voronoi ray" with line equation aX+bY=c. The program takes several options: % voronoi [-option] where option is any combination taken from d = debug -- similar to the default output, but more verbose (e.g., each site (s) will have an ID, each ray (l) will tell you the ID's of the two sites that it bisects, etc) c = postscript -- output a postscript file t = triangulate -- compute Delaunay triangulation instead of Vor.Diag s = sorted -- sort the points (to speed up computation) p = plot -- disabled E.g., % ./voronoi -tc < input_file > output_file.ps will output a postscript file representing the Delaunay triangulation of the input points. Author: Steve Fortune wrote the original code in C. 1997: Tom Dube and Chee Yap adapted it for Real/Expr and C++. 2000: Celso Rodriguiz adapted it for Core Library. Core Library File ***************************************************** */ #include // #include "getopt.h" #define INCLUDEGLOBAL #include "definitions.h" using namespace std; /* templates for functions defined in this file */ extern "C" int scomp(const void *elem1, const void *elem2); void readsites(); void sortsites(); // static data static Site *sites = NULL; int main(int argc, char **argv) { long msec; msec = clock(); sorted = 0; triangulate = 0; plot = 0; debug = 0; postscript = 0; int c; while((c=getopt(argc,argv,"dpstfc")) != EOF) switch(c) { case 'd': debug = 1; break; case 's': sorted = 1; break; case 't': triangulate = 1; break; case 'p': plot = 1; break; case 'c': postscript = 1; }; if(sorted) { cin >> nsites >> xmin >> xmax >> ymin >> ymax; readsites(); } else { readsites(); sortsites(); }; siteidx = 0; geominit(); if(plot | postscript) plotinit(); voronoi(triangulate); if (!postscript) { cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << endl; cout << "Number of Voronoi edges = " << EdgeRep::nedges << endl; cout << "Number of Voronoi vertices = " << Vertex::nvertices << endl; cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << endl; } if (plot | postscript) plotclose(); if (!postscript){ msec = clock(); cout << "The number of microseconds is " << msec << "\n"; } return 0; } /* sort sites on y, then x */ int scomp(const void * elem1, const void * elem2) { Site * s1 = (Site *)(elem1); Site * s2 = (Site *)(elem2); if (s1 == NULL || s2 == NULL) return 0; if((*s1).y() < (*s2).y()) return(-1); if((*s1).y() > (*s2).y()) return(1); if((*s1).x() < (*s2).x()) return(-1); if((*s1).x() > (*s2).x()) return(1); return(0); } /* return a single in-storage site */ Site nullSite; Site& nextsite() { if(siteidx < nsites) return (sites[siteidx++]); else return( nullSite); } void readsites() { MyFloat x, y; nsites=0; sites = new Site[4096]; cin >> x >> y; while (!cin.eof()) { // nsites should be handled inside of class Site sites[nsites] = Site(x, y, nsites); nsites += 1; if (nsites % 4000 == 0) moreSites(&sites, nsites, 4096); cin >> x >> y; } } /* sort, and compute xmin, xmax, ymin, ymax */ // These xmin, etc, are only computed for sites, so for output we // also need to look at Voronoi vertices and Vor edges! void sortsites() { int i; qsort(sites, nsites, sizeof(Site), scomp); xmin=sites[0].x(); xmax=sites[0].x(); for(i=1; i xmax) xmax = sites[i].x(); }; ymin = sites[0].y(); ymax = sites[nsites-1].y(); } core++-1.7/progs/fortune/vor/main_lattice.cpp0100644000175000001440000000646210145242047020557 0ustar joachimusers/* ***************************************************** File: main_lattice.cpp Variant of main.cpp, a Core Library Version of Fortune's implementation of his algorithm. ***************************************************** */ #include // #include "getopt.h" extern "C" int scomp(const void *elem1, const void *elem2); void readsites(); void sortsites(); // static data static Site *sites = NULL; static int L = 10; static int N = 32; int main(int argc, char **argv) { long msec; msec = clock(); sorted = 0; triangulate = 0; plot = 0; debug = 0; postscript = 1; int c; while((c=getopt(argc,argv,"dpstfc")) != EOF) switch(c) { case 'd': debug = 1; break; case 's': sorted = 1; break; case 't': triangulate = 1; break; case 'p': plot = 1; break; case 'c': postscript = 1; }; if (argc == 3) { N = atoi(argv[1]); L = atoi(argv[2]); } else { std::cout << "Usage: voronoi " << std::endl; exit(1); } if(sorted) { std::cin >> nsites >> xmin >> xmax >> ymin >> ymax; readsites(); } else { readsites(); sortsites(); }; siteidx = 0; geominit(); if(plot | postscript) plotinit(); voronoi(triangulate); if (plot | postscript) plotclose(); if (!postscript){ msec = clock(); std::cout << "The number of microseconds is " << msec << "\n"; } return 0; } /* sort sites on y, then x */ int scomp(const void * elem1, const void * elem2) { Site * s1 = (Site *)(elem1); Site * s2 = (Site *)(elem2); if (s1 == NULL || s2 == NULL) return 0; if((*s1).y() < (*s2).y()) return(-1); if((*s1).y() > (*s2).y()) return(1); if((*s1).x() < (*s2).x()) return(-1); if((*s1).x() > (*s2).x()) return(1); return(0); } /* return a single in-storage site */ Site nullSite; Site& nextsite() { if(siteidx < nsites) return (sites[siteidx++]); else return( nullSite); } void readsites() { nsites=0; sites = new Site[N * N]; // generate a M * M uniform grid with L-bit coordinates BigInt RANGE = 1 ; // BigFloat::exp2(L-1); RANGE = RANGE << (L - 2); BigInt BASE = RANGE << 1; BigInt max_step = (RANGE / N); BigInt step = abs(randomize(max_step)); std::cout << "%% BASE: " << BASE << ", step: " << step << std::endl; BigInt tx = 0, ty = 0; for (int i = 0; i < N; i++) { MyFloat xx = BASE + tx; for (int j = 0; j < N; j++) { MyFloat yy = BASE + ty; sites[nsites] = Site(xx, yy, nsites); std::cout <<"xx, yy = " << xx << ", " << yy << std::endl; nsites += 1; ty += step; } tx += step; } /* std::cin >> x >> y; while (!std::cin.eof()) { // nsites should be handled inside of class Site MyFloat xx = x; MyFloat yy = y; sites[nsites] = Site(xx, yy, nsites); nsites += 1; if (nsites % 4000 == 0) moreSites(&sites, nsites, 4096); std::cin >> x >> y; } */ } /* sort, and compute xmin, xmax, ymin, ymax */ void sortsites() { int i; qsort(sites, nsites, sizeof(Site), scomp); xmin=sites[0].x(); xmax=sites[0].x(); for(i=1; i xmax) xmax = sites[i].x(); }; ymin = sites[0].y(); ymax = sites[nsites-1].y(); } core++-1.7/progs/fortune/vor/memory.cpp0100644000175000001440000000125207520330315017425 0ustar joachimusers#include "definitions.h" /* Freelist::Freelist(int size) { head = (Freenode *) NULL; nodesize = size; } void * Freelist::getfree() { void *t; if (head == (Freenode *) NULL) t = new char[nodesize]; else { t = (void *)head; head = head -> nextfree; } return t; } void Freelist::makefree(void* curr) { Freenode *newhead = (Freenode *)curr; newhead -> nextfree = head; head = newhead; } */ void moreSites(Site **s, unsigned current, unsigned additional) { std::cerr << "Sorry, moreSites is unimplemented\n"; exit(0); } /* Freelist SiteRep::flist(sizeof(SiteRep)); Freelist EdgeRep::flist(sizeof(EdgeRep)); Freelist HalfedgeRep::flist(sizeof(HalfedgeRep));*/ core++-1.7/progs/fortune/vor/output.cpp0100644000175000001440000001642610144502357017471 0ustar joachimusers#include "definitions.h" #ifdef PLOT #include "plot.h" #endif using namespace std; void clip_line(Edge& e, int plotflag); MyFloat pxmin, pxmax, pymin, pymax, cradius; // yap // need to update xmin and xmax, ymin and ymax void updateBoundingBox(const MyFloat& x, const MyFloat& y) { if (xmin > x) xmin = x; if (xmax < x) xmax = x; if (ymin > y) ymin = y; if (ymax < y) ymax = y; } void OutPoint(const MyFloat& x, const MyFloat& y) { cout << ((MyFloat)RES * x).intValue() << "\t" << ((MyFloat)RES * y).intValue() << "\t"; updateBoundingBox(x, y); } void out_bisector(Edge& e) { #ifdef PLOT if(triangulate & plot &!debug) line(e.r->reg[0].x(), e.r->reg[0].y(), e.r->reg[1].x(), e.r->reg[1].y()); #endif // yap if(triangulate & postscript &!debug) { OutPoint(e.r->reg[0].x(), e.r->reg[0].y()); OutPoint(e.r->reg[1].x(), e.r->reg[1].y()); cout << " edge\n"; } double a = e.r->a; double b = e.r->b; double c = e.r->c; if(!triangulate & !plot &!debug &!postscript) cout << "l " << a << " " << b << " " << c << "\n"; if(debug) { cout << "line(" << e.r->edgenbr << ") " << a << "x+" << b << "y=" << c << ", bisecting " << e.r->reg[le].id() << " " << e.r->reg[re].id() << "\n"; } } // output endpoint (ep) void out_ep(Edge& e) { if(!triangulate & plot) clip_line(e,1); if(!triangulate & postscript) clip_line(e,0); if(!triangulate & !plot & !postscript) { cout << "e " << e.r->edgenbr << " " ; if (e.r->ep[le].isNull()) cout << "-1 "; else cout << e.r->ep[le].id() << " "; if (e.r->ep[re].isNull()) cout << "-1\n"; else cout << e.r->ep[re].id() << "\n"; if(debug){ cout << "edge(" << e.r->edgenbr << "), (?) "; if (e.r->ep[le].isNull()) cout << "left endpoint id = -1 "; else cout << "left endpoint id = " << e.r->ep[le].id(); if (e.r->ep[re].isNull()) cout << "right endpoint id = -1 "; else cout << "right endpoint id = " << e.r->ep[re].id(); cout << endl; } }; } void Vertex::output() { double xd = x(); double yd = y(); if(!triangulate & !plot &!debug & !postscript) cout << "v " << xd << " " << yd << "\n"; if(debug) cout << "vertex(" << id() << ") at " << xd << " " << yd << "\n"; } void Site::output() { double xd = x(); double yd = y(); #ifdef PLOT if(!triangulate & plot & !debug) circle (xd, yd, cradius); #endif if(!triangulate & postscript & !debug) { OutPoint(x(),y()); cout << " vertex\n"; } if(!triangulate & !plot & !debug & !postscript) cout << "s " << xd << " " << yd << "\n"; if(debug) cout << "site (" << id() << ") at " << xd << " " << yd << "\n"; } void out_triple(const Site& s1, const Site& s2, const Site& s3) { if(triangulate & !plot &!debug & !postscript) cout << s1.id() << " " << s2.id() << " " << s3.id() << "\n"; if(debug) cout << "circle through left=" << s1.id() << " right=" << s2.id() << " bottom=" << s3.id() << "\n"; } void plotinit() { MyFloat dx,dy,d; dy = ymax - ymin; dx = xmax - xmin; d = ( dx > dy ? dx : dy) * (MyFloat)1.1; pxmin = xmin - (d-dx)/(MyFloat)2.0; pxmax = xmax + (d-dx)/(MyFloat)2.0; pymin = ymin - (d-dy)/(MyFloat)2.0; pymax = ymax + (d-dy)/(MyFloat)2.0; cradius = (pxmax - pxmin)/(MyFloat)350.0; #ifdef PLOT if (plot) { openpl(); range(pxmin, pymin, pxmax, pymax); } #endif // yap if (postscript) { cout << "%!PS-Adobe-2.0\n"; cout << "%% draw vertex\n" << "/vertex {\n" << "2 0 360 arc fill\n" << "} def\n\n"; cout << "%% draw edge \n" << "/edge {\n" << "/y2 exch def\n" << "/x2 exch def\n" << "moveto\n" << "x2 y2 lineto stroke\n" << "} def\n\n"; cout << XTRANS << "\t" << YTRANS << "\t translate\n" /* << "newpath\n" << ((MyFloat)RES *pxmin).intValue() << "\t" << ((MyFloat)RES *pymin).intValue() << "\t moveto\n"; cout << ((MyFloat)RES *pxmin).intValue() << "\t" << ((MyFloat)RES *pymax).intValue() << "\t lineto\n"; cout << ((MyFloat)RES *pxmax).intValue() << "\t" << ((MyFloat)RES *pymax).intValue() << "\t lineto\n"; cout << ((MyFloat)RES *pxmax).intValue() << "\t" << ((MyFloat)RES *pymin).intValue() << "\t lineto\n"; cout << "closepath\n" */ << "2 setlinewidth\n" << "stroke \n" << "1 setlinewidth\n\n"; } // yap } void clip_line(Edge& e, int plotflag) { Site s1, s2; MyFloat x1,x2,y1,y2; if(e.r -> a == (MyFloat)1.0 && e.r ->b >= (MyFloat)0.0) { s1 = e.r -> ep[1]; s2 = e.r -> ep[0]; } else { s1 = e.r -> ep[0]; s2 = e.r -> ep[1]; }; if(e.r -> a == (MyFloat)1.0) { y1 = pymin; if (s1.notNull() && s1.y() > pymin) y1 = s1.y(); if(y1>pymax) return; x1 = e.r -> c - e.r -> b * y1; y2 = pymax; if (s2.notNull() && s2.y() < pymax) y2 = s2.y(); if(y2 c - e.r -> b * y2; if (((x1> pxmax) & (x2>pxmax)) | ((x1 pxmax) { x1 = pxmax; y1 = (e.r -> c - x1)/e.r -> b;}; if(x1 c - x1)/e.r -> b;}; if(x2>pxmax) { x2 = pxmax; y2 = (e.r -> c - x2)/e.r -> b;}; if(x2 c - x2)/e.r -> b;}; } else { x1 = pxmin; if (s1.notNull() && s1.x() > pxmin) x1 = s1.x(); if(x1>pxmax) return; y1 = e.r -> c - e.r -> a * x1; x2 = pxmax; if (s2.notNull() && s2.x() < pxmax) x2 = s2.x(); if(x2 c - e.r -> a * x2; if (((y1> pymax) & (y2>pymax)) | ((y1 pymax) { y1 = pymax; x1 = (e.r -> c - y1)/e.r -> a;}; if(y1 c - y1)/e.r -> a;}; if(y2>pymax) { y2 = pymax; x2 = (e.r -> c - y2)/e.r -> a;}; if(y2 c - y2)/e.r -> a;}; }; #ifdef PLOT if (plotflag) line(x1,y1,x2,y2); #endif if (postscript) { cout << ((MyFloat)RES *x1).intValue() << "\t" << ((MyFloat)RES *y1).intValue() << "\t" << ((MyFloat)RES *x2).intValue() << "\t" << ((MyFloat)RES *y2).intValue() << "\t" << " edge\n"; updateBoundingBox(x1,y1); updateBoundingBox(x2,y2); } } void plotclose() { MyFloat dx,dy,d; dy = ymax - ymin; dx = xmax - xmin; d = ( dx > dy ? dx : dy) * (MyFloat)1.1; pxmin = xmin;// - (d-dx)/(MyFloat)2.0; pxmax = xmax;// + (d-dx)/(MyFloat)2.0; pymin = ymin;// - (d-dy)/(MyFloat)2.0; pymax = ymax;// + (d-dy)/(MyFloat)2.0; #ifdef PLOT if (plot) { openpl(); range(pxmin, pymin, pxmax, pymax); } #endif #ifdef PLOT if (plot) closepl(); #endif if (postscript){ cout << "newpath\n" << (RES*pxmin).intValue() << "\t" << (RES*pymin).intValue() << "\t moveto\n"; cout << (RES*pxmin).intValue() << "\t" << (RES*pymax).intValue() << "\t lineto\n"; cout << (RES*pxmax).intValue() << "\t" << (RES*pymax).intValue() << "\t lineto\n"; cout << (RES*pxmax).intValue() << "\t" << (RES*pymin).intValue() << "\t lineto\n"; cout << "closepath\n"; cout << "stroke\n"; cout << "\n showpage\n"; } } core++-1.7/progs/fortune/vor/voronoi.cpp0100644000175000001440000000455010136220420017604 0ustar joachimusers#include "definitions.h" /* implicit parameters: nsites, sqrt_nsites, xmin, xmax, ymin, ymax, deltax, deltay (can all be estimates). Performance suffers if they are wrong; better to make nsites, deltax, and deltay too big than too small. (?) */ void voronoi(int triangulate) { Site bot, top, temp; Vertex p; Vertex v; Point newintstar; int pm; Halfedge lbnd, rbnd, llbnd, rrbnd, bisector; Edge e; PQinitialize(); Site bottomsite = nextsite(); bottomsite.output(); ELinitialize(); Site newsite = nextsite(); while(1) { if(!PQempty()) PQ_min(&newintstar); if (newsite.notNull() && (PQempty() || newsite.point() < newintstar)) {/* new site is smallest */ newsite.output(); lbnd = ELleftbnd(&(newsite.point())); rbnd = lbnd.ELright(); bot = lbnd.rightreg(bottomsite); e = bisect(bot, newsite); bisector = Halfedge(e, le); //le=0 (see definitions.h) ELinsert(lbnd, bisector); p = intersect(lbnd, bisector); if (p.notNull()) { PQdelete(lbnd); PQinsert(lbnd, p, dist(p.point(),newsite.point())); }; lbnd = bisector; bisector = Halfedge(e, re); //re=1 (see definitions.h) ELinsert(lbnd, bisector); p = intersect(bisector, rbnd); if (p.notNull()) { PQinsert(bisector, p, dist(p.point(),newsite.point())); } newsite = nextsite(); } else if (!PQempty()) /* intersection is smallest */ { lbnd = PQextractmin(); llbnd = lbnd.ELleft(); rbnd = lbnd.ELright(); rrbnd = rbnd.ELright(); bot = lbnd.leftreg(bottomsite); top = rbnd.rightreg(bottomsite); out_triple(bot, top, lbnd.rightreg(bottomsite)); v = lbnd.r->vertex; v.makevertex(); endpoint(lbnd.r->ELedge,lbnd.r->ELpm,v); endpoint(rbnd.r->ELedge,rbnd.r->ELpm,v); ELdelete(lbnd); PQdelete(rbnd); ELdelete(rbnd); pm = le; if (bot.y() > top.y()) { temp = bot; bot = top; top = temp; pm = re;} e = bisect(bot, top); bisector = Halfedge(e, pm); ELinsert(llbnd, bisector); endpoint(e, re-pm, v); p = intersect(llbnd, bisector); if (!p.isNull()) { PQdelete(llbnd); PQinsert(llbnd, p, dist(p.point(),bot.point())); }; p = intersect(bisector, rrbnd); if (!p.isNull()) { PQinsert(bisector, p, dist(p.point(),bot.point())); }; } else break; }; for (Halfedge & h = const_cast(ELleftend.ELright()); h != ELrightend; h=const_cast(h.ELright())) { e = h.r -> ELedge; out_ep(e); }; } core++-1.7/progs/fortune/vor/inputs/0040755000175000001440000000000010147210064016733 5ustar joachimuserscore++-1.7/progs/fortune/vor/inputs/README0100644000175000001440000000043110136275722017620 0ustar joachimusersSample files for Fortune's algorithm point100: random set of 100 points lattice9: 9 points that form a 3x3 lattice circle8: 8 points on a circle circle10: 10 points on a circle (produced by pythagorean program) circle100: 100 points on a circle (produced by pythagorean program) core++-1.7/progs/fortune/vor/inputs/circle100100644000175000001440000000103410136275723020266 0ustar joachimusers1.600000000000000000000000 1.800000000000000000000000 0.720000000000000000000000 1.960000000000000000000000 0.064000000000000000000000 1.352000000000000000000000 0.156800000000000000000000 0.462400000000000000000000 0.924160000000000000000000 0.002880000000000000000000 1.752192000000000000000000 0.341056000000000000000000 1.978470400000000000000000 1.206387200000000000000000 1.421972480000000000000000 1.906608640000000000000000 0.527896576000000000000000 1.881543168000000000000000 0.011503411200000000000000 1.151243161600000000000000 core++-1.7/progs/fortune/vor/inputs/circle1000100644000175000001440000001257310136275723020360 0ustar joachimusers0.600000000000000000000000 0.800000000000000000000000 -0.280000000000000000000000 0.960000000000000000000000 -0.936000000000000000000000 0.352000000000000000000000 -0.843200000000000000000000 -0.537600000000000000000000 -0.075840000000000000000000 -0.997120000000000000000000 0.752192000000000000000000 -0.658944000000000000000000 0.978470400000000000000000 0.206387200000000000000000 0.421972480000000000000000 0.906608640000000000000000 -0.472103424000000000000000 0.881543168000000000000000 -0.988496588800000000000000 0.151243161600000000000000 -0.714092482560000000000000 -0.700051374080000000000000 0.131585609728000000000000 -0.991304810496000000000000 0.871995214233600000000000 -0.489514398515200000000000 0.914808647352320000000000 0.403887532277760000000000 0.225775162589184000000000 0.974179437248512000000000 -0.643878452245299200000000 0.765127792420454400000000 -0.998429305283543040000000 -0.056026086343966720000000 -0.554236714094952448000000 -0.832359096033214464000000 0.333345248369600102400000 -0.942804828895890636800000 0.954251012138472570880000 -0.299006698641854300160000 0.811755966196566982656000 0.583996790525665476608000 0.019856147297407808307200 0.999802847272652872089600 -0.787928589439677612687360 0.615766626201517969899520 -0.965370454625020943532032 -0.260882895830831308210176 -0.370515956110347519551078 -0.928826101198515539751731 0.520751307292603920070738 -0.853708425607387339491901 0.995417524861472223635964 -0.095624009530349267638551 0.673749722541162748292419 0.738959614170968218325641 -0.186917857812076925685061 0.982375546535511129629319 -0.898051151915655059114492 0.439891041671645137229543 -0.890743524486709145252330 -0.454506296529536964953868 -0.170841077468395915188303 -0.985298597507089495174185 0.685734231524634047026366 -0.727852020478970429255153 0.993722155297956771619942 0.111876172932324980068001 0.506732354832914078917565 0.862103427997760405336754 -0.385643329498459876918865 0.922647940664987506336104 -0.969504350231065931220202 0.245074100800224602266571 -0.777761890778819240545378 -0.628559019704717983616219 0.036190081296482842565749 -0.999344924445886182606034 0.821189988334598651624276 -0.570654889630345435511021 0.949237904705035539383383 0.314559056889471659992808 0.317895497311443995635783 0.948125757897711427502391 -0.567763307931302744620443 0.823191852587782053010061 -0.999211466829007289180315 0.039704465207627036109682 -0.631290452263506002395935 -0.775546494338629609678442 0.241662924112800086305193 -0.970360258413982567723813 0.921285961198866105962166 -0.388885815758149471590134 0.863880229325839240849407 0.503697279504203201815653 0.115370313992140983057122 0.993322551163193313768917 -0.725435852535270061180861 0.688289781891628774707048 -0.985893337034465056474155 -0.167374812893238784120460 -0.457636151906088006588125 -0.889139557363515315651600 0.436729954747159448568405 -0.899592655942979594661460 0.981712097602679344870211 -0.190371629768060197942152 0.741324562376055765275848 0.671146700221307357130877 -0.092122622751412426539193 0.995747670033629026499205 -0.851871709677750677122880 0.523750503819047474668168 -0.930123428861888386008262 -0.367247065450772056897403 -0.264276404956515386087035 -0.964446982359973942945052 0.612991742914069922703820 -0.790089313381196674636659 0.999866496453399293331619 0.016339806302537933381061 0.586848052830009229294123 0.809697080944242194693932 -0.295648833057388218178672 0.955296690830552700251658 -0.941626652498875091108529 0.336658948052421045608057 -0.834303149941261891151563 -0.551305953167647445521989 -0.059537127430639178273347 -0.998226091853597980234444 0.762858597024494877223547 -0.646565357056670130759344 0.974967443860033030941603 0.222347663385593823323231 0.407102335607544759906377 0.913382553119382718747222 -0.486444641130979319053951 0.873711400357665439173434 -0.990835904964719942771118 0.135071127309815808260900 -0.702558444826684612271391 -0.711626047585886469260355 0.147765771172698408045449 -0.989022384412879571373325 0.879877370233922701925930 -0.475200813709569016387636 0.908087073108008834265667 0.418781407961396751708162 0.209827117495687899192870 0.977738503263245118437431 -0.656294532113183355234223 0.754504795954497390416754 -0.997380556031507925473937 -0.072332748117848249937325 -0.540562135124626155334502 -0.841304093695915290341545 0.348705993881956539072535 -0.937232164317250098472528 0.959009327782974002221544 -0.283374503484784827825489 0.802105199457612263593318 0.597182760135508305081941 0.003516911566160714090437 0.999993815647394793923819 -0.797884905578219406684793 0.602809818641365447626641 -0.960978798260024002112189 -0.276622033277756256771849 -0.355289652333809395849834 -0.934756258574672955752861 0.534631215459452727092388 -0.845085477011851290131583 0.996847110885152668360700 -0.079346313839548592405039 0.661585317602730474940451 0.749869900404392979245536 -0.202944729761876098432158 0.979190194324820167499683 -0.905118993316981793059041 0.425158332785391221754083 -0.883198062218502053238691 -0.469000194982350701394783 -0.154718681345220670827388 -0.987958566764212063427823 0.697535644604237248245825 -0.716550085134703774718604 0.991761454870305368722378 0.128098464602567533765498 0.492578101240129194221029 0.870268242657784815237201 -0.400667733382150335657144 0.916223426586774244519144 -0.973379381298709597009601 0.229199869246344278185772 -0.767387524176301180754378 -0.641183583491161110696218 0.052514352287148180104348 -0.998620169435737611021233 core++-1.7/progs/fortune/vor/inputs/circle80100644000175000001440000000012707437361201020214 0ustar joachimusers0.0 1.0 0.707 0.707 1.0 0.0 0.707 -0.707 0.0 -1.0 -0.707 -0.707 -1.0 0.0 -0.707 0.707 core++-1.7/progs/fortune/vor/inputs/lattice90100644000175000001440000000011107437361201020372 0ustar joachimusers0.1 0.1 0.1 0.5 0.1 0.9 0.5 0.1 0.5 0.5 0.5 0.9 0.9 0.1 0.9 0.5 0.9 0.9 core++-1.7/progs/fortune/vor/inputs/lattice9L0100644000175000001440000000017707437361201020522 0ustar joachimusers100000 100000 100000 500000 100000 900000 500000 100000 500000 500000 500000 900000 900000 100000 900000 500000 900000 900000 core++-1.7/progs/fortune/vor/inputs/points1000100644000175000001440000000343307437361201020423 0ustar joachimusers0.532095 0.894141 0.189043 0.613426 0.550977 0.415724 0.00397384 0.60576 0.89423 0.666812 0.0730728 0.740658 0.64018 0.926186 0.389914 0.553149 0.046918 0.172275 0.820327 0.578957 0.166575 0.597895 0.587999 0.824301 0.184717 0.0608049 0.264707 0.661072 0.564959 0.824897 0.986991 0.654621 0.214221 0.611877 0.997171 0.807318 0.233578 0.380796 0.209772 0.585171 0.631619 0.418295 0.441601 0.474479 0.246242 0.196578 0.243191 0.428592 0.129101 0.460463 0.808454 0.240363 0.23591 0.362678 0.841259 0.0182264 0.825533 0.867529 0.780973 0.282859 0.492706 0.0717757 0.0641069 0.0241644 0.711451 0.621806 0.532239 0.872561 0.264527 0.947361 0.984485 0.373498 0.890788 0.0900603 0.81489 0.765458 0.656357 0.383494 0.161836 0.878997 0.789622 0.367808 0.00529994 0.694075 0.751558 0.0541492 0.315169 0.989785 0.0675723 0.642346 0.144209 0.130059 0.755242 0.723929 0.0258396 0.306045 0.00905612 0.544864 0.0917369 0.0311395 0.000120247 0.760615 0.599014 0.406906 0.0209242 0.0676926 0.402961 0.743223 0.536965 0.776167 0.791622 0.4288 0.0492686 0.546021 0.321031 0.883358 0.45994 0.0493888 0.306635 0.920045 0.290264 0.480864 0.117081 0.709596 0.663268 0.827229 0.25703 0.908703 0.138396 0.712536 0.37325 0.578061 0.792062 0.598336 0.761925 0.679885 0.498106 0.0823257 0.0791993 0.879007 0.389481 0.161374 0.909555 0.33623 0.78771 0.527877 0.87391 0.282804 0.914291 0.579771 0.126212 0.635836 0.962689 0.412397 0.662097 0.205412 0.514842 0.35217 0.573771 0.571652 0.541641 0.302552 0.880047 0.447681 0.854456 0.455932 0.882323 0.00625933 0.0835167 0.817145 0.868329 0.54442 0.211671 0.598359 0.169315 0.4421 0.116072 0.753312 0.900911 0.0493624 0.889781 0.970528 0.209244 0.783234 0.0556217 0.973298 0.787673 0.0775736 0.327654 0.267293 0.571657 0.956988 0.519674 0.443726 0.0206049 0.472568 0.00635056 0.409455 0.414254 0.229849 core++-1.7/progs/fortune/vor/outputs/0040755000175000001440000000000010147210064017134 5ustar joachimuserscore++-1.7/progs/fortune/vor/outputs/README0100644000175000001440000000010207444161414020014 0ustar joachimusersREADME file This directory contains outputs from sample programs core++-1.7/progs/fortune/Makefile0100644000175000001440000000102210136227531016240 0ustar joachimusers# Makefile for fortune # # Core Library # $Id: Makefile,v 1.3 2004/10/22 16:03:37 exact Exp $ include ../Make.options default voronoi: -${MAKE} -C vor default test: -${MAKE} -C vor test predicates: -${MAKE} -C pred default pythagorean: -${MAKE} -C pythagoren default moretest: -${MAKE} -C vor moretest -${MAKE} -C pred test -${MAKE} -C pred moretest extratest: -${MAKE} -C pythagorean test clean: -${MAKE} -C vor clean -${MAKE} -C pred clean veryclean: -${MAKE} -C vor veryclean ${MAKE} -C pred veryclean core++-1.7/progs/fortune/README0100644000175000001440000000066607744720214015504 0ustar joachimusersREADME for fortune directory There are 2 subdirectories vor -- this is the CORE version of Fortune's implementation of his Voronoi diagram algorithm for a 2-D point set pred -- this contains timing tests for some predicates (and generalizations) used in Fortune's algorithm. These tests were described in the paper "A New Constructive Root Bound for Algebraic Expression" (SODA 2001). --Chen Li & Chee Yap July 2000. core++-1.7/progs/fortune/pred/0040755000175000001440000000000010147210064015535 5ustar joachimuserscore++-1.7/progs/fortune/pred/Makefile0100644000175000001440000000212310136221744017175 0ustar joachimusers# Makefile for pred # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.8 2004/10/22 15:14:44 exact Exp $ CORE_PATH=../../.. include ../../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= pred MORETARGETS= pred2 default: $(TARGETS) all: $(TARGETS) $(MORETARGETS) test: $(TARGETS) ./pred moretest: $(MORETARGETS) ./pred2 pred: pred.o pred2: pred2.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/fortune/pred/README0100644000175000001440000000035610136221744016423 0ustar joachimusersREADME for fortune/pred(icates) =============================== pred.cpp : test the expressino (a + sqrt(b)) / d - (a' + sqrt(b')) / d'. pred2.cpp : test a generalized expressino (a + sqrt[2^k](b)) / d - (a' + sqrt[2^k](b')) / d'. core++-1.7/progs/fortune/pred/pred.cpp0100644000175000001440000000475607662553775017237 0ustar joachimusers/************************************************************ file: pred.cc purpose: test the expression (a + sqrt(b)) / d - (a' + sqrt(b')) / d'. where a and a' are 3L-bits, b and b' are 6L-bits, d and d' are 2L-bits, resp. The basic predicate in Fortune's algorithm reduces to such an expression. The program will generate random values for these parameters with *exactly* XL-bits (X=3,6,2). author: Chen Li and Chee Yap CORE Library $Id: pred.cpp,v 1.4 2003/05/21 01:35:57 exact Exp $ ************************************************************/ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include #include "CORE.h" static int L = 20; /* BigInt bigRand(int k) { // generate a k-bit random big integer BigInt r = 0; BigInt q = 1; q <<= (k-1); // the leading bit is one. int bits = 0; unsigned int m; while (bits < k) { m = rand() % (1 << 15); // [0, 2^15 - 1] // std::cout << "m = " << m << std::endl; int rest = k - bits; if (rest > 15) { r <<= 15; r += m; bits += 15; } else { r <<= rest; r += (m % (1 << rest)); bits += rest; } } if (r < q) r+= q; std::cout << "r = " << r << ", lg(r) = " << lg(r) << std::endl; assert(r > 0); if ((rand() % 2) == 0) r = - r; return r; } */ BigInt bigRand(int k) { // generate a k-bit random big integer BigInt range = 1; range <<= k; BigInt r = randomize(range); // std::cout << "r = " << r << ", lg(r) = " << lg(r) << std::endl; if ((rand() % 2) == 0) r = - r; return r; } int main(int argc, char* argv[]) { double a1, b1, d1; double a2, b2, d2; int k = 1; if (argc == 2) { L = atoi(argv[1]); } else if (argc == 3) { L = atoi(argv[1]); k = atoi(argv[2]); } unsigned int seed1 = (unsigned int) (time(NULL) % UINT_MAX); srand(seed1); machine_long t1, t2; machine_long total = 0; for (int i = 0; i < k; i++) { a1 = bigRand(3 * L); b1 = abs(bigRand(6 * L)); d1 = bigRand(2 * L); a2 = a1; b2 = b1; d2 = d1; t1 = clock(); double e1 = (a1 + sqrt(b1)) / d1; double e2 = (a2 + sqrt(b2)) / d2; std::cout << "e1 == e2 ? " << ((e1 == e2) ? "yes" : "no") << std::endl; t2 = clock(); total += (t2 - t1); } std::cout << "Total USER time spent: " << (double)total / CLOCKS_PER_SEC << " seconds" << std::endl; std::cout << "Average user time: " << (double)total / (CLOCKS_PER_SEC * k) << "seconds" << std::endl; return 0; } core++-1.7/progs/fortune/pred/pred2.cpp0100644000175000001440000000467107755620760017305 0ustar joachimusers/************************************************************ file: pred2.cc purpose: comparison involving a generalization of basic predicate in Fortune's algorithm: (a + sqrt[2^k](b)) / d - (a' + sqrt[2^k](b')) / d'. author: Chen Li and Chee Yap Core Library $Id: pred2.cpp,v 1.7 2003/11/16 07:06:24 exact Exp $ ************************************************************/ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include #include "CORE.h" static int L = 20; /* BigInt bigRand(int k) { // generate a k-bit random big integer BigInt r = 0; BigInt q = 1; q <<= (k-1); // the leading bit is one. int bits = 0; unsigned int m; while (bits < k) { m = rand() % (1 << 15); // [0, 2^15 - 1] // std::cout << "m = " << m << std::endl; int rest = k - bits; if (rest > 15) { r <<= 15; r += m; bits += 15; } else { r <<= rest; r += (m % (1 << rest)); bits += rest; } } if (r < q) r+= q; std::cout << "r = " << r << ", lg(r) = " << lg(r) << std::endl; assert(r > 0); if ((rand() % 2) == 0) r = - r; return r; } */ BigInt bigRand(int k) { // generate a k-bit random big integer BigInt range = 1; range <<= k; BigInt r = randomize(range); std::cout << "r = " << r << ", lg(r) = " << bitLength(r) << std::endl; if ((rand() % 2) == 0) r = - r; return r; } int main(int argc, char* argv[]) { double a1, b1, d1; double a2, b2, d2; int k = 1; int r = 1; if (argc == 2) { L = atoi(argv[1]); } else if (argc == 3) { L = atoi(argv[1]); r = atoi(argv[2]); } else if (argc == 4) { L = atoi(argv[1]); r = atoi(argv[2]); k = atoi(argv[3]); } unsigned int seed1 = (unsigned int) (time(NULL) % UINT_MAX); srand(seed1); a1 = bigRand(3 * L); b1 = abs(bigRand(6 * L)); d1 = bigRand(2 * L); /* a2 = bigRand(3 * L); b2 = abs(bigRand(6 * L)); d2 = bigRand(2 * L); */ a2 = a1; b2 = b1; d2 = d1; machine_long t1 = clock(); for (int i = 0; i < k; i++) { double tmp1 = b1; double tmp2 = b2; for (int j=0; j pythagorean [N=10 [X=3 Y=4 Z=5 [OPTION=0]] The output is either points (OPTION=0) or triples (OPTION=1) or debugging info (OPTION=2). This is written to standard output. REMARK: The initial triple is (3,4,5). Should generalize to allow any initial triple. Author: Joaquin Grech Date: April, 2002 Since Core Library Version 1.5. ***************************************************** */ #ifndef Level # define Level 3 #endif #include #include "CORE.h" using namespace std; struct Ptriple { long n, m, p; }; Ptriple nextTriple(Ptriple a, Ptriple b) { Ptriple result; result.n=-a.m*b.m + a.n*b.n; result.m=a.n*b.m + a.m*b.n; result.p=a.p*b.p; return result; } void generatePoints(int n, int m, int p, int howmany, int option, int prec=100) { Ptriple triple; triple.n=n; triple.m=m; triple.p=p; Ptriple tri; tri.n=n; tri.m=m; tri.p=p; setDefaultPrecision(prec, CORE_INFTY); setDefaultOutputDigits(prec/4); // 4 bits per digit for (int i=0; i 1) N=atoi(argv[1]); int X=3; int Y=4; int Z=5; if (argc >4){ X=atoi(argv[2]); Y=atoi(argv[3]); Z=atoi(argv[4]); } int OPTION=0; if (argc >5) OPTION=atoi(argv[5]); int prec=100; // absolute precision if (argc >6) prec=atoi(argv[6]); unsigned int seed1 = (unsigned int) (time(NULL) % UINT_MAX); srand(seed1); // generatePoints3(N); generatePoints(X,Y,Z,N,OPTION,prec); return 0; } core++-1.7/progs/gaussian/0040755000175000001440000000000010147210064014733 5ustar joachimuserscore++-1.7/progs/gaussian/Makefile0100644000175000001440000000324010145421413016367 0ustar joachimusers# Makefile for gaussian # # Core Library, $Id: Makefile,v 1.8 2004/11/13 15:06:51 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= gaussian_level3 gaussian_level1 MORETARGETS= gaussianX_level3 gaussianX_level1 default: $(TARGETS) test: $(TARGETS) ./gaussian_level3 inputs/MatHilbert6 3 ./gaussian_level1 inputs/MatHilbert6 3 ./gaussian_level3 inputs/MatZero4 3 ./gaussian_level1 inputs/MatZero4 3 moretest: $(TARGETS) $(MORETARGETS) ./gaussian_level3 inputs/gregA 3 ./gaussian_level1 inputs/gregA 3 ./gaussian_level3 inputs/gregE 3 ./gaussian_level1 inputs/gregE 3 simpletest: $(TARGETS) ./gaussian_level3 inputs/MatHilbert6 1 ./gaussian_level1 inputs/MatHilbert6 1 %_level1: %_level1.o ${CXX} $(LDFLAGS) $? $(CORE_LIB) -o $@ %_level3: %_level3.o ${CXX} $(LDFLAGS) $? $(CORE_LIB) -o $@ #================================================= # Rules for CORE_LEVEL 1 and CORE_LEVEL 3 #================================================= %_level1.o: %.cpp ${CXX} -c -DCORE_LEVEL=1 $(CXXFLAGS) $(CORE_INC) $< -o $@ %_level3.o: %.cpp ${CXX} -c -DCORE_LEVEL=3 $(CXXFLAGS) $(CORE_INC) $< -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/gaussian/README0100644000175000001440000000201307437361201015614 0ustar joachimusersFile: README ===================== CORE Library: $Id: README,v 1.1.1.1 2002/02/28 07:55:45 exact Exp $ ===================== These programs implement the straightforward Gaussian elimination algorithm, without pivoting. The main point of the example is to illustrate the difference between running these programs in level 3 and level 1. To test the programs, type % make all // compiles "gaussian.cc" at levels 1 and 3 % make test // runs the programs on input matrices // MatZero4, MatHilbert6 Results: MatHilbert6 is the 6x6 Hilbert matrix. The determinant of a nxn Hilbert matrix is Theta of 2^{-2n^2}. In level 1, the answer is NaN (probably underflow). MatZero4 is a 4x4 matrix whose determinant is 0. In level 1, the answer is 2.9976e-15. DESCRIPTION OF FILES: gaussian.cc: uses simple (non-pivoting) Gaussian elimination to compute the determinant. gaussianX.cc: a version which has the input matrix hardcoded. inputs: subdirectory with sample matrices See the README file there for more details core++-1.7/progs/gaussian/gaussian.cpp0100644000175000001440000001007110130300465017242 0ustar joachimusers/* ************************************** File: gaussian.cc Purpose: This is a simple example using the straightforward Gaussian elimination to compute matrix determinants. It does not do pivoting -- so the input matrices must have non-zero principal minors! Usage: gaussian where contains the matrix and is the number of times to run the program. Since CORE Library Version 1.2 $Id: gaussian.cpp,v 1.6 2004/10/04 16:58:29 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include #include "CORE.h" class Matrix { private: int n; double* _rep; public: Matrix(int d) : n(d) { _rep = new double [n*n]; } Matrix(int d, double M[]); Matrix(const Matrix&); const Matrix& operator=(const Matrix&); ~Matrix() { delete [] _rep; } const double& operator()(int r, int c) const { return _rep[r * n + c]; } double& operator()(int r, int c) { return _rep[r * n + c]; } double determinant() const; friend std::ostream& operator<<(std::ostream&, const Matrix&); }; Matrix::Matrix(int d, double M[]) : n(d) { int i, j; _rep = new double [n*n]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M[i * n + j]; } Matrix::Matrix(const Matrix& M) : n(M.n) { int i, j; _rep = new double [n*n]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M._rep[i * n + j]; } const Matrix& Matrix::operator=(const Matrix& M) { int i, j; if (n != M.n) { delete [] _rep; n = M.n; _rep = new double [n*n]; } for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M._rep[i * n + j]; return *this; } /* since we adapted new memory management code ver 1.4, the following functions are not supported now. */ /* extern int num_expr_new; extern int num_ConstRep_new; int num_inloop_new = 0; // Debugging tool: tells us how many new objects (Expr, ExprReps, etc) // are created void print_num_mallocs() { std::cout << num_expr_new << ", " << num_ConstRep_new << ", " << ", " << num_inloop_new << "." << std::endl ; } */ double Matrix::determinant() const { Matrix A = *this; double det; int i, j, k; for (i = 0; i < n; i++) { // This is the non-pivoting version of // Gaussian elimination: // assert(A(i,i) != 0); for (j = i + 1; j < n; j++) for (k = i + 1; k < n; k++) { A(j,k) -= A(j,i)*A(i,k)/A(i,i); } } det = 1.0; for (i = 0; i < n; i++) det *= A(i,i); return det; } std::ostream& operator<<(std::ostream& o, const Matrix& M) { int i, j; for (i = 0; i < M.n; i++) { for (j = 0; j < M.n; j++) { // double d = M(i,j); o << M(i, j) << " "; // o << d << std::endl; } o << std::endl; } return o; } int readMatrix(char *filename, double **A) { std::ifstream ifs(filename); if (!ifs) { perror("cannot open the file"); exit(1); } int n; int a, b; long la, lb; ifs >> n; *A = new double[n*n]; for (int i=0; i> a; ifs >> b; la = a; lb = b; (*A)[j+i*n] = la/lb; } } ifs.close(); return n; } double fac(int n) { double f = 1.0; for (int i=2; i<=n; i++) f *= i; return f; } int main( int argc, char *argv[] ) { int i, imax; double e = 0; defRelPrec = 100; int defPrtDgt = 40; if (argc != 3) { std::cerr << "Usage: Gaussian " << std::endl; exit(1); } double *A; int n = readMatrix(argv[1], &A); Matrix m(n, A); imax = atoi(argv[2]); for (i=0; i #include int main (int argc, char **argv) { mpz_t a, b, p; mpz_init (a); mpz_init (b); mpz_init (p); mpz_set_str(a, "12345", 10); mpz_set_str(b, "67890", 10); mpz_mul (p, a, b); mpz_out_str( stdout, 10, a); fputs (" * ", stdout); mpz_out_str( stdout, 10, b); fputs (" = ", stdout); mpz_out_str( stdout, 10, p); fputc ('\n', stdout); fputs (">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n", stdout); fputs (">>> If the answer on your screen is 838102050, ", stdout); fputs ("\n>>> you have passed the gmp test\n", stdout); fputs (">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n", stdout); mpz_clear (a); mpz_clear (b); mpz_clear (p); return 0; } core++-1.7/progs/generic/sample.cpp0100644000175000001440000000571407662554606016553 0ustar joachimusers/************************************************************ file: sample.cc purpose: a simple sample CORE program CORE Library $Id: sample.cpp,v 1.6 2003/05/21 01:42:30 exact Exp $ ************************************************************/ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif // Important: place all standard header files BEFORE "CORE.h" #include "CORE.h" int main(int argc, char* argv[]) { double x = 1.44; // Inexact input; C++ literal input precision defInputDigits = 20; // This should be better than C++ precision double y = "1.44"; // Use of string constructor defInputDigits = CORE_INFTY; // force exact input double z = "1.44"; // z is represented as a rational number int p = setDefaultOutputDigits(); // p = defOutputDigits std::cout << " C++'s Default Printout Digits is " << p << std::endl; std::cout << " CORE Default Printout Digits is " << defOutputDigits << std::endl; std::cout << " x = 1.44; // standard C++ literal input" << std::endl; std::cout << "Printout of x: " << x << std::endl; std::cout << " sqrt(x): " << sqrt(x) << std::endl; std::cout << "==================================================" << std::endl; std::cout << std::setprecision(6) ; std::cout << " y = \"1.44\". // string literal; defInputDigits = 20\n"; std::cout << " Set CORE Printout Digits to 6 " << std::endl; std::cout << "Printout of y: " << y << std::endl; std::cout << " sqrt(y): " << sqrt(y) << std::endl; std::cout << "==================================================" << std::endl; std::cout << std::setprecision(6) ; std::cout << " z = \"1.44\". // string literal; defInputDigits = Infinite\n"; std::cout << " Set CORE Printout Digits to 6 " << std::endl; std::cout << "Printout of z: " << z << std::endl; std::cout << " sqrt(z): " << sqrt(z) << std::endl; std::cout << "==================================================" << std::endl; std::cout << " Above, x, y and z look the same." << "\n To see that they are not the same, we force more" << "\n precision in evaluation and in output:" << std::endl; std::cout << "---Set defRelPrec 133 bits = 40 digits" << "\n ---Set defPrintDigits to 40 " << std::endl; defRelPrec = 133; // this gives 40 digits of precision setDefaultOutputDigits(40); std::cout << "sqrt(x) = " << sqrt(x) << std::endl; std::cout << "sqrt(y) = " << sqrt(y) << std::endl; std::cout << "sqrt(z) = " << sqrt(z) << std::endl; std::cout << "==================================================" << std::endl; std::cout << " Even though sqrt(z) looks like 1.2, the only way to" << "\n verify this is to do a comparison with 1.2" << std::endl; double sqrtz = "1.2"; // exact input if (sqrt(z) == sqrtz) std::cout << "CORRECT! sqrt(z) = 1.2 exactly" << std::endl; else std::cout << "ERROR! sqrt(z) != 1.2 " << std::endl; std::cout << "==================================================" << std::endl; return (0); } core++-1.7/progs/geom2d/0040755000175000001440000000000010147210064014276 5ustar joachimuserscore++-1.7/progs/geom2d/Makefile0100644000175000001440000000306510144727376015757 0ustar joachimusers# Makefile for testPoint # # Core Library, $Id: Makefile,v 1.19 2004/11/11 18:27:10 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= p=tReadPoints p=t ifile=i arg= < inputs/${ifile} arg= LEV= 3 TARGETS= testLine pointOnCircle MORETARGETS= testPoint pointInput convexHull default: $(TARGETS) more: $(MORETARGETS) test: $(TARGETS) ./testLine ./pointOnCircle moretest: $(MORETARGETS) ./testPoint ./pointInput < inputs/p2d_10 ./pointInput < inputs/p2d_4 ./convexHull p: ${p} ./${p} ${arg} ${p}: ${p}.o testPoint: testPoint.o pointInput: pointInput.o tPointFormat: tPointFormat.o testLine: testLine.o pointOnCircle: pointOnCircle.o pointInput: pointInput.o convexHull: convexHull.o tReadPoints: tReadPoints.o t: t.o tt: tt.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< -lcorex++$(VAR)_level${LEV} $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) -DCORE_LEVEL=${LEV} $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) $(MORETARGETS:=$(EXETYPE)) veryclean: clean echo "EXEPROGS=" $(EXEPROGS) -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/geom2d/README0100644000175000001440000000106310103167042015152 0ustar joachimusersREADME file Core Library: $Id: README,v 1.3 2004/08/01 13:20:34 exact Exp $ 1) These are simple programs to test the geometric primitives in Core Extensions, LinearAlg and Geometry 2) To make and test all the (non-LEDA) test program, do % make % make test 3) In the above, the default Accuracy CORE_LEVEL is 3, but you can compile and test the same programs at CORE_LEVEL 1 by doing % make veryclean % make LEV=1 % make test 4) Some of the programs here need LEDA. If you want to make and test these, do: % make allLeda % make testLeda core++-1.7/progs/geom2d/convexHull.cpp0100644000175000001440000000472007673630230017144 0ustar joachimusers#ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" #include "CORE/geometry2d.h" int main() { int index; bool isOnHull[10][10]; //points p[i], p[j] are on the hull if isOnHull[i][j] is true int temp, i, j, test, count; std::cout << "\nThe program will test which of the following points " << "are on the convex hull" << std::endl; Point2d a0(0, 0), a1(10, 1), a2(8, 2), a3(6, 5), a4(10, 10), a5(-5, -5), a6(0, 9), a7(-1, 7), a8(5, -6), a9(8, 0); Point2d p[10] = {a0, a1, a2, a3, a4, a5, a6, a7, a8, a9}; bool isOn[10]; //isOn[i] is true means p[i] is on the convex hull for (i = 0; i < 10; i++) isOn[i] = false; for (i=0; i<10; i++) for (j=0; j<10; j++) isOnHull[i][j] = true; for (index = 0; index < 10; ++index) { if (index % 3 == 0) std::cout << std::endl; std::cout << "p[" << index << "] = " << p[index] << "\t"; } std::cout << "\n\n Bruteforce Algorithm:" << std::endl; std::cout << "For each pair of points, if all the other points have the " << "same orientation, then this pair of points are on the convex hull" << std::endl; for (i = 0; i < 10; i++) for (j = i+1; j < 10; j++) { if (j == 9) test = (i + 1) % 9; else test = j+1; //temp will hold the standard orientation for comparison temp = orientation2d(p[i], p[j], p[test]); if (temp == 0) { //three points are collinear for (index = test+1; index < 10; index++) if (orientation2d(p[i], p[j], p[index]) != 0) { temp = orientation2d(p[i], p[j], p[index]); break; } } for (int k = 0; k < 10; k++) if (k != i && k != j && k != test) if(temp != orientation2d(p[i],p[j],p[k])) { isOnHull[i][j] = false; break; } } std::cout << "\nThe following points are on the convex hull" << std::endl; for (i = 0; i < 10; i++) { for (j = i+1; j < 10; j++) if (isOnHull[i][j] == true) { isOn[i] = true; isOn[j] = true; } } count = 0; for (i=0; i<10; i++) { if (isOn[i] == true) { std::cout << "p[" << i << "] = " << p[i] << " "; count++; if (count % 3 == 0) std::cout << std::endl; } } std::cout << std::endl; return 0; } core++-1.7/progs/geom2d/pointInput.cpp0100644000175000001440000001537310130300467017160 0ustar joachimusers/*********************************************** * file: pointInput.ccp * * purpose: A flexible facility input of points: * -- to allow comment '#' (rest of line omitted) * -- to load a sequence of points flexibly * -- somewhat variable point format * usage: The main method is * * int readPoints(istream is, Point2d* S, int MaxN, int N = 0) * * -- this reads a sequence of points from * from "is" into an array "S". * -- If N > 0, then at most max(MaxN, N) will be read. * -- If N = 0, then the first number in istream "is" must * be a number N' and at most max(MaxN, N') will be read. * -- The stream is a sequence of n points in the form * ( x1 , y1 ) ( x2 , y2 ) ... ( xn , yn ) * where all the spaces can be replaced by any white * space, including no space. Note that this * sequence might be preceded by an initial number N'. * -- the commas and parentheses can also be replaced by * an non-empty white spaces. E.g., * x1 y1 x2 y2 ... xn yn * or even * (x1 y1) x2 , y2 ... xn , yn * -- If the comment character '#' is encountered, the * rest of line is ignored. * * This method is now in geometry2d.h, and a * similar facility for geometry3d will be added. * * author: Chee Yap (yap@cs.nyu.edu) * date: Sep 28, 2003 * * Since CORE Library Version 1.6 * $Id: pointInput.cpp,v 1.6 2004/10/04 16:58:31 exact Exp $ **********************************************/ #include "CORE/CORE.h" #include "CORE/geometry2d.h" using namespace std; #define MaxN 100 int main() { Point2d S[MaxN]; int n = readPoints(cin, S, MaxN, 0); // N is the number of points to read // if N=0, then input file must specify // the number of points to read cout << "n= " << n << endl; for (int i=0; i>(..). // It uses the auxilliary functions: // startNum(char), // getToChar(istream, char), // getToNum(istream, char). // startNum(c): check if char c can be the start of a literal number // i.e., if c occurs in string '01234567890+-.' bool XstartNum(char c) { switch(c) { case '0': ; case '1': ; case '2': ; case '3': ; case '4': ; case '5': ; case '6': ; case '7': ; case '8': ; case '9': ; case '+': ; case '-': ; case '.': return true; break; } return false; }//startNum(c) // getToChar(istream, mark): // -- moves input cursor to the next occurrence of mark // -- in any case, it will stop if it gets to the beginning // of the next number (indicated by startNum()). bool XgetToChar( std::istream& in, char mark) { char c; char buf[256]; bool got_mark = false; do { in.get(c); if (!isspace(c)) { if (c == mark) { got_mark = true; // this is what we were looking for } else if (c == '#') { // rest of line is discarded as comment in.getline(buf,256); } else if (XstartNum(c)) { //IOErrorFlag = 2; // I/O Error 2: did not find // mark before next number in.putback(c); // time to stop looking! return in; // Usually not considered error } else { //IOErrorFlag = 1; // I/O Error 1: return in; // Unexpected character } } } while (!(got_mark || in.eof())); return (got_mark); }//getToChar // getToNum(istream, mark, strict): // -- moves input cursor to the beginning of the next number. bool XgetToNum( std::istream& in, char mark, bool strict=false) { // default value for strict is false // NOTES: We ignore spaces, comment lines // and accept at most one copy of the "mark" character. // [It must be exactly one copy when strict=true] // If so, we return true. // Return false if reach eof with no number, or // saw 2 "mark" characters, or saw ANY other unexpected chars. char c; char buf[256]; bool got_mark = false; bool got_num = false; do { in.get(c); if (!isspace(c)) { if (c == mark) { if (got_mark) { //IOErrorFlag = 2; // I/O Error 2: return in; // Second mark found } else got_mark = true; // this is what we were looking for } else if (XstartNum(c)) { // we may get this before finding mark in.putback(c); // but we accept this (not considered error) got_num = true; } else if (c == '#') { // rest of line is discarded as comment in.getline(buf,256); } else { //IOErrorFlag = 1; // I/O Error 1: return in; // Unexpected character } } } while (!(got_num || in.eof())); return (got_num && (got_mark || !strict)); } // Reads an input point which has the format // ( nnn , nnn ) // where the white spaces, "(", "," and ")" are all optional. std::istream& readPt(std::istream& in, Point2d& p) { // NOTE: No other non-white chars may be used. Whenever we see #, // the rest of line is omitted, and it counts as white space. // E.g., "[ nnn : nnn ]" is no good but "( nnn, nnn) #xxx" is OK. double x, y; // if (!(XgetToNum(in, '(') || IOErrorFlag || in.eof())) if (!(XgetToNum(in, '(') || in.eof())) return in; // No first value else in >> x; // if (!(XgetToNum(in, ',') || IOErrorFlag ||in.eof())) if (!(XgetToNum(in, ',') || in.eof())) return in; // no second value else in >> y; XgetToChar(in, ')'); // This terminates if the start of the next number p = Point2d(x, y); // occurs before ')'. return in; } // operator>> // reads a sequence of points from input stream iS into Point2d array pA. int XreadPoints(std::istream & iS, Point2d *pA, int MaxN, int N=0){ // DEFAULT VALUES: MaxN=1000, N=0 // The input stream constains a sequence of 2K+1 numbers of the form // // [NN] ( x1 , y1 ) ( x2 , y2 ) ... ( xK , yK ) // // The i-th point is (xi, yi). // (0) NN is optional if N is given as argument (then N is set to NN) // (1) Any of the "(", "," and ")" are optional // (2) Newlines, extra white spaces, '#' are all ignored. // (3) Also, everything after '#' is discarded. // If N > MaxN, nothing is read and 0 is returned. // Returns the number of points actually read, i.e, min(K, N). int i; // IOErrorFlag = 0; // initially no error if (N == 0) { // read NN from input if (XgetToNum(iS, ' ')) iS >> N; else return 0; } if (N > MaxN) return 0; for (i = 0; i < N; i++){ if (iS.eof()) break; // if (!IOErrorFlag) { if (true) { // iS >> pA[i]; readPt(iS, pA[i]); } else { i = 0; break; } } return i; // number of points read } int main() { int N = 0; Point2d S[20]; int n = XreadPoints(cin, S, 20, N); // N is the number of points to read // if N=0, then input file must specify // the number of points to read cout << "n= " << n << endl; for (int i=0; i> p0; cout << "You entered: " << p0 << endl; } */ /* ****************************** */ return 0; } core++-1.7/progs/geom2d/inputs/0040755000175000001440000000000010147210064015620 5ustar joachimuserscore++-1.7/progs/geom2d/inputs/i0100644000175000001440000000010607737476305016014 0ustar joachimusers3 # yyy (1.0, 2.1 #xxx (3.2, -2.0) #xxx # yyy (9.2, -2.0) #xxx core++-1.7/progs/geom2d/inputs/p2d_100100644000175000001440000000311607737550626016554 0ustar joachimusers# file: p2d_10 # This input file has 10 points # It can be read by # # readPoints(istream iS, Point2d * pA, int MaxN, int N=0) # # to illustrate the variants we allow for specifying points: # The NORMAL format for a sequence of points is # ( x1 , y1 ) ( x2 , y2 ) ... ( xN, yN) # The important thing to note is that you must not have commas # between successive points. But omitting "(" or "," or ")" turns # out to be acceptable! 10 # This says there are 10 points following. # If there are more than 10 points, the rest is ignored. # If less, it is also ok. # This value can be omitted if N is given directly # as the 4th argument to readPoints(). (1, 1) # point 1 -- this is the "normal" format. # When you deviate from this, the # result may be somewhat unpredictable (-1 +2) # point 2 -- note that "," is omitted here but it is OK (1.0, -3 # point 3 -- note that the ")" is omitted (but it is still OK) 1.0, 4.0) # point 4 -- note that "(" is omitted (but OK) 9.2 -5.0 # point 5 -- just two plain numbers are given (also OK) 8.1 6.0 # point 6 -- just like point 5 7.0, 7.0 # point 7 -- just the comma separating the numbers (also OK) (.0, 8), # point 8 -- normal, but an extra "," after ")" is bad!!!! # This causes unpredictable errors down stream (1.0 9) # point 9 -- this is normal, but it is messed up by the # the previous extra comma (1 -10) # point 10 -- this is normal, it is still messed up by the # the last extra comma (1 11) # point 11 -- this point will be ignored (1 12) # point 12 -- this point will be ignored core++-1.7/progs/geom2d/inputs/p2d_40100644000175000001440000000145507737760435016504 0ustar joachimusers# file: p2d_4 # This input file has 4 points # It can be read (as istream) using # # readPoints(istream iS, Point2d * pA, int MaxN, int N=0) # # to illustrate the variants we allow for specifying points: # The NORMAL format for a sequence of points is # ( x1 , y1 ) ( x2 , y2 ) ... ( xN, yN) # The important thing to note is that you must not have commas # between successive points. But omitting "(" or "," or ")" turns # out to be acceptable! This is illustrated here. 4 # This says there are 4 points following. # If there are more than 4 points, the rest is ignored. # This value can be omitted if N is given directly # as the 4th argument to readPoints. 1 1 # point 1 -1 +2 # point 2 1.0 -3 # point 3 -0.0 4.0 # point 4 9.2 -5.0 # point 5 -- will be ignored core++-1.7/progs/geom3d/0040755000175000001440000000000010147210064014277 5ustar joachimuserscore++-1.7/progs/geom3d/Makefile0100644000175000001440000000277410144727401015753 0ustar joachimusers# Makefile for geom3d # # Core Library, $Id: Makefile,v 1.12 2004/11/11 18:27:13 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= lines2d_level3 lines3d_level1 MORE_TARGETS= lines2d_level1 lines3d_level3 default: $(TARGETS) more: $(MORE_TARGETS) test: $(TARGETS) ./lines2d_level3 ./lines3d_level1 moretest: $(MORE_TARGETS) ./lines2d_level1 ./lines3d_level3 one: ./lines2d_level3 two: ./lines2d_level1 three: ./lines3d_level3 four: ./lines3d_level1 %_level1: %_level1.o ${CXX} $(LDFLAGS) $? -lcorex++$(VAR)_level1 $(CORE_LIB) -o $@ %_level3: %_level3.o ${CXX} $(LDFLAGS) $? -lcorex++$(VAR)_level3 $(CORE_LIB) -o $@ #================================================= # Rules for CORE_LEVEL 1 and CORE_LEVEL 3 #================================================= %_level1.o: %.cpp ${CXX} -c -DCORE_LEVEL=1 $(CXXFLAGS) $(CORE_INC) $< -o $@ %_level3.o: %.cpp ${CXX} -c -DCORE_LEVEL=3 $(CXXFLAGS) $(CORE_INC) $< -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/geom3d/README0100644000175000001440000000177407437361201015175 0ustar joachimusersREADME file To test the following programs at levels 1 and 3, type % make all % make test Description of the programs: 1) line3d.cc This determines the relative disposition of the following two lines: L1 : (0, 0, 0) --- (sqrt(i), sqrt(j), 1) and L2 : (1, 1, 0) --- (sqrt(i)+1, sqrt(j)+1, 1) where i, j are in the range [0, 10). These two lines must satisfy exactly one of the following predicates: "isSkew", "isParallel" and "intersect". The correct answer should be "isSkew" in all cases. But 10 of the answers are wrong at level 1. 2) line2d.cc This computes the intersection point of the plane P: sqrt(2)*x + y + z - 1 = 0 with the line: L[i,j] : (0, 0, 0) --- (sqrt(i), j*sqrt(j), 3) where i, j are in the range [0, 10). Let P[i,j] be the intersection point. We then evaluates the predicate "is P[i,j] on the plane P?" The correct answer should be "yes" in every case. But 27 of the answers are wrong at level 1. core++-1.7/progs/geom3d/lines2d.cpp0100644000175000001440000000347410103167042016347 0ustar joachimusers/*************************************************************** * File: pointOnPlane.cc * Author: Chee Yap * Chen Li * Date: 12/98 * Desc: Determine the intersection point of the plane * P: sqrt(2)*x + y + z - 1 = 0 * and the line: * L : (0, 0, 0) --- (sqrt(i), j*sqrt(j), 3) * where i, j is in the range [1, N). * is really on the plane P. (Set N=32 in this test) * * $Id: lines2d.cpp,v 1.6 2004/08/01 13:20:34 exact Exp $ **************************************************************/ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" #include "CORE/geometry3d.h" using namespace std; const static int N = 32; // The following program // shoots N*N rays from the origin, // compute their intersections with a plane P and // check if the intersection points lie on the plane P // (In CORE_LEVEL 3, they ought to lie on P every time). int main() { const Point3d origin(0, 0, 0); Plane3d P(sqrt(2.0), 1.0, 1.0, -1.0); int counter=0; for (int i=1; i<=N; i++) { for (int j=1; j<=N; j++) { //Vector v(i, j*sqrt(j), 3.0); //Line3d L(origin, v); Line3d L(origin, Vector(i, j*sqrt(double(j)), 3.0)); Point3d* intp = (Point3d*)P.intersection(L); //cout << "p=" << *intp << endl; if (P.contains(*intp)) counter ++; } } cout << "On plane P:" << counter << "; Not on Plane P: " << N*N-counter << endl; if (counter < N*N) { cout << "INCORRECT!" ; if (CORE_LEVEL != 3) cout << " (But OK when not in CORE_LEVEL 3) " << endl; else cout << " (BAD!! Should not happen in CORE_LEVEL 3)" << endl; } else cout << "CORRECT!" << endl; return 0; } core++-1.7/progs/geom3d/lines3d.cpp0100644000175000001440000000403010103167042016335 0ustar joachimusers/*************************************************************** * File: linesRelativePosition.cc * Author: Chee Yap * Chen Li * Date: 12/98 * Description: * Determine the relative position of the following two lines: * L0 : (0, 0, 0) --- (sqrt(i), sqrt(j), 1) and * L1 : (1, 1, 0) --- (sqrt(i)+1, sqrt(j)+1, 1) * where i, j is in the range [0, N) (we set N=50). * Here, the relative positions of two lines in space must be one * of the following mutually exclusive outcomes: * L0.isParallel(L1) is true * L0.isSkew(L1) is true * L0.intersects(L1) is true * In our tests below, the two lines must always be parallel. * * $Id: lines3d.cpp,v 1.6 2004/08/01 13:20:34 exact Exp $ **************************************************************/ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" #include "CORE/geometry3d.h" using namespace CORE; using namespace std; static const int N = 25; int main() { #ifdef __REDUCE setRationalReduceFlag(true); cout << "rationalReduceFlag = true" << endl; #endif Point3d p1(1.0, 1.0, 0.0); Point3d origin(0, 0, 0); int numPar= 0; int numSkew = 0; int numInt = 0; for (long i=0; i 0) || (numInt > 0)) { cout << "INCORRECT!" ; if (CORE_LEVEL != 3) cout << " (But OK when not in CORE_LEVEL 3) " << endl; else cout << " (BAD!! should not happen in CORE_LEVEL 3)" << endl; } else cout << "CORRECT!" << endl; return 0; } core++-1.7/progs/heron/0040755000175000001440000000000010147210064014234 5ustar joachimuserscore++-1.7/progs/heron/Makefile0100644000175000001440000000173007670164435015713 0ustar joachimusers# Makefile for heron # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.5 2003/06/06 19:18:53 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= heron all: $(TARGETS) test: $(TARGETS) ./heron heron: heron.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/heron/README0100644000175000001440000002055007437361201015123 0ustar joachimusersFile: README for heron Core Library, $Id: README,v 1.1.1.1 2002/02/28 07:55:45 exact Exp $ ============================================================================= SYNOPSIS: Implements heron's formula for area of a triangle and tests CORE library's values against some data from Kahan. Author: Chee Yap (April, 2000) Files: Makefile README This file heron.cc: CORE program to compute the values to specified precision on Kahan's input instances. heron.m: maple implementation kahan.ps: a postscript version of the table below outputs: output directory. The file "outXXX-YY" indicates a guaranteed precision of XXX bits, and with YY print digits. ============================================================================= INTRODUCTION: Heron's formula for the area of a triangle with side lengths of a, b and c is the following: A = sqrt( s(s-a)(s-b)(s-c) ) where s = (a+b+c)/2. This formula, when implemented in a straightforward manner in machine arithmetic, is inaccurate for ``needle like triangles''. An extensive discussion of this issue is found in Kahan's paper ``Miscalculating Area and Angles of a Needle-like Triangle'', July 19, 1999 (work in progress). This paper is available from http://www.cs.berkeley.edu/~wkahan/Triangle.pdf). Kahan gave a clever prescription for computing the area A accurately using machine arithmetic. The following table is an excerpt from Kahan's paper. There are 12 input instances. The last 2 columns are the corresponding areas computed with machine arithmetic using a "Naive" and a "Kahan's" implementation, respectively. ====================================================================================== No a b c Naive Kahan's ====================================================================================== 1 10 10 10 43.30127019 43.30127020 -------------------------------------------------------------------------------------- 2 -3 5 2 2.905 Error -------------------------------------------------------------------------------------- 3 100000 99999.99979 0.00029 17.6 9.999999990 -------------------------------------------------------------------------------------- 4 100000 100000 1.00005 50010.0 50002.50003 -------------------------------------------------------------------------------------- 5 99999.99996 99999.99994 0.00003 Error 1.118033988 -------------------------------------------------------------------------------------- 6 99999.99996 0.00003 99999.99994 Error 1.118033988 -------------------------------------------------------------------------------------- 7 10000 5000.000001 15000 0 612.3724358 -------------------------------------------------------------------------------------- 8 99999.99999 99999.99999 200000 0 Error -------------------------------------------------------------------------------------- 9 5278.64055 94721.35941 99999.99996 Error 0 -------------------------------------------------------------------------------------- 10 100002 100002 200004 0 0 -------------------------------------------------------------------------------------- 11 31622.77662 0.000023 31622.77661 0.447 0.327490458 -------------------------------------------------------------------------------------- 12 31622.77662 0.0155555 31622.77661 246.18 245.9540000 -------------------------------------------------------------------------------------- RESULTS FROM CORE: ================== Core's number substantially agrees with Kahan's number, except for test4. Kahan (3/27/2000) has since confirmed the result of test4 is in error in the last digit, attributable to the use of HP-15C's 10-significant decimal arithmetic. Incidentally, the last bit of Kahan's result are off by one in case of test1, test3 and test7, but these are known. ------------------- Problem 1 -------------------------- (a,b,c) = (10, 10, 10) Kahan's Area = 43.30127020 Core's Area = 43.30127019 ------------------- Problem 2 -------------------------- (a,b,c) = (-3, 5, 2) Kahan's Area = Error Core's Area = Error ------------------- Problem 3 -------------------------- (a,b,c) = (100000, 99999.99979, 0.00029) Kahan's Area = 9.999999990 Core's Area = 9.999999989 ------------------- Problem 4 -------------------------- (a,b,c) = (100000, 100000, 1.00005) Kahan's Area = 50002.50003 Core's Area = 50002.50000 ------------------- Problem 5 -------------------------- (a,b,c) = (99999.99996, 99999.99994, 0.00003) Kahan's Area = 1.118033988 Core's Area = 1.118033988 ------------------- Problem 6 -------------------------- (a,b,c) = (99999.99996, 0.00003, 99999.99994) Kahan's Area = 1.118033988 Core's Area = 1.118033988 ------------------- Problem 7 -------------------------- (a,b,c) = (10000, 5000.000001, 15000) Kahan's Area = 612.3724358 Core's Area = 612.3724357 ------------------- Problem 8 -------------------------- (a,b,c) = (99999.99999, 99999.99999, 200000) Kahan's Area = Error Core's Area = Error ------------------- Problem 9 -------------------------- (a,b,c) = (5278.64055, 94721.35941, 99999.99996) Kahan's Area = 0 Core's Area = 0 ------------------- Problem 10 -------------------------- (a,b,c) = (100002, 100002, 200004) Kahan's Area = 0 Core's Area = 0 ------------------- Problem 11 -------------------------- (a,b,c) = (31622.77662, 0.000023, 31622.77661) Kahan's Area = 0.327490458 Core's Area = 0.327490458 ------------------- Problem 12 -------------------------- (a,b,c) = (31622.77662, 0.0155555, 31622.77661) Kahan's Area = 245.9540000 Core's Area = 245.9540000 --------------------------------------------------------- RESULTS FROM MAPLE: =================== We implemented the naive program in Maple (file heron.m). When Maple precision is set to 13 digits ("Digits := 13;"), then Maple agrees with Kahan's numbers except for test4. In this case, Maple's answer is 50002.499999, not 50002.50003. Basically, Core and Maple are in agreement. Here are the results from Maple: --------------------------------------------------------- maple>testall(13); =========== Problem 1 ========= (a,b,c) = (10.000000, 10.000000, 10.000000) Kahan's area = 43.301270 Maple's area = 43.301270 =========== Problem 2 ========= (a,b,c) = (-3.000000, 5.000000, 2.000000) Kahan's area = ERROR Maple's area = ERROR =========== Problem 3 ========= (a,b,c) = (100000.000000, 99999.999790, .000290) Kahan's area = 10.000000 Maple's area = 10.000000 =========== Problem 4 ========= (a,b,c) = (100000.000000, 100000.000000, 1.000050) Kahan's area = 50002.500030 Maple's area = 50002.499999 =========== Problem 5 ========= (a,b,c) = (99999.999960, 99999.999940, .000030) Kahan's area = 1.118034 Maple's area = 1.118034 =========== Problem 6 ========= (a,b,c) = (99999.999960, .000030, 99999.999940) Kahan's area = 1.118034 Maple's area = 1.118034 =========== Problem 7 ========= (a,b,c) = (10000.000000, 5000.000001, 15000.000000) Kahan's area = 612.372436 Maple's area = 612.372436 =========== Problem 8 ========= (a,b,c) = (99999.999990, 99999.999990, 200000.000000) Kahan's area = ERROR Maple's area = ERROR =========== Problem 9 ========= (a,b,c) = (5278.640550, 94721.359410, 99999.999960) Kahan's area = 0.000000 Maple's area = 0.000000 =========== Problem 10 ========= (a,b,c) = (100002.000000, 100002.000000, 200004.000000) Kahan's area = 0.000000 Maple's area = 0.000000 =========== Problem 11 ========= (a,b,c) = (31622.776620, .000023, 31622.776610) Kahan's area = .327490 Maple's area = .327490 =========== Problem 12 ========= (a,b,c) = (31622.776620, .015556, 31622.776610) Kahan's area = 245.954000 Maple's area = 245.954000 --------------------------------------------------------- Note: Maple rounds the numbers for Kahan's results (thus in problem 3, Kahan's 9.999999990 is output as 10.000000). ========================================================================= POSTSCRIPT: The point of this example is to show that with facilities such as Core Library, "clever programming" to extract the maximum accuracy possible out of (fixed-precision) machine arithmetic is rendered unnecessary by the speed of today's hardware. A straightforward CORE program will usually do the job. This comment applies more generally to efforts at improving the numerical accuracy of algorithms under the restrictions of machine arithmetic. Such restrictions may be real at one time, but should now be regarded as artificial in *most* applications. core++-1.7/progs/heron/heron.cpp0100644000175000001440000001320507674755416016103 0ustar joachimusers/* ************************************** File: heron.cc Purpose: To compute the area of a triangle using Heron's formula. We use a series of 12 test inputs from a paper of W. Kahan (see README file for details). Usage: % heron [opt-prec] [opt-printDgt] where [opt-prec] is the optional guaranteed precision and [opt-printDgt] is the optional output precision. Default is opt-prec = 54 (as in machine double) and opt-printDgt = 11 (comparable to Kahan). Core Library $Id: heron.cpp,v 1.8 2003/06/21 04:11:58 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE.h" // ================================================== // To compute area of triangle using Heron's formula // NOTE: if bad input, return -1. // ================================================== double heron(const char* aa, const char* bb, const char* cc) { double a = BigFloat(aa); double b = BigFloat(bb); double c = BigFloat(cc); double s = (a+b+c)/2; if ((s 3) { std::cerr << "Usage: heron [optional_precisionBits] [optional_printDigits]" << "\n Default values: heron 54 11\n"; exit(1); } // -------------------------------------------------------------------------------------- // Initialize precision for computing and display // -------------------------------------------------------------------------------------- if (argc >= 2) { setDefaultRelPrecision(atoi(argv[1])); // if user specifies precision } else setDefaultRelPrecision(54); // otherwise, defRelPrec = 54 // i.e., as in machine arithmetic setDefaultAbsPrecision(CORE_posInfty); // This ensures that defRelPrec is in control if (argc >= 3) { std::cout.precision(atoi(argv[2])); // if user specifies output precision } else std::cout.precision(11); // otherwise, defPrtDgt = 11 // to compare against Kahan's values double a, b, c; // ====================================================================================== // TABLE FROM KAHAN // No a b c Naive Kahan // ====================================================================================== // 1 10 10 10 43.30127019 43.30127020 // -------------------------------------------------------------------------------------- // 2 -3 5 2 2.905 Error // -------------------------------------------------------------------------------------- // 3 100000 99999.99979 0.00029 17.6 9.999999990 // -------------------------------------------------------------------------------------- // 4 100000 100000 1.00005 50010.0 50002.50003 // -------------------------------------------------------------------------------------- // 5 99999.99996 99999.99994 0.00003 Error 1.118033988 // -------------------------------------------------------------------------------------- // 6 99999.99996 0.00003 99999.99994 Error 1.118033988 // -------------------------------------------------------------------------------------- // 7 10000 5000.000001 15000 0 612.3724358 // -------------------------------------------------------------------------------------- // 8 99999.99999 99999.99999 200000 0 Error // -------------------------------------------------------------------------------------- // 9 5278.64055 94721.35941 99999.99996 Error 0 // -------------------------------------------------------------------------------------- // 10 100002 100002 200004 0 0 // -------------------------------------------------------------------------------------- // 11 31622.77662 0.000023 31622.77661 0.447 0.327490458 // -------------------------------------------------------------------------------------- // 12 31622.77662 0.0155555 31622.77661 246.18 245.9540000 // ====================================================================================== std::cout << "----------------------------------------------------------------------\n"; std::cout << "Relative Precision is " << defRelPrec << std::endl; std::cout << "Print Digits is " << std::cout.precision() << std::endl; // std::cout << setprecision(defPrtDgt.asLong()); // already set above. std::cout << "----------------------------------------------------------------------\n"; test(1, "10", "10", "10", "43.30127020"); test(2, "-3", "5", "2", "Invalid (but expected)"); test(3, "100000", "99999.99979", "0.00029", "9.999999990"); test(4, "100000", "100000", "1.00005", "50002.50003"); test(5, "99999.99996", "99999.99994", "0.00003", "1.118033988"); test(6, "99999.99996","0.00003", "99999.99994", "1.118033988"); test(7, "10000", "5000.000001", "15000", "612.3724358"); test(8, "99999.99999", "99999.99999", "200000", "Invalid (but expected)"); test(9, "5278.64055", "94721.35941", "99999.99996", "0"); test(10, "100002", "100002", "200004", "0"); test(11, "31622.77662", "0.000023", "31622.77661", "0.327490458"); test(12, "31622.77662", "0.0155555", "31622.77661", "245.9540000"); std::cout << std::flush; return 0; } core++-1.7/progs/heron/heron.m0100644000175000001440000000542707437361201015542 0ustar joachimusers# file: heron # To test heron's formula and compare results # with table published by Kahan # (see also ${CORE}/progs/heron) # $Id: heron.m,v 1.1.1.1 2002/02/28 07:55:45 exact Exp $ # REMARKS: with Digits = 13, # Kahan's numbers agree with Maple for all but test 4. # Instead of 50002.50003, Maple gives a value of 50002.499999. # Moreover, Maple does not change this answer if higher precision # is used. ## Accuracy of evaluation to duplicate Kahan's numbers Digits := 13; ###################################################################### # Heron's formula ###################################################################### heron := proc(a,b,c) local s; s := (a+b+c)/2; if ((s output/sin.out ./demo cos 0.01 1.57 0.8 $(PREC) > output/cos.out ./demo tan 0.01 1.57 0.8 $(PREC) > output/tan.out ./demo cot 0.01 1.57 0.8 $(PREC) > output/cot.out ./demo arcsin 0.01 0.40 0.6 $(PREC) > output/arcsin.out ./demo arccos 0.1 0.20 0.4 $(PREC) > output/arccos.out ./demo arctan 0.01 0.40 0.6 $(PREC) > output/arctan.out ./demo exp 0.01 2.00 0.7 $(PREC) > output/exp.out ./demo erf 0.01 2.00 0.7 $(PREC) > output/erf.out ./demo log 1.00 2.00 0.7 $(PREC) > output/log.out smalltest: $(TARGETS) ./demo $(f) 1.00 2.00 0.1 $(PREC) > output/log.out moretest: $(MORE_TARGETS) ./demoPi 0.1 100 > output/pi_100.out ./demoPi -0.7 200 > output/pi_200.out ./demo sin 0.01 3.14 0.07 $(PREC) > output/sin.out2 ./demo cos 0.01 3.14 0.07 $(PREC) > output/cos.out2 ./demo tan 0.01 3.14 0.07 $(PREC) > output/tan.out2 ./demo cot 0.01 3.14 0.07 $(PREC) > output/cot.out2 ./demo arcsin 0.01 1.00 0.07 $(PREC) > output/arcsin.out2 ./demo arccos 0.01 1.00 0.07 $(PREC) > output/arccos.out2 ./demo arctan 0.01 1.00 0.07 $(PREC) > output/arctan.out2 ./demo exp 0.01 3.14 0.07 $(PREC) > output/exp.out2 ./demo erf 0.01 3.14 0.07 $(PREC) > output/erf.out2 ./demo log 1.01 3.14 0.07 $(PREC) > output/log.out: # remark: should test at negative arguments! compare: $(MAPLE_TARGETS) test diff output/sin.out output/maple-sin.out diff output/cos.out output/maple-cos.out diff output/tan.out output/maple-tan.out diff output/cot.out output/maple-cot.out diff output/arcsin.out output/maple-arcsin.out diff output/arccos.out output/maple-arccos.out diff output/arctan.out output/maple-arctan.out diff output/exp.out output/maple-exp.out diff output/erf.out output/maple-erf.out diff output/log.out output/maple-log.out demo: demo.o demoPi: demoPi.o verify: verify.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # HOUSEKEEPING #================================================= clean: -@test -z "*.o" || rm -f *.o -${MAKE} -C const clean -${MAKE} -C timing clean EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) -${MAKE} -C const veryclean -${MAKE} -C timing veryclean rcs: -@ci -l -m"make rcs" *.cpp *.h Makefile README tar: -@tar cvf T.tar *.cpp Makefile TODO *.h timing README const other core++-1.7/progs/hypergeom/MultiPrecision.cpp0100644000175000001440000003200410077116647020604 0ustar joachimusers/****************************************************************/ /* NAME: Maria Eleftheriou / Jose Moreira */ /* T.J. Watson Research Center */ /* LAST MODIEFIED: Tue. May. 29 , 2001 */ /****************************************************************/ #include #include //#include "MultiPrecision.h" #define CORE_LEVEL 4 #include "CORE.h" //DEBUG_HYPERGEOM is for internal use only! //#define DEBUG_HYPERGEOM #ifdef _MSC_VER # define CORE_TYPENAME #else # define CORE_TYPENAME typename #endif ////////////////////////////////////////////////////////////////////////////// // MATH CONSTANTS ////////////////////////////////////////////////////////////////////////////// #define PI_LO_THRESHOLD 300 // This is the number of bits in // static constant "SmallPi" #define PI_HI_THRESHOLD 33219 // This is the number of precomputed // bits of Pi in the file (=10,000 digits) #define LOG2_LO_THRESHOLD 300 // This is the number of bits in // static constant "SmallLog2" (base e) #define LOG2_HI_THRESHOLD 33219 // This is the number of precomputed bits // of Log2 in the file (=10,000 digits) const Expr SmallPi = "3.14159265358979323846264338327950288419716939937510\ 5820974944592307816406286208998628034825342117066"; const Expr SmallLog2 = "0.69314718055994530941723212145817656807550013436025\ 52541206800094933936219696947156058633269964186875"; ////////////////////////////////////////////////////////////////////////////// // Global variable to choose different version ////////////////////////////////////////////////////////////////////////////// int hyperVersion = 0; int setHyperVersion(int newVersion) { int oldVersion = hyperVersion; hyperVersion = newVersion; return oldVersion; } ////////////////////////////////////////////////////////////////////////////// // class MultiPrecision::ElementaryFunction template typename MultiPrecision::ElementaryFunction* MultiPrecision::ElementaryFunction::getInstance(KeyType name) { if(_registry[name] == 0) { std::cout << " ERROR:: registry" << std::endl; exit(1); } return _registry[name]; } template void MultiPrecision::ElementaryFunction::registration(KeyType name, typename MultiPrecision::ElementaryFunction* ptr) { if(_registry.count(name) == 0) { _registry[name] = ptr; preprocess(name, ptr); // pre-prossing parameters } } template void MultiPrecision::ElementaryFunction::preprocess(KeyType name, typename MultiPrecision::ElementaryFunction* ptr) { // insert implict parameter (ptr->BB).push_back(FLT(1)); // sort parameters std::sort((ptr->AA).begin(), (ptr->AA).end()); std::sort((ptr->BB).begin(), (ptr->BB).end()); // elminate common parameters typename std::vector::iterator iter1, iter2; for (iter1 = (ptr->AA).begin(); iter1 < (ptr->AA).end(); iter1++) { iter2 = std::find((ptr->BB).begin(), (ptr->BB).end(), *iter1); if (iter2 != (ptr->BB).end()) { (ptr->AA).erase(iter1); (ptr->BB).erase(iter2); } } // find equivalent parameters for (iter1 = (ptr->AA).begin(); iter1 < (ptr->AA).end(); iter1++) { iter2 = std::find((ptr->BB).begin(), (ptr->BB).end(), (*iter1)+1); if (iter2 != (ptr->BB).end()) { (ptr->CC).push_back(*iter1); (ptr->DD).push_back(*iter2); (ptr->AA).erase(iter1); (ptr->BB).erase(iter2); } } // check divergence if ((ptr->AA).size() > (ptr->BB).size()) { std::cout << "Divergent Series!" << std::endl; } // compute truncation error function unsigned int i; for (i=0; i<(ptr->AA).size(); i++) { if ((ptr->AA)[i] > (ptr->BB)[i]) { (ptr->EE).push_back((ptr->AA)[i]); (ptr->FF).push_back((ptr->BB)[i]); } } for (i=(ptr->AA).size(); i<(ptr->BB).size(); i++) { (ptr->FF).push_back((ptr->BB)[i]); } // print useful information for registered functions #ifdef DEBUG_HYPERGEOM std::cout << "function name: " << name << std::endl; std::cout << "Upper Parameters: "; for (i=0; i<(ptr->AA).size(); i++) { std::cout << (ptr->AA)[i] << "," ; } std::cout << std::endl; std::cout << "Lower Parameters: "; for (i=0; i<(ptr->BB).size(); i++) { std::cout << (ptr->BB)[i] << "," ; } std::cout << std::endl; std::cout << "Equivalent Parameters: "; for (i=0; i<(ptr->CC).size(); i++) { std::cout << (ptr->CC)[i] << "," ; } std::cout << std::endl; std::cout << "Truncation Error Function: "; if (!(ptr->EE).empty()) { for (i=0; i<(ptr->EE).size(); i++) { std::cout << "(" << (ptr->EE)[i] << "+n)"; } } else { std::cout << "1"; } if (!(ptr->FF).empty()) { std::cout << "/"; for (i=0; i<(ptr->FF).size(); i++) { std::cout << "(" << (ptr->FF)[i] << "+n)"; } } std::cout << std::endl; #endif } ////////////////////////////////////////////////////////////// // eval( key, argument, abs_prec ) ////////////////////////////////////////////////////////////// template FLT MultiPrecision::ElementaryFunction::eval( KeyType key, FLT& x, const long& aPrec) { static bool first = true; if (first) { MultiPrecision::ElementaryFunction::initialize(); first = false; } CORE_TYPENAME MultiPrecision::ElementaryFunction* fn = MultiPrecision::ElementaryFunction::getInstance(key); FLT xx = fn->getArgument(x); FLT zz = fn->getPrefix(x); return MultiPrecision::HyperGeometric::F(fn->AA, fn->BB, fn->CC, fn->DD, fn->EE, fn->FF, xx, zz, aPrec); } template void MultiPrecision::ElementaryFunction::initialize() { registration(MultiPrecision::Exp::_key, new CORE_TYPENAME MultiPrecision::Exp()); registration(MultiPrecision::Erf::_key, new CORE_TYPENAME MultiPrecision::Erf()); registration(MultiPrecision::Sin::_key, new CORE_TYPENAME MultiPrecision::Sin()); registration(MultiPrecision::Cos::_key, new CORE_TYPENAME MultiPrecision::Cos()); registration(MultiPrecision::Tan::_key, new CORE_TYPENAME MultiPrecision::Tan()); registration(MultiPrecision::Cot::_key, new CORE_TYPENAME MultiPrecision::Cot()); registration(MultiPrecision::Asin::_key, new CORE_TYPENAME MultiPrecision::Asin()); registration(MultiPrecision::Atan::_key, new CORE_TYPENAME MultiPrecision::Atan()); registration(MultiPrecision::Acos::_key, new CORE_TYPENAME MultiPrecision::Acos()); registration(MultiPrecision::SLog::_key, new CORE_TYPENAME MultiPrecision::SLog()); registration(MultiPrecision::Log::_key, new CORE_TYPENAME MultiPrecision::Log()); } template typename std::map::ElementaryFunction* > MultiPrecision::ElementaryFunction::_registry; ////////////////////////////////////////////////////////////////////////////// // class Exp, Erf, Sin, Cos, Tan, Cot, Atan, Asin, Acos, Log template KeyType MultiPrecision::Exp::_key = "Exp"; template KeyType MultiPrecision::Erf::_key = "Erf"; template KeyType MultiPrecision::Sin::_key = "Sin"; template KeyType MultiPrecision::Cos::_key = "Cos"; template KeyType MultiPrecision::Tan::_key = "Tan"; template KeyType MultiPrecision::Cot::_key = "Cot"; template KeyType MultiPrecision::Atan::_key = "Atan"; template KeyType MultiPrecision::Asin::_key = "Asin"; template KeyType MultiPrecision::Acos::_key = "Acos"; template KeyType MultiPrecision::SLog::_key = "SLog"; template KeyType MultiPrecision::Log::_key = "Log"; ////////////////////////////////////////////////////////////////////////////// // read precomputed pi Expr MathPi(int bits) { if (bits < PI_LO_THRESHOLD) return SmallPi; assert(bits < PI_HI_THRESHOLD); std::ifstream ifs; ifs.open("pi.big"); BigFloat bf_pi; readFromFile(bf_pi, ifs, bits); Expr pi(bf_pi); pi.approx(CORE_posInfty, bits); return pi; } Expr MathPiOverTwo(int bits) { return MathPi(bits-1)/2; } Expr MathTwoPi(int bits) { return 2*MathPi(bits+1); } Expr MathLog2(int bits) { if (bits < LOG2_LO_THRESHOLD) return SmallLog2; assert(bits < LOG2_HI_THRESHOLD); std::ifstream ifs; ifs.open("log2.big"); BigFloat bf_log2; readFromFile(bf_log2, ifs, bits); Expr val(bf_log2); val.approx(CORE_posInfty, bits); return val; } Expr MathNaN() { std::cerr << "Expr::NaN" << std::endl; return Expr(0); // need define NaN constants in Expr!! } ////////////////////////////////////////////////////////////////////////////// // function Exp, Erf, Sin, Cos, Tan, Cot, Atan, Asin, Acos, Log template FLT exp(FLT x) { int eps = defRelPrec.asLong(); FLT LOG2 = MathLog2(eps); long k = longValue(floor(x/LOG2)); FLT xx = x - k*FLT(LOG2); xx.approx(CORE_posInfty, eps+k+4); return pow(FLT(2),k)*MultiPrecision::ElementaryFunction::eval(MultiPrecision::Exp::_key, xx, eps+k+1); } template FLT sin(FLT x) { int eps = defAbsPrec.asLong(); //std::cerr << "eps=" << eps << std::endl; FLT TWOPI = MathTwoPi(eps); BigInt n = floor(x / TWOPI); //std::cerr << "n=" << n << std::endl; FLT xx = x - TWOPI * n; xx.approx(CORE_posInfty, eps+1); //std::cerr << "xx=" << xx << std::endl; return MultiPrecision::ElementaryFunction::eval(MultiPrecision::Sin::_key, xx, eps+1); } template FLT cos(FLT x) { int eps = defAbsPrec.asLong(); FLT TWOPI = MathTwoPi(eps); BigInt n = floor(x / TWOPI); FLT xx = x - TWOPI * n; xx.approx(CORE_posInfty, eps+1); return MultiPrecision::ElementaryFunction::eval(MultiPrecision::Cos::_key, xx, eps+1); } template FLT tan(FLT x) { int eps = defAbsPrec.asLong(); FLT TWOPI = MathTwoPi(eps); BigInt n = floor(x / TWOPI); FLT xx = x - TWOPI * n; if ( xx == MathPi(eps) ) return MathNaN(); else return sin(xx)/cos(xx); } template FLT cot(FLT x) { int eps = defAbsPrec.asLong(); FLT TWOPI = MathTwoPi(eps); BigInt n = floor(x / TWOPI); FLT xx = x - TWOPI * n; if ( xx == 0 ) return MathNaN(); else return cos(xx)/sin(xx); } template FLT erf(FLT x) { int eps = defAbsPrec.asLong(); FLT PI = MathPi(eps); double d = x.doubleValue(); if (d == 0) return 0; else if (d < -6) return -1; else if (d > 6) return 1; int sign = (x < 0) ? -1 : 1; FLT xx = x * sign; return sign*2/sqrt(PI)*MultiPrecision::ElementaryFunction::eval(MultiPrecision::Erf::_key, xx, eps); } template FLT asin(FLT x) { int eps = defAbsPrec.asLong(); FLT PIOVERTWO = MathPiOverTwo(eps+1); int sign = (x < 0) ? -1 : 1; FLT xx = x * sign; if(xx > FLT(1)) { return MathNaN(); } else if (xx == FLT(1)) { return sign*PIOVERTWO; } else if(xx <= FLT(.5)) { return sign*MultiPrecision::ElementaryFunction::eval(MultiPrecision::Asin::_key, xx, eps); } else { xx = sqrt((1 - x) / 2); return sign*(PIOVERTWO-2*MultiPrecision::ElementaryFunction::eval(MultiPrecision::Asin::_key, xx, eps+2)); } } template FLT acos(FLT x) { int eps = defAbsPrec.asLong(); FLT PI = MathPi(eps); int sign = (x < 0) ? -1 : 1; FLT xx = x * sign; if(xx > FLT(1)) { return MathNaN(); } else if (xx == FLT(1)) return FLT(0); FLT arg = sqrt(FLT(1) - xx*xx); if (sign == 1) return asin(arg); else return PI - asin(arg); } template FLT atan(FLT x) { int eps = defAbsPrec.asLong(); FLT PIOVERTWO = MathPiOverTwo(eps+1); int sign = (x < 0) ? -1 : 1; FLT xx = x*sign; if(xx <= FLT(1)) { return sign*(MultiPrecision::ElementaryFunction::eval(MultiPrecision::Atan::_key, xx, eps)); } else { xx = -1/xx; return sign*(PIOVERTWO+MultiPrecision::ElementaryFunction::eval(MultiPrecision::Atan::_key, xx, eps+1)); } } template FLT slog(FLT x) { if (x < 0) return MathNaN(); int eps = defAbsPrec.asLong(); FLT xx = x; FLT kk = 0; if (xx > FLT(2)) { long tmp = x.longValue(); long k = flrLg(tmp); kk = k*MathLog2(eps+clLg(k)+1); FLT xx = x / (1 << k); xx.approx(CORE_posInfty, eps+2); } return kk+(MultiPrecision::ElementaryFunction::eval(MultiPrecision::SLog::_key, xx, eps+2)); } template FLT log(FLT x) { if (x < 0) return MathNaN(); int eps = defAbsPrec.asLong(); FLT xx = x; FLT kk = 0; if (xx > FLT(2)) { long tmp = x.longValue(); long k = flrLg(tmp); kk = MathLog2(eps+clLg(k)+1); xx = x / (1 << k); xx.approx(CORE_posInfty, eps+2); } return kk+MultiPrecision::ElementaryFunction::eval(MultiPrecision::Log::_key, xx, eps+2); } template Expr exp (Expr); template Expr sin (Expr); template Expr cos (Expr); template Expr erf (Expr); template Expr asin(Expr); template Expr acos(Expr); template Expr atan(Expr); template Expr slog(Expr); template Expr log (Expr); template Expr tan (Expr); template Expr cot (Expr); core++-1.7/progs/hypergeom/MultiPrecision.h0100644000175000001440000004122410062610273020241 0ustar joachimusers/****************************************************************/ /* NAME: Maria Eleftheriou / Jose Moreira */ /* T.J. Watson Research Center */ /* LAST MODIEFIED: Tue. May. 29 , 2001 */ /****************************************************************/ #ifndef __MultiPrecision_H_ #ifdef __GNUG__ #pragma interface #endif #include #include #include #include ////////////////////////////////////////////////////////////// // hyperVersion (int v) // --chooses the method of evaluation of hypergeometric functions // v = 0: straightforward (as in the standard definition) // v = 1: optimized to pair up equivalent upper and lower parameters // (but only pairs that differ by 1) // v = 2: optimized to pair up equivalent upper and lower parameters // for all equivalence classes // // All the above uses the g(n) function for truncation error // NOT IMPLEMENTED YET: // -- alternating series // -- optimizations for equivalent pairs of the form (a/k, b/k). // ////////////////////////////////////////////////////////////// extern int hyperVersion; int setHyperVersion(int); // for portablities, we use global typedef. typedef const char* KeyType; template class MultiPrecision { public: class HyperGeometric { private: // help functions // return (vec[0]+n) * (vec[1]+n) * ... static FLT vecProduct(std::vector& vec, unsigned int n) { FLT prod(1); for (unsigned int i=0; i& vec1, std::vector& vec2, unsigned int n) { FLT prod(1); for (unsigned int i=0; i& E, std::vector& F, unsigned int n, FLT& x) { return vecProduct(E, n) / vecProduct(F, n) * fabs(x); } public: ////////////////////////////////////////////////////////////// // F( A = upper_parameters, B = lower_parameters, C,D,E,F, // x = argument, fz = normalization_constant, aPrec = absolute_prec) ////////////////////////////////////////////////////////////// static FLT F(std::vector& A, std::vector& B, std::vector& C, std::vector& D, std::vector& E, std::vector& F, FLT& x, FLT& fz, const long& aPrec) { switch (hyperVersion) { case 0: //straightforward implemetation w/ new truncation error function return F0(A, B, C, D, E, F, x, fz, aPrec); case 1: //special optimized implemetation w/ new truncation error function return F1(A, B, C, D, E, F, x, fz, aPrec); case 2: //general optimized implemetation w/ new truncation error function return F2(A, B, C, D, E, F, x, fz, aPrec); case 3: //straightforward implemetation w/ old truncation error function return F3(A, B, C, D, E, F, x, fz, aPrec); case 4: //special optimized implemetation w/ old truncation error function return F4(A, B, C, D, E, F, x, fz, aPrec); case 5: //general optimized implemetation w/ old truncation error function return F5(A, B, C, D, E, F, x, fz, aPrec); default: std::cerr << "Unknown version!" << std::endl; return FLT(0); } } // common arguments description: // // A -- normal upper parameters // B -- normal lower parameters // C -- parameter pairs with integer difference // D -- differences for each pair in C (must have same size with C) // // (A[0]+n)...(A[p]+n) (C[0]+n)...(C[r]+n) // f(n) = --------------------- * --------------------- // (B[0]+n)...(B[q]+n) (D[0]+n)...(D[r]+n) // // (E[0]+n)...(E[s]+n) // g(n) = --------------------- // (F[0]+n)...(F[t]+n) // straightforward implementation to compute hypergeometry series // w/ new truncation error function // static FLT F0(std::vector& A, std::vector& B, std::vector& C, std::vector& D, std::vector& E, std::vector& F, FLT& x, FLT& fz, const long& aPrec) { if ( (A.size() > B.size()) || (A.size() == B.size() && fabs(x) > 1) ) { std::cout << "Divergent Series!" << std::endl; return FLT(0); } FLT g; // monotone decreasing function w.r.t factor function FLT term = 1, sum = 1; FLT error, precError = FLT(1) / pow (FLT(2), aPrec); unsigned int n=0; do { term *= vecProduct(A, n) * vecProduct(C, n) / (vecProduct(B, n) * vecProduct(D, n)) * x; sum += term; g = computeTruncationError(E, F, n, x); n ++; } while (g >= FLT(1.0)); do { term *= vecProduct(A, n) * vecProduct(C, n) / (vecProduct(B, n) * vecProduct(D, n)) * x; sum += term; g = computeTruncationError(E, F, n, x); error = fabs(term) / (1.0 - g); n ++; } while (error > precError); sum *= fz; return sum; } // special optimized implementation (for most elmentary functions) // to compute hypergeometry series w/ new truncation error function // // (only optimize for parameter pairs with lower = upper + 1) static FLT F1(std::vector& A, std::vector& B, std::vector& C, std::vector& D, std::vector& E, std::vector& F, FLT& x, FLT& fz, const long& aPrec) { if ( (A.size() > B.size()) || (A.size() == B.size() && fabs(x) > 1) ) { std::cout << "Divergent Series!" << std::endl; return FLT(0); } FLT g; // monotone decreasing function w.r.t factor function FLT term1 = 1, term = 1, sum = 1; FLT error, precError = FLT(1) / pow (FLT(2), aPrec); // pre-computing FLT r = 1; for (unsigned int i=0; i= FLT(1.0)); do { term1 *= vecProduct(A, n) / vecProduct(B, n) * x; term = r * term1 / vecProduct(D, n); sum += term; g = computeTruncationError(E, F, n, x); error = fabs(term) / (1.0 - g); n ++; } while (error > precError); sum *= fz; return sum; } // general optimized implementation (for most elmentary functions) // to compute hypergeometry series w/ new truncation error function // // (optimize for parameter pairs with lower = upper + integer) static FLT F2(std::vector& A, std::vector& B, std::vector& C, std::vector& D, std::vector& E, std::vector& F, FLT& x, FLT& fz, const long& aPrec) { if ( (A.size() > B.size()) || (A.size() == B.size() && fabs(x) > 1) ) { std::cout << "Divergent Series!" << std::endl; return FLT(0); } FLT g; // monotone decreasing function w.r.t factor function FLT term1 = 1, term = 1, sum = 1; FLT error, precError = FLT(1) / pow (FLT(2), aPrec); // pre-computing FLT r = 1; for (unsigned int i=0; i= FLT(1.0)); do { term1 *= vecProduct(A, n) / vecProduct(B, n) * x; term = r * term1 / vecProduct(C, D, n); sum += term; g = computeTruncationError(E, F, n, x); error = fabs(term) / (1.0 - g); n ++; } while (error > precError); sum *= fz; return sum; } // straightforward implementation to compute hypergeometry series // w/ old truncation error function // static FLT F3(std::vector& A, std::vector& B, std::vector& C, std::vector& D, std::vector& E, std::vector& F, FLT& x, FLT& fz, const long& aPrec) { if ( (A.size() > B.size()) || (A.size() == B.size() && fabs(x) > 1) ) { std::cout << "Divergent Series!" << std::endl; return FLT(0); } FLT factor, abs_factor, term = 1, sum = 1; FLT error, precError = FLT(1) / pow (FLT(2), aPrec); unsigned int n=0; do { factor = vecProduct(A, n) * vecProduct(C, n) / (vecProduct(B, n) * vecProduct(D, n)) * x; term *= factor; sum += term; abs_factor = fabs(factor); if (abs_factor != FLT(1.0)) error = fabs(term / (1.0 - abs_factor)); else std::cout << "loop, n=" << n << std::endl; n ++; } while (abs_factor >= FLT(1.0) || error > precError); sum *= fz; return sum; } // special optimized implementation (for most elmentary functions) // to compute hypergeometry series w/ old truncation error function // // (only optimize for parameter pairs with lower = upper + 1) static FLT F4(std::vector& A, std::vector& B, std::vector& C, std::vector& D, std::vector& E, std::vector& F, FLT& x, FLT& fz, const long& aPrec) { if ( (A.size() > B.size()) || (A.size() == B.size() && fabs(x) > 1) ) { std::cout << "Divergent Series!" << std::endl; return FLT(0); } FLT factor1, factor, abs_factor, term1 = 1, term = 1, sum = 1; FLT error, precError = FLT(1) / pow (FLT(2), aPrec); // pre-computing FLT r = 1; for (unsigned int i=0; i Jose Moreira, IBM T.J. Watson Research Center May, 2002: Improvements and additional contributions (preprocessing of hypergeometric arguments, file input of arbitrary precision constants, improved automatic error analysis) Chee Yap Zilin Du June, 2002: Implemented argument reductions Implemented automatic parameter preprocessing Implemented automatic error analysis core++-1.7/progs/hypergeom/demo.cpp0100644000175000001440000000560507667672031016576 0ustar joachimusers#include #include "MultiPrecision.h" #define CORE_LEVEL 4 #include "CORE.h" /* Usage: ./demo function start end step digits [1] function -- exp/erf/log/sin/cos/tan/cot/arcsin/arccos/arctan start -- start value end -- end value step -- step digits -- output digits [1] -- maple program only */ int main(int argc , char ** argv) { char filename[255]; char fun_name[20]; char str[255]; double start, end, step; int outputPrec; bool maple_only; int eps; Expr val, funVal; if (argc < 6) std::cout << "./demo function start end step digits" << std::endl; strcpy(fun_name, argv[1]); std::cerr << "Computing " << fun_name << " function... " << std::endl; start = atof(argv[2]); end = atof(argv[3]); step = atof(argv[4]); std::cerr << "start from " << start << " to " << end << " by step " << step << std::endl; outputPrec = atoi(argv[5]); std::cerr << "output digits = " << outputPrec << std::endl; if (argc > 6 && atoi(argv[6]) == 1) { maple_only = true; std::cerr << "generate maple program only!" << std::endl; } else maple_only = false; eps = (int)(outputPrec*log(10.0)/log(2.0)); std::cerr << "eps = " << eps << std::endl; setDefaultAbsPrecision(eps); strcpy(filename, "maple-"); strcat(filename, fun_name); strcat(filename, ".m"); std::ofstream ofs; ofs.open(filename); ofs << "fd := fopen(\"maple-" << fun_name << ".out\", WRITE);" << std::endl; double value = start; while (value <= end) { sprintf(str,"%f",value); ofs << "fprintf(fd, \"%a\\n\", evalf(" << fun_name << "(" << str << ")" << ", " << outputPrec << "));" << std::endl; if (!maple_only) { val = Expr(str, CORE_posInfty); if (strcmp(fun_name, "exp") == 0) funVal = exp(val); else if (strcmp(fun_name, "erf") == 0) funVal = erf(val); else if (strcmp(fun_name, "log") == 0) funVal = log(val); else if (strcmp(fun_name, "sin") == 0) funVal = sin(val); else if (strcmp(fun_name, "cos") == 0) funVal = cos(val); else if (strcmp(fun_name, "tan") == 0) funVal = tan(val); else if (strcmp(fun_name, "cot") == 0) funVal = cot(val); else if (strcmp(fun_name, "arcsin") == 0) funVal = asin(val); else if (strcmp(fun_name, "arccos") == 0) funVal = acos(val); else if (strcmp(fun_name, "arctan") == 0) funVal = atan(val); funVal.approx(CORE_posInfty, eps); if (fabs(funVal) < 0.1) std::cout.setf(std::ios::scientific, std::ios::floatfield); else std::cout.setf(std::ios::fixed, std::ios::floatfield); std::cerr << "computing " << fun_name << "(" << str << ")..." << std::endl; std::cout << std::setprecision(outputPrec) << funVal << std::endl; } value += step; } ofs << "fclose(fd);" << std::endl; ofs.close(); } core++-1.7/progs/hypergeom/demoPi.cpp0100755000175000001440000000335210130300472017037 0ustar joachimusers/* *************************************************************** File: demoPi.cpp Purpose: Simple illustration of how we can compute Pi using arccos(x) + arccos(-x) for any x such that |x|<1. Known Bugs: The output is 0 when |x|=1. Usage: % demoPi [x = 0.6] [outPrec = 30] where -- [x] is the argument to arccos(x), default value is 0.6 -- [outPrec] is the absolute precision in number of digits desired in the output, default value is 100 Author: Chee Yap and Dongguk Kim (Dec 2003) Since CORE Library Version 1.6 $$ *************************************************************** */ #include #include "MultiPrecision.h" #define CORE_LEVEL 4 #include "CORE/CORE.h" using namespace std; int main(int argc , char ** argv) { int outputPrec; int eps; Expr val, funVal; // PROCESS INPUTS ================================================= val = Expr("0.6", CORE_posInfty); if (argc < 2) cout << "Usage: demoPi [val = 0.6] [outputPrec = 30]" << endl; else val = Expr(argv[1], CORE_posInfty); outputPrec = 30; if (argc > 2) outputPrec = atoi(argv[2]); cerr << "Computing Pi as ArcCos(" << val << ") + ArcCos(" << (-val) << ")"<< endl; eps = (int)(outputPrec*log(10.0)/log(2.0)); // cerr << "eps = " << eps << endl; // COMPUTE Pi ====================================================== setDefaultAbsPrecision(eps); funVal = acos(val) + acos(-val); funVal.approx(CORE_posInfty, eps); if (fabs(funVal) < 0.1) cout.setf(ios::scientific, ios::floatfield); else cout.setf(ios::fixed, ios::floatfield); cout << "Approximate value of Pi is to " << outputPrec << " digits is :\n" << setprecision(outputPrec) << funVal << endl; } core++-1.7/progs/hypergeom/log2.big0100644000175000001440000000212507510477212016455 0ustar joachimusers# This is an experimental Big Float format. Float (16384) 1016 -241 32811858599319759137019661460742191827900414348323336105872668011927407845271680\ 26632560074733193223291520574689975706785180343348637921430934210326542987551691\ 37571091523601568517338231422496939718246551471147496153799318661407558284585373\ 40252149124612712511336054600512533076471621554557732112412747495025298108004457\ 76302590354122066419080654883703234541064649995884219571913693317432848775811357\ 25414042852600045171869310544530172214897678978349379333302608885464583453353266\ 08685719274612103449865136471863572028220971367594178129315070064299839118498763\ 16577485479201823139341759866555022936731234859437514848215827283157720775774125\ 16686501673910812281492449770430979058637754224836623934404837013105151387096390\ 09227417994807361681952032345672480707976069391287012942823559634458855949957615\ 64577915390073560327990231144277550403083422897134756646640808461021951705097864\ 39896333603171215641587733501561046730746952337781897103091794812329626696401643\ 08496970711878520480020126642696538327328873532455779368 core++-1.7/progs/hypergeom/pi.big0100644000175000001440000002756607510477214016244 0ustar joachimusers# This is an experimental Big Float format. Float (16384) 11785 -2796 10358578070283517444737115599884280406039932691678434082160066640494326503128590\ 88081697985224920816478095232527981425582588514648117914097169566010877312332624\ 97616145792991652405611854979080835867231743045471365524893193273407216674475299\ 80070964184909798900369496810776633627405660151601156422770609247116456340549349\ 88906206903080952639173877065023358106108358697681027496085259712007873618730773\ 47183647504307789532956558753047782061031965742428411377365559946773152953052513\ 90053579981810042499885890233809185993904316323314430630271024920724890092213582\ 74007064894255387974250865311535301719137573267588915969738356984774913212183988\ 51515564599710343077681596642469204509134955930538874678206131851976831800922912\ 02265708119456073102683420398221597314663357798440642553738014418860618073336036\ 78829539141774753215174669550469573102620840060198226180405234726302652708928231\ 38824145076233098705000217750464004613048604771750281901374883877504792549988555\ 76297851378534680684568110112481856877172509755979766011571227144815834447389057\ 60951394463063103471531282621636789226754086930251160118921790882875897675471388\ 17864312952716134088982030388503507743354444631894218195083329062434348251889588\ 67751709509049231215207523462757801650175146267267321968917648161594638571569244\ 92716875863675415770059871657225239576309771934562763239786859284400139482936746\ 09169180986262544208044722166064006041340136143820933269761334277232251294434810\ 69217029567656526485616133175606533060196309855467368080524805436275467976908616\ 24510448636140645972828270692830893521624566593823005867392231571648440490582647\ 68068791737072877790326364435289745119313562209802581471749014616688061588210202\ 51959249205288738677352747781909875803162820971371384396140960214007407043284304\ 04185269374754277503002283212763037220980359224545397482431052046988617312939957\ 84507265250085002237850354451738514775778788463959781957826514126375792830198142\ 04330903551373282656102692076254071505479474474831838731124078315262789438786917\ 55452805659817770173188788209621799096705843136157403413504099350100153700569080\ 94210775294817763349206191183104338871001618673781662222328531080738694623785486\ 29158628880945251133209876316456649170855651911482485164939875286350726893728755\ 59556802530265688828018403134003205279424040128790351910987677238659397481130384\ 67591572094957404089285258045698200275777107882495217298237170708792140065343724\ 46834977118847061423102243901116238903628948463087576131573005718684500743955264\ 11001861162867322939601440348735888515672420014391140997474672659515847208536519\ 53771329974707514253102741938374640338363335805924427606068515201338663909284007\ 96585752088598421578994918426332757907703264442611072529386654662346590115875867\ 81714927875261377120141271670443882466547630820276626172576821164208690842880956\ 34132762034859344116960182014485466112841543617917579163200618230707931467217352\ 61118998730855563949977611595137613457959484505094159102262008984380594300757762\ 20374870388754294484020147257779250444330386334180557140367751294555997934130958\ 80877692695812486100378830564472333343640110875790921649410731106458064376263109\ 68677914934357647800824341654889340763228884173132477489481381469237098543374612\ 73722102526385440539796626137822843032466182600059619164542581530531332968368903\ 38407691608536031574199312110422466501354891259102467118910410420027262841942538\ 42824363014142633491586774125879122002365188355083285951281680291590049772429018\ 58482097773273684485601727042718525642089904487329725830648365080777166622383726\ 14902999263893133676074354557444408808917775832181815904312287334788884736735135\ 74380505430379269559704241326588443557151895851897495303163588222975123191145455\ 83599107666769656617380233838804603519947830872316423565403885228091090605558996\ 13798729130956692669158184464948081563007081994747885636207739079200217857923197\ 04643709277179033719277100120476873596908404358609117773074016113388792503655956\ 16909097271302443861302603906763634869305762568682014500399192070252038309182668\ 40771190596988446925729071577048491311476589261706082630998939415307128879340928\ 79722565528572651471700200900253067688479440124912488336935474124724495460517238\ 33323946650415650934120866574496959642284587823260919926258273044969088804519092\ 88707613509724504273378991246496866087124173975626319602930534045326291421500437\ 04892066109134792032655247850739640182225014460223897040620768736477791007422569\ 10730115871025476698312413839783076194762654969753188553807510574321305974294932\ 36852727825746483438844772918668727712232804029230586610565846979672610195469145\ 79829943879479333302116932220228085125729400792048389667053243499350247389889028\ 68890346805889853432210193901292825027368845432943644421110904527703562310873067\ 49068100784410853357107567623516839603360066942512989729473119482764411378886119\ 08186689421088008891767176587253515704977905968365806714329468815438131431871277\ 75825551647761056413736045366226925105488329611370798951439512853693084034363433\ 51039869538712219909513915483059341894664065790219067900974443529720848171807592\ 00725566101502303526257586802057613526694925647133584681806233991581626396188525\ 74637051487544401616733777450173224893734675377612791971847638045779029427627714\ 75496929997772030007743653493577887261775087291862050862091243324805373562800804\ 66395576191240534989539009223519524131825543825188083668568935331231350999251184\ 15722730912190819858763620675635975455560011241370555798737486680076975435094688\ 83726956307650146717589498605676908264877432365710107314129699561886360776813806\ 39099726239871629311169949190335803461032675771717553197354955171525597759483807\ 61549458630529247483012776342254478341021801313391676853242767472755926415169514\ 52193441494471185050714779929991073106578120266754015759385257880017230667380027\ 54587295832952747003305454244955267554103618512317728290630978415272973200974038\ 49320988254295497267158706428607837456396487952060346373640094878235003398774238\ 96831183421242938297561843458719309038238513372998488507470460879644732929003397\ 67271756667482704556259938372837031208152220635118228580145586109162526381753537\ 53330510594160979361386528515269798472816120316003366683055734262983196357833625\ 34415424390222977522292741203169667142648258491457931566414653298984620469810623\ 58838900873811963201623445233431606493022048180156513235478039883477812117750701\ 27956165780981819872300718036001498814730552579573413025868830441390206865853094\ 04921663368124759099074565686707713323397154621365824402112508329568494496312828\ 76702010718519510568568146323855506347818498625125441154213233897550804042282417\ 12699528663268924796792902136497505996961629539651878628494304572010566353954655\ 03808454588322137175651769798119727569411734175634210161620314577050599262123722\ 10921073425075699616840588943576678917531470824931123698733510623148100503225912\ 48664255107547816247432636977578527358609501544057833046608980902162781565810569\ 85592527876498963197963930871031495126746665336608624180673916606493026322975256\ 38784091763148420749365169850682296302720074351417635771502087384421716208765163\ 57432915123564237119092782157072191208708929837952621490847031134834622006338884\ 06151729747282015895699037157746989845684124066742910930827430711003369852644549\ 23533196464644349309672002763539435584357389938997044107754209968242544188549351\ 18343481123479574815279508127935570689899049793705427426179675160385275942761352\ 27937625948785909795714103953534960216998360441377434347358912546520162895925222\ 91558617988471024584198073690108796277155864719524629811771421069658545826246288\ 75475857623129951132652133632575443158252393236793597915377814014270073874431806\ 20058478219143771063679339260274017971620748260794959255734970106365235647352311\ 09481618235149282373502151871383176379648527397668170348939070583242634160339092\ 67758123563987003827362992195080640149642820201026034663939271966939925969307277\ 56918337205160504110147027303839632405137314438668519112179746425984236376471000\ 29084069153506137064612984696383073233550284961104895226102395349220464254791277\ 75907178795631916678304426085694213915106786543724598891600972450768205629045121\ 50022410691353971943735149500029744204137629541065727977478893558050534605241462\ 52024398485359885405473823029947310336750153909343252893868948180941032105895234\ 98917571769431732264701919607123915975436260221882676730639525562791847184695127\ 34046169360152260398803976582962167869876008596840559301179327597325343660446181\ 77968300383784803758806107365022284953501547115624525871242009223227341198001585\ 13800062645081023623392228701636591671512569550317865542496067782462799747397645\ 82942845538324800051954093938164211765342238397179002081344976350537025550068953\ 12237524512899744259173392561326493903252106850559293406034247058240166933869531\ 45542283795840186819043384020936232984282224766759931891932093844604221713875516\ 92627809934548970425892464241684076816361837869299393144973096857322235333273835\ 98562273914348204905977453091204888234422367857667956826432616191243998400220575\ 58961990918577515745149733066163623162794021932938169120067645655369564730234203\ 62571118133302971896337617343915139089823299098981697054558320382205196499111893\ 32415630239296662309015049058305188891894837723304105555515838899072658914433551\ 79219249179392086909074456524494910571602808427710483420536079217727655993598550\ 45461274171846339733644660083917505616735075876862583504754946990647271665552471\ 26558015786866701690839137888092476855023338352764642839385072584954214822703136\ 47105540739840086445900961277631663044651101819999348108827650507018104580602712\ 68503806371270713927422929816781375445853490241108234298363515047982096626560086\ 00584524651183208350883780267638078151384963154205598236840442530116761927307806\ 28682832267057206892563436204697023218300013607400611627399419099270920055707898\ 08754918054058947336682200270136990098124909722923308169650860782854148138571878\ 07728043745055880661284465865448832687689829042349958633956894442139239876289021\ 84282639633790679568872981158822882993887984216678449454875473472107725816104172\ 50965958904254987906106964050749899940641623764227477214875786303146202345081366\ 36601227752472052617445258372538151579510177207353666661696620306388609704327467\ 41837687800776110480745367483336571528284451870142489143358581171198491423518986\ 26224239675857917731239638486161660184183056554340604724968059004366703949150252\ 39474834683621036967650164813298866844474832656119985747698083440939298202438802\ 76752297057134308939013976564707177984309331250561241160436556050816879438995383\ 92071081910604054970123188448282458837752558501218952706551907506804290700829385\ 83839566628864308475509595552793573680095898404453448661655342989570194270646203\ 08438046094072018004078590944199420963830501974789060085532120507389554933754586\ 37517609158944065602019141158408738707773056132733175888910535764630539837164017\ 82964554749471100790789025553775341350102752240865219976179999743187439817955439\ 76329458216431920464727312681730892002882924183452037005368000198287352662914240\ 01273495862915791018426065624164868725428593102131138386610421440480331060484885\ 71987823993382000457386458988703098164727009977285977563624001864776956902576574\ 24008219061037402821272797775112978311557681304873255282290993476958383056923465\ 54349375461312547825690739908827157027006417603489689461672273510227002391729380\ 89268162207731067368683923463001236587259978684292803581311459416443917094328343\ 12942269454719041723978409260771966534882661745424336980899640460817690991888237\ 51374490675553977265111524016647669297236198273646930797460499372126216139810576\ 90828696899278383234382574923482128947537986851755829853475253756392227057616246\ 98606520443424489816626413762826222348962659508699435434020874426166294006071252\ 28638182562124649451525458548015647866260604761599146776155812296517452330704310\ 3546644472353279903675068 core++-1.7/progs/hypergeom/verify.cpp0100644000175000001440000000274307667672031017156 0ustar joachimusers/************************************************************* file: verify.cpp This program verify the following evaluations: $\sin(22) = -8.85130929040388e-3$. $\sin(355) = -0.000030144353359488449...$ $\sin(10^{22}) = -0.8522008497671888017727...$ $\cos(x)$ = -4.68716592425462761112... x10^{-19}. where $x= (3/2)_2 x 2^{200}. *************************************************************/ #include #define CORE_LEVEL 4 #include "CORE.h" #include "MultiPrecision.h" int main(int argc , char ** argv) { int outputPrec; int eps; Expr val, funVal; if (argc < 2) { std::cerr << "./verify digits" << std::endl; exit(1); } outputPrec = atoi(argv[1]); std::cerr << "output digits = " << outputPrec << std::endl; eps = (int)(outputPrec*log(10.0)/log(2.0)); std::cerr << "eps = " << eps << std::endl; setDefaultAbsPrecision(eps); std::cout.setf(std::ios::fixed, std::ios::floatfield); val = Expr(22); funVal = sin(val); std::cout << "sin(22) = " << std::setprecision(outputPrec) << funVal << std::endl; val = Expr(355); funVal = sin(val); std::cout << "sin(355) = " << std::setprecision(outputPrec) << funVal << std::endl; val = pow(Expr(10), 22); funVal = sin(val); std::cout << "sin(10^22) = " << std::setprecision(outputPrec) << funVal << std::endl; val = Expr("3/2") * pow(Expr(2), 200); funVal = cos(val); std::cout << "cos(3/2 * 2^200) = " << std::setprecision(outputPrec) << funVal << std::endl; return 0; } core++-1.7/progs/hypergeom/const/0040755000175000001440000000000010147210064016246 5ustar joachimuserscore++-1.7/progs/hypergeom/const/Makefile0100644000175000001440000000216710062611443017713 0ustar joachimusers# Makefile for hyperGeom # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.5 2004/06/12 14:28:51 exact Exp $ CORE_PATH=../../.. include ../../Make.options PREC = 500 #================================================= # Define target files (put all your files here) #================================================= TARGETS= log2 pi all: $(TARGETS) test: ./log2 $(PREC) ./pi $(PREC) log2: log2.o pi: pi.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) -I../ $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) rcs: -@ci -l -m"make rcs" *.cpp *.h Makefile README core++-1.7/progs/hypergeom/const/README0100644000175000001440000000137610130300474017127 0ustar joachimusersfile: README CORE/progs/hyperGeom/const Since Core Library Version 1.4 $Id: README,v 1.4 2004/10/04 16:58:36 exact Exp $ Synopsis: Facility to compute various mathematical constants: -- Pi -- Log(2) -- e (not done here, but easily done) -- 1/e (unimplemented) -- 1/Pi (unimplemented) and store them in a file. History: Aug, 2001: The Hypergeometry Package was Originally designed by Maria Eleftheriou, and Jose Moreira, IBM T.J. Watson Research Center May, 2002: Improvements and additional contributions (preprocessing of hypergeometric arguments, file input of arbitrary precision constants, improved automatic error analysis) by Chee Yap Zilin Du core++-1.7/progs/hypergeom/const/log2.big0100644000175000001440000000231407773757176017630 0ustar joachimusers# Natural log of 2 using the .big Format Float (16384) 1134 -269 33097038229647785652115128844283900176124149640081256808705452443453089150689919\ 39625107437257325692452804431285570161580607576424133481782665046288686077999646\ 69606368381616720710329042187626899843674716945853220151810277897391722057733317\ 59393644298808557672037294664868220429321000363539295054832874139355630630669762\ 99357212727597167808637274549436672921397136697603714273275224527558379021511406\ 18550698550053950508435121893269440836087857025247060417888511122816907040543570\ 02521374150540069105368105748417237799824696991972355325006874869875232297604047\ 06732749603003008361200309010962708258740080759188214467849616447251583594133553\ 33825058312868312464481861311031187671021076090210642730104703636600661782766198\ 68275882545111249206731842518481398283464680870075031496836049231604181583384929\ 11658838441827055879467746520964639706660045567519973006395349443237048624840657\ 35239395617088922192354024138162481686230270937837383371600379414229698178647911\ 05881845606957507773463995140328968413342117196184915704986285498318401918962696\ 43902053182897558950396231181074452102569759799158191975740818601371902701474687\ 20587212074630 core++-1.7/progs/hypergeom/const/log2.cpp0100644000175000001440000000432710130300475017616 0ustar joachimusers/************************************************************* file: log2.cpp This program computes log(2), stores it to a file and then read from file to verify. (Using Hypergeomtric Package to compute log(2) Usage: ./log2 precision Since Core Library 1.4 Author: Zilin Du (zilin@cs.nyu.edu) $Id: log2.cpp,v 1.7 2004/10/04 16:58:37 exact Exp $ *************************************************************/ #include #include #include #include #include using namespace std; #define CORE_LEVEL 4 #include "CORE.h" #include "MultiPrecision.h" Expr Log2(int eps) { Expr funVal; setDefaultAbsPrecision(eps); funVal = log(Expr(2)); funVal.approx(CORE_posInfty, eps); return funVal; } void writeLog2(ostream& out, int bits) { Expr log2 = Log2(bits); log2.approx(CORE_posInfty, bits); BigFloat bf_log2 = log2.BigFloatValue(); bf_log2.writeToFile(out); } Expr readLog2(istream& in, int bits) { BigFloat bf_log2; bf_log2.readFromFile(in, bits); Expr val(bf_log2); val.approx(CORE_posInfty, bits); return val; } int main(int argc , char ** argv) { int outputPrec; int eps; if (argc < 2) { cout << "./log2 precision" << endl; exit(1); } cerr << "Computing log(2), result stored in file log2.big" << endl; outputPrec = atoi(argv[1]); eps = (int)(outputPrec*log(10.0)/log(2.0)); cerr << "outputPrec = " << outputPrec << ", eps = " << eps << endl; // Compute log2 and store in the file char log2_file[255] = "log2.big"; ofstream ofs; ofs.open(log2_file); ofs << "# Natural log of 2 using the .big Format" << endl; writeLog2(ofs, eps); ofs.close(); cout << "write log2 to a file!" << endl; cout << "Done." << endl; ifstream ifs; Expr p; // Read Log2 with all digits from the file ifs.open(log2_file); p = readLog2(ifs, eps); cout << "Read all digits in the file ... " << endl; cout << "Log2=" << setprecision(outputPrec) << p << endl; ifs.close(); // Read Log2 with half digits from the file ifs.open(log2_file); p = readLog2(ifs, eps/2); cout << "Read half digits in the file ... " << endl; cout << "Log2=" << setprecision(outputPrec/2) << p << endl; ifs.close(); return 0; } core++-1.7/progs/hypergeom/const/pi.big0100644000175000001440000000123507773757176017376 0ustar joachimusers# Pi written in our .big Format Float (16384) 599 -142 88060521426624500838038285873692331417725979822668681008698451601180468837900640\ 00203216468781591044639436283403318230802437857416891043306841385844709954456115\ 15649487884085318167031569384534808195428709685591792692121549750679811688948602\ 65870474278950555458389743903692212474976457767573579546546642922664210501514696\ 01742568362001737846121472812782440518231560896792156353762499219891895201595177\ 61467087706788172801807511958741755966941981571381256844861475720558811589572016\ 11835220226398408890771312983694727189426788328900108691628234947837938419000403\ 145322567079789457913081161385531448336 core++-1.7/progs/hypergeom/const/pi.cpp0100644000175000001440000000521110130300475017354 0ustar joachimusers/************************************************************* file: pi.cpp This program computes pi, stores it to a file and then read from file to verify. Pi = 4 * ( 4 * arctan(1/5) + arctan(1/239) ) Usage: ./pi precision Since Core Library 1.4 Author: Zilin Du (zilin@cs.nyu.edu) $Id: pi.cpp,v 1.6 2004/10/04 16:58:37 exact Exp $ *************************************************************/ #include #include #include using namespace std; #define CORE_LEVEL 4 #include "CORE.h" Expr arctan(int x, int a) { // compute arctan(1/x) to absolute precision 2^{-a} // x is a natural number and x > 1. int N = (int) (a / ( 2 * log(float(x))/log(float(2)))) + 1; //cout << " Number of terms needed in arctan, N = " << N << endl; Expr at = 1; Expr x2 = x * x; for (int i=1; i<=N; i++) { if (i % 2 == 1) at = x2 * at - 1 / Expr(2 * i + 1); else at = x2 * at + 1 / Expr(2 * i + 1); } at /= pow (x2, N) * x; at.approx(CORE_posInfty, a); return at; } Expr PiOverFour(int eps) { return 4*arctan(5, eps+3)-arctan(239, eps+1); } Expr PiOverTwo(int eps) { return 2*PiOverFour(eps+1); } Expr Pi(int eps) { return 4*PiOverFour(eps+2); } Expr SqrtPi(int eps) { return sqrt(Pi(eps)); } void writePi(ostream& out, int bits) { Expr pi = Pi(bits); pi.approx(CORE_posInfty, bits); BigFloat bf_pi = pi.BigFloatValue(); bf_pi.writeToFile(out); } Expr readPi(istream& in, int bits) { BigFloat bf_pi; bf_pi.readFromFile(in, bits); Expr pi(bf_pi); pi.approx(CORE_posInfty, bits); return pi; } int main(int argc , char ** argv) { int outputPrec; int eps; if (argc < 2) { cout << "./pi precision" << endl; exit(1); } cerr << "Computing Pi ..." << endl; outputPrec = atoi(argv[1]); eps = (int)(outputPrec*log(10.0)/log(2.0)); cerr << "outputPrec = " << outputPrec << ", eps = " << eps << endl; // Compute Pi and store in the file char pi_file[255] = "pi.big"; ofstream ofs; ofs.open(pi_file); ofs << "# Pi written in our .big Format" << endl; writePi(ofs, eps); ofs.close(); cout << "write pi to a file!" << endl; cout << "Done." << endl; ifstream ifs; Expr p; // Read Pi with all digits from the file ifs.open(pi_file); p = readPi(ifs, eps); cout << "Read all digits in the file ... " << endl; cout << "Pi=" << setprecision(outputPrec) << p << endl; ifs.close(); // Read Pi with half digits from the file ifs.open(pi_file); p = readPi(ifs, eps/2); cout << "Read half digits in the file ... " << endl; cout << "Pi=" << setprecision(outputPrec/2) << p << endl; ifs.close(); return 0; } core++-1.7/progs/hypergeom/output/0040755000175000001440000000000010147210064016460 5ustar joachimuserscore++-1.7/progs/hypergeom/output/README0100644000175000001440000000010107524773220017342 0ustar joachimusersREADME file This directory contains outputs from demo programs core++-1.7/progs/hypergeom/timing/0040755000175000001440000000000010147210064016407 5ustar joachimuserscore++-1.7/progs/hypergeom/timing/Makefile0100644000175000001440000000352510062611447020057 0ustar joachimusers# Makefile for hyperGeom # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.5 2004/06/12 14:28:55 exact Exp $ CORE_PATH=../../.. include ../../Make.options PREC = 500 #================================================= # Define target files (put all your files here) #================================================= TARGETS= timehyper timepi timelog all: $(TARGETS) test: ./timepi $(PREC) test-timepi: echo "bits\ton the fly\tprecomputed" > output/timepi.out ./timepi 100 >> output/timepi.out ./timepi 1000 >> output/timepi.out ./timepi 3000 >> output/timepi.out ./timepi 5000 >> output/timepi.out ./timepi 7000 >> output/timepi.out ./timepi 9000 >> output/timepi.out ./timepi 10000 >> output/timepi.out ./timepi 20000 >> output/timepi.out test-timeexp: echo "timing for computing exp(1)" > output/timeexp.out echo "bits\ttime" >> output/timeexp.out ./timehyper exp 1 100 2000 200 >> output/timeexp.out test-timelog: echo "timing for computing log(1.3)" > output/timelog.out echo "bits\ttime" >> output/timelog.out ./timelog 1.3 100 600 100 >> output/timelog.out timelog: timelog.o timehyper: timehyper.o timepi: timepi.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) -I../ $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) rcs: -@ci -l -m"make rcs" *.cpp *.h Makefile README core++-1.7/progs/hypergeom/timing/README0100644000175000001440000000105310130300477017263 0ustar joachimusersfile: README CORE/progs/hyperGeom/timing Since Core Library Version 1.4 $Id: README,v 1.3 2004/10/04 16:58:39 exact Exp $ Synopsis: Some timing tests. timehyper -- timing for evaluating elementary functions at different precision timepi -- timing for computing pi on the fly and reading from file timelog -- timing for computing log using standard and transformed hypergeometric series. Notes: Certain arguments can make the evaluation very slow: e.g., arccos and arcsin at arguments near to 0.5, e.g., log at values close to 0. core++-1.7/progs/hypergeom/timing/timehyper.cpp0100644000175000001440000000642210130300477021122 0ustar joachimusers/************************************************************* file: timehyper.cpp This illustrates the speed of the hypergeometric package. The demo function computes the common elementary functions in any sequence of desired precision of the form start-prec, start-prec+step, start-prec+2*step, ..., end-prec and outputs consumed time on the screen. Elementary functions such as log, exp, sin, etc are supported. Usage: > ./timehyper function value start-prec end-prec step where function = exp/erf/log/sin/cos/tan/cot/arcsin/arccos/arctan value = desired value start-prec = start precision end-prec = end precision step = step Since Core Library v1.4 Author: Zilin Du (zilin@cs.nyu.edu) $Id: timehyper.cpp,v 1.5 2004/10/04 16:58:39 exact Exp $ *************************************************************/ #include #include #include #include #include using namespace std; using namespace std; #define CORE_LEVEL 4 #include "CORE.h" #include "MultiPrecision.h" int main(int argc , char ** argv) { char fun_name[20]; char str[255]; int start, end, step; int outputPrec; long t1, t2; int eps; Expr funVal; if (argc < 6) { cout << "./timehyper function value start-prec end-prec step" << endl; exit(1); } strcpy(fun_name, argv[1]); strcpy(str, argv[2]); cerr << "Computing " << fun_name << "(" << str << ")..." << endl; start = atoi(argv[3]); end = atoi(argv[4]); step = atoi(argv[5]); cerr << "start from " << start << " to " << end << " by step " << step << endl; ofstream ofs; ofs.open("time.m"); ofs << "plot([[0,0]" ; outputPrec = start; while (outputPrec <= end) { eps = (int)(outputPrec*log(10.0)/log(2.0)); cerr << "outputPrec = " << outputPrec << ", eps = " << eps << endl; Expr val(str, CORE_posInfty); setDefaultAbsPrecision(eps); t1 = clock(); if (strcmp(fun_name, "exp") == 0) funVal = exp(val); else if (strcmp(fun_name, "erf") == 0) funVal = erf(val); else if (strcmp(fun_name, "slog") == 0) funVal = slog(val); else if (strcmp(fun_name, "log") == 0) funVal = log(val); else if (strcmp(fun_name, "sin") == 0) funVal = sin(val); else if (strcmp(fun_name, "cos") == 0) funVal = cos(val); else if (strcmp(fun_name, "tan") == 0) funVal = tan(val); else if (strcmp(fun_name, "cot") == 0) funVal = cot(val); else if (strcmp(fun_name, "arcsin") == 0) funVal = asin(val); else if (strcmp(fun_name, "arccos") == 0) funVal = acos(val); else if (strcmp(fun_name, "arctan") == 0) funVal = atan(val); funVal.approx(CORE_posInfty, eps); t2 = clock(); // Makes output from Core Library consistent with Maple's output: // if (fabs(funVal) < 0.1) // use scientific notation // cout.setf(ios::scientific, ios::floatfield); // else // use positional notation // cout.setf(ios::fixed, ios::floatfield); cerr << std::setprecision(outputPrec) << funVal << endl; cout << outputPrec << "\t" << (float)(t2-t1)/CLOCKS_PER_SEC << endl; ofs << ",[" << outputPrec << "," << (float)(t2-t1)/CLOCKS_PER_SEC << "]"; outputPrec += step; } ofs << " ]);" << endl; ofs.close(); return 0; } core++-1.7/progs/hypergeom/timing/timelog.cpp0100644000175000001440000000572010130300477020554 0ustar joachimusers/************************************************************* file: timelog.cpp This illustrates the speed of computing log function in following 3 methods: a) using standard hypergeometric series w/o preprocessing b) using standard hypergeometric series w/ preprocessing. c) using transformed hypergeometric series w/ preprocessing. The demo function computes the common elementary functions in any sequence of desired precision of the form start-prec, start-prec+step, start-prec+2*step, ..., end-prec and outputs consumed time on the screen. Usage: > ./timelog value start-prec end-prec step where value = desired value start-prec = start precision end-prec = end precision step = step Since Core Library 1.4 Author: Zilin Du (zilin@cs.nyu.edu) $Id: timelog.cpp,v 1.5 2004/10/04 16:58:39 exact Exp $ *************************************************************/ #include #include #include #include #include using namespace std; #define CORE_LEVEL 4 #include "CORE.h" #include "MultiPrecision.h" int main(int argc , char ** argv) { char str[255]; int start, end, step; int outputPrec; long t1, t2; int eps; Expr funVal; if (argc < 5) { cout << "./timelog value start-prec end-prec step" << endl; exit(1); } strcpy(str, argv[1]); cerr << "Computing log(" << str << ")..." << endl; start = atoi(argv[2]); end = atoi(argv[3]); step = atoi(argv[4]); cerr << "start from " << start << " to " << end << " by step " << step << endl; outputPrec = start; while (outputPrec <= end) { eps = (int)(outputPrec*log(10.0)/log(2.0)); cerr << "outputPrec = " << outputPrec << ", eps = " << eps << endl; Expr val(str, CORE_posInfty); setDefaultAbsPrecision(eps); // using standard series w/o preprocessing setHyperVersion(0); t1 = clock(); funVal = slog(val); funVal.approx(CORE_posInfty, eps); t2 = clock(); cerr << std::setprecision(outputPrec) << funVal << endl; cout << outputPrec << "\t" << (float)(t2-t1)/CLOCKS_PER_SEC; // using standard series w/ preprocessing setHyperVersion(1); t1 = clock(); funVal = slog(val); funVal.approx(CORE_posInfty, eps); t2 = clock(); cerr << std::setprecision(outputPrec) << funVal << endl; cout << "\t" << (float)(t2-t1)/CLOCKS_PER_SEC; // using transformed series w/ preprocessing t1 = clock(); funVal = log(val); funVal.approx(CORE_posInfty, eps); t2 = clock(); cerr << std::setprecision(outputPrec) << funVal << endl; cout << "\t" << (float)(t2-t1)/CLOCKS_PER_SEC << endl; // Makes output from Core Library consistent with Maple's output: // if (fabs(funVal) < 0.1) // use scientific notation // cout.setf(ios::scientific, ios::floatfield); // else // use positional notation // cout.setf(ios::fixed, ios::floatfield); outputPrec += step; } return 0; } core++-1.7/progs/hypergeom/timing/timepi.cpp0100644000175000001440000000500510130300500020362 0ustar joachimusers/************************************************************* file: timepi.cpp This program demonstrates the time differece between computing Pi on the fly and read from the file. Usage: ./timepi precision Since Core Library 1.4 Author: Zilin Du (zilin@cs.nyu.edu) $Id: timepi.cpp,v 1.5 2004/10/04 16:58:40 exact Exp $ *************************************************************/ #include #include #include using namespace std; #define CORE_LEVEL 4 #include "CORE.h" Expr arctan(int x, int a) { // compute arctan(1/x) to absolute precision 2^{-a} // x is a natural number and x > 1. int N = (int) (a / ( 2 * log(float(x))/log(float(2)))) + 1; //cout << " Number of terms needed in arctan, N = " << N << endl; Expr at = 1; Expr x2 = x * x; for (int i=1; i<=N; i++) { if (i % 2 == 1) at = x2 * at - 1 / Expr(2 * i + 1); else at = x2 * at + 1 / Expr(2 * i + 1); } at /= pow (x2, N) * x; at.approx(CORE_posInfty, a); return at; } Expr PiOverFour(int eps) { return 4*arctan(5, eps+3)-arctan(239, eps+1); } Expr PiOverTwo(int eps) { return 2*PiOverFour(eps+1); } Expr Pi(int eps) { return 4*PiOverFour(eps+2); } Expr SqrtPi(int eps) { return sqrt(Pi(eps)); } void writePi(ostream& out, int bits) { Expr pi = Pi(bits); pi.approx(CORE_posInfty, bits); BigFloat bf_pi = pi.BigFloatValue(); bf_pi.writeToFile(out); } Expr readPi(istream& in, int bits) { BigFloat bf_pi; bf_pi.readFromFile(in, bits); Expr pi(bf_pi); pi.approx(CORE_posInfty, bits); return pi; } int main(int argc , char ** argv) { int outputPrec; int eps; long t1, t2; if (argc < 2) { cout << "./timepi precision" << endl; exit(1); } cerr << "Timing Pi ..." << endl; outputPrec = atoi(argv[1]); eps = (int)(outputPrec*log(10.0)/log(2.0)); cerr << "outputPrec = " << outputPrec << ", eps = " << eps << endl; t1 = clock(); Expr p1 = Pi(eps); cerr << "Pi=" << std::setprecision(outputPrec) << p1<< endl; t2 = clock(); cout << outputPrec << "\t" << (float)(t2-t1)/CLOCKS_PER_SEC; // Compute Pi and store in the file char pi_file[255] = "pi.big"; ofstream ofs; ofs.open(pi_file); writePi(ofs, eps); ofs.close(); // Read Pi with all digits from the file ifstream ifs; ifs.open(pi_file); t1 = clock(); Expr p2 = readPi(ifs, eps); t2 = clock(); cerr << "Pi=" << std::setprecision(outputPrec) << p2 << endl; cout << "\t" << (float)(t2-t1)/CLOCKS_PER_SEC << endl; ifs.close(); return 0; } core++-1.7/progs/ieee/0040755000175000001440000000000010147210064014030 5ustar joachimuserscore++-1.7/progs/ieee/Makefile0100644000175000001440000000377610144727404015512 0ustar joachimusers# Makefile for ieeeFormat # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.20 2004/11/11 18:27:16 exact Exp $ #================================================= # Define variables #================================================= include ../Make.options ifndef lev lev=3 endif ifdef DEBUG XFLAGS = -DmyDEBUG endif p=ieeeFormat p=ieee p=coreEps p=tDoubleValue p=fpline p=next p=size p=bigRand p=frexp #================================================= # Define target files (put all your files here) #================================================= TARGETS= tDoubleValue default: $(TARGETS) MORETARGETS= ieeeFormat test: $(TARGETS) ./tDoubleValue moretest: $(MORETARGETS) ./ieeeFormat ieeeFormat: ieeeFormat.o tDoubleValue: tDoubleValue.o p $(p): $(p).o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ fpline13: fpline1 fpline3 fpline3 3: fpline3.o ${CXX} $(LDFLAGS) $< -lcorex++$(VAR)_level3 $(CORE_LIB) -o fpline3 fpline3.o: fpline.cpp ${CXX} -c $(CXXFLAGS) -DCORE_LEVEL=3 $(CORE_INC) $< -o fpline3.o fpline1 1: fpline1.o ${CXX} $(LDFLAGS) $< -lcorex++$(VAR)_level1 $(CORE_LIB) -o fpline1 fpline1.o: fpline.cpp ${CXX} -c $(CXXFLAGS) -DCORE_LEVEL=1 $(CORE_INC) $< -o fpline1.o fpline: fpline.o line: ./fpline > out coreEps: coreEps.o ${CXX} -c $(CXXFLAGS) $(XFLAGS) $(CORE_INC) $< -o $@ bigRand: bigRand.o frexp: frexp.o tt: tt.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(XFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) -@test -z p$(EXETYPE) || rm -f p$(EXETYPE) core++-1.7/progs/ieee/README0100644000175000001440000000313210130275777014722 0ustar joachimusersREADME FILE =========== Since Core Library Version 1.6 We do some simple tests to check IEEE number formats. Some of these tests are not specific to Core Library, but developers may find this information useful. Programs: ========= ieeeFormat.cpp -- gives various information about the IEEE Format (endian, sizes, etc) tDoubleValue.cpp -- verifies that our Expr::doubleValue() gives the correct double value next.cpp -- gives the next double value. bigRand.cpp -- creates 53-bit random integers which fit into machine doubles CORE Information Related to Machine Arithmetic ============================================== CORE_EPS -- predefined constant equal to 2^{-52}. Expr::doubleValue() -- convertes an Expression to closest machine double value Expr::doubleInterval(lb,ub) -- returns two double values lb, ub that are upper and lower bounds on the exact value. Let d be a double, e an int: frexp(d, &e) -- sets e to the exponent part of d. ldexp(d, e) -- returns the value d * 2^e. (thus, we do a left-shift by y) ================ ADDITIONAL NOTES: ================ IEEE double =========== bit 63 -- sign (1 bit) bits 62-52 -- exponent (11 bits) bits 51-0 -- mantissa (52 bits) Negative Infinity Double: 0x fff0 0000 0000 0000 Positve Infinity Double: 0x 7ff0 0000 0000 0000 IEEE float ========== bit 31 -- sign (1 bit) bits 30-23 -- exponent (8 bits) bits 22-0 -- mantissa (23 bits) Negative Infinity Float: 0x ff80 0000 Positve Infinity Float: 0x 7f80 0000 core++-1.7/progs/ieee/bigRand.cpp0100755000175000001440000000516110130275777016123 0ustar joachimusers/************************************************************* * bigRand.cpp * * purpose: * Since rand() gives you up to 2^{32} bits. * we want to generate 53 bit random integers * which can be stored in a machine double. * * So we want a function "bigRand()" which computes * * (rand()*2^{21} + (rand()>>11)). * * usage: * * > random3 [N=1000] [xtraBits=2] [make_pseudo_random] * * All arguments are optional. If there is a third argument, * then the random seed will be a fixed one, not random. * * The program will generate N bigRand's, and verify that * they all fit inside a machine double! * * author: Chee Yap, August 2004 * Since Core Library 1.7 *************************************************************/ #ifndef CORE_LEVEL #define CORE_LEVEL 4 #endif #include #include using namespace std; // Creating a 53 bit random integer // // THIS FUNCTION IS ALSO AVAILABLE IN CORE as "bigrand()" // BUT THE RETURNED VALUE IS machine double BigInt myBigRand(){ BigInt r = rand(); BigInt s = rand(); // Shift r to make space for 21 more bits: // r *= (BigInt(1) << 21); // Add 21 more bits from s // r += (s>> 11); return((r<<21) + (s>>11)); } // Creating a 53+xtraBits random integer // This should NOT fit into double, even with xtraBits=1. // For some reason, there is no problem with 1 extra bit? BigInt badRand(int xtraBits=2){ if (xtraBits >11) xtraBits=11; // negative shifts cause problems BigInt r = rand(); BigInt s = rand(); return((r << (21 + xtraBits)) + (s >> (11 - xtraBits))); } int main(int argc, char** argv) { // PROCESSING ARGUMENTS: int N = 1000; //default argument if (argc > 1) N = atoi(argv[1]); int xtra = 2; if (argc > 2) xtra = atoi(argv[2]); if (argc > 3) srand(123); // pseudo random only... else srand(time(0)); // default is true random // MAIN LOOP: int err=0, baderr=0; double r; BigInt M, badM, R; M=0; // keep track of the largest random number badM=0; for (int i = 0; i using namespace std; void test(int baseVal) { cout << " > Base Value = " << baseVal << endl; Expr e = baseVal; e += 2*CORE_EPS; // CORE_EPS = 2^{-53} Expr f = baseVal; f *= relEps; // relEps = 1 + 2^{-52} cout << " > Expr e = baseVal + 2*CORE_EPS = " << e << endl; cout << " >>> e.doubleValue() = " << e.doubleValue(); if (e.doubleValue() == baseVal) cout << " (ERROR!! This is same as baseVal" << endl; else cout << " (CORRECT!! This is different from baseVal" << endl; cout << " > Expr f = baseVal * refEps = " << f << endl; cout << " >>> f.doubleValue() = " << f.doubleValue(); if (f.doubleValue() == baseVal) cout << " (ERROR!! This is same as baseVal" << endl; else cout << " (CORRECT!! This is different from baseVal" << endl; cout << endl; cout << "\n\n ANOTHER TEST: How many epsilons before we see a difference?" << endl; for (int i = 1; i< 10; i++) { e += CORE_EPS; cout << " > e = baseVal + " << i+1 << " * CORE_EPS = " << e << endl; cout << " >>> e.doubleValue() = " << e.doubleValue() << endl; f *= relEps; cout << " > f = baseVal * (relEps)^{" << i+1 << "} = " << f << endl; cout << " >>> f.doubleValue() = " << f.doubleValue() << endl; cout << " =======" << endl; } } int main(int argc, char ** argv) { int baseVal = 1; if (argc >= 2) baseVal = atoi(argv[1]); int prec = 17; if (argc >= 3) prec = atoi(argv[2]); machine_double eps = CORE_EPS; setDefaultOutputDigits(prec); cout << "================================================================\n"; cout << " OUTPUT PRECISION : " << prec << endl; cout << " CORE_EPS : " << eps << endl; cout << " relEps : " << relEps << endl; cout << " =============================================================\n"; test(baseVal); cout << " =============================================================\n"; return 0; } core++-1.7/progs/ieee/fpline.cpp0100755000175000001440000000450210130275777016030 0ustar joachimusers/************************************************************ * file: fpline.cpp * author: Chee Yap * synopsis: * Test to understand ``fp-lines'' (lines defined * with fixed precision floating-point numbers) * * * usage: * % ./fplines [x= 0 [a=2 [b=3 [c=-1]]]] * * This looks at the the line equation * * aX + bY + c = 0 * * starting at X=x. The default values are indicated. * * date: June 16, 2003 * Since Core Library Version 1.6 * $Id: fpline.cpp,v 1.4 2004/10/04 16:36:15 exact Exp $ ************************************************************/ #ifndef CORE_LEVEL # define CORE_LEVEL 4 #endif #include #include using namespace std; // testLine(x, a, b, c): // Line equation is aX + bY + c = 0. // Initially, X = x. // We print the various values of Y as x increases. void testLine(double x, double a, double b, double c) { cout << "=================== Begin testLine ==========================\n"; cout << "Line equation = " << a << "X + " << b << "Y + " << c << " = 0\n"; Expr A = a; Expr B = b; assert(b != 0); Expr C = c; Expr X, Y; double y; //Initial Value: X = x; //Loop for (int i = 0; i<100; i++) { cout << " X = " << X << endl; cout << " x = " << x << endl; Y = - (C + (A*X))/B; cout << " Y = -(C + (A*X))/B = " << Y << endl; cout << " Y.doubleValue() = " << Y.doubleValue() << endl; y = - (c + (a*x))/b; cout << " y = " << Y << endl; X += CORE_EPS; x = X.doubleValue(); } cout << "===================== End testLine ==========================\n"; }// testLine int main(int argc, char ** argv) { double x = 0.0; if (argc > 1) x = atof(argv[1]); double a = 2; if (argc > 2) a = atof(argv[2]); double b = 3; if (argc > 3) b = atof(argv[3]); double c = -1; if (argc > 4) c = atof(argv[4]); int prec = 16; setDefaultOutputDigits(prec); double relEps = 1.0 + CORE_EPS; cout << "===========================================================\n"; cout << " OUTPUT PRECISION : " << prec << endl; cout << " CORE_EPS : " << CORE_EPS << endl; cout << " relEps : " << relEps << endl; cout << " ========================================================\n"; testLine(x, a, b, c); cout << " ========================================================\n"; return 0; } core++-1.7/progs/ieee/frexp.cpp0100755000175000001440000001431710130275777015704 0ustar joachimusers/* * File: frexp.cpp * * Purpose: To understanding the format of IEEE doubles * via two "standard" library functions frexp and ldexp. * * We view a IEEE double d * as the product, * * d = Mantissa(d) * 2^{Exponent(d)}. * * Here Mantissa(d) is a 53 bit binary number of the form * (0.1xxx...xxx)_2 where there are 52 x's. The value of * this mantissa, therefore, is a number in the range [0.5,1.0). * * Let d = double and e = int. We look at two instructions: * * double t = ldexp(d, e); // (A) * double m = frexp(d, &e); // (B) * * In (A), ldexp(d,e) returns the double value (d * 2^e). * In other words, this performs a left-shift of d by e. * Read "ldexp" as "load exponent". * * In (B), frexp(d,&e) will set e to Exponent(d), * and returns the normalized mantissa as m. * Thus, after executing the statement (B), we can * verify the results: * * if (d == ldexp(m, e)) * cout << "CORRECT!" << endl; * else * cout << "ERROR!" << endl; * * For instance, if d=0.5, then e=0, m=0.5; * if d=1.0, then e=1, m=0.5; * if d=2.0, then e=2, m=0.5. * if d=7.0, then e=3, m=0.875; * * From the identity d = ldexp(m,e), we also get * * m = ldexp(d, -e). // (C) * * In the BigFloat class, we need to convert a machine * double into BigFloats which uses integer mantissas * (not normalized mantissas). So, if we define * * IntMantissa(d) := m * 2^{53} * * then IntMantissa(d) will be an integer. Thus, * * d = IntMantissa(d) * 2^{-53+Exponent(d)} . * * From this equation, it is also natural to define * * IntExponent(d) := Exponent(d) - 53 * * Thus, we have * * d = IntMantissa(d) * 2^IntExponent(d). * * * author: Chee Yap * Since Core Library 1.7 * $Date: 2004/10/04 16:36:15 $ *************************************************************/ #include #include #include #include using namespace std; // implements the integer mantissa function double IntMantissa(double d) { int e; return ldexp(frexp(d, &e), 53); } // implements the integer exponent function int IntExponent(double d) { int e; frexp(d, &e); return e-53; } int main(int argc, char ** argv){ cout << setprecision(17); double d = 1.0; int e = 1; if (argc <= 1) { cout << "Input a double value: "; cin >> d; } else { d = atof(argv[1]); // atof = ascii to float! // we assume this will convert to double } if (argc > 2) { cin >> e; } cout << "###################################################" << endl; int n; double m = frexp(d, &n); // m is mantissa cout << "Exponent of " << d << " is n = " << n << endl; cout << "The normalized matissa of " << d << " is = " << ldexp(d, -n) << endl; cout << "This should be the same as " << m << endl; cout << "The mantissa as an integer is = " << ldexp(d, 53-n) << endl; cout << "The IntMantissa is = " << IntMantissa(d) << endl; cout << "The IntExponent is = " << IntExponent(d) << endl; double tmp= IntMantissa(d) * ldexp(1.0, IntExponent(d)); if (tmp == d) cout << "CORRECT! (IntMantissa(d) * 2^IntExponent(d)) == d)" << endl; else cout << "ERROR!!! (IntMantissa(d) * 2^IntExponent(d)) != d)" << endl; cout << "###################################################" << endl; cout << "For comparison, this is 2^{52} = " << ldexp(1.0, 53-1) << endl; cout << "For comparison, this is 2^{53} = " << ldexp(1.0, 53) << endl; d += ldexp(1.0, -52+n); cout << "The next larger number is d+ 2^{-52+d.exp} = " << d << endl; cout << "This is 2^e = " << ldexp(1.0, e) << endl; cout << "This is 2^(-e) = " << ldexp(1.0, -e) << endl; ////////////////////////////////////////////////// int N = 100000; ////////////////////////////////////////////////// int count = N; for (int i=1; i #include #include using namespace std; int main(void) { #ifdef ___IEEE_BIG_ENDIAN cout << "Big Endian System!" << endl; #endif #ifdef ___IEEE_LITTLE_ENDIAN cout << "Little Endian System!" << endl; #endif double db1 = 1.0; double db2 = 0.0; fpsetsticky(FP_X_DZ); double db3 = db1 / db2; cout << "db3=" << db3 << endl; cout << "exception: " << fpgetmask() << endl; cout << "FP_X_DX=" << FP_X_DZ << endl; return 0; } core++-1.7/progs/ieee/ieeeFormat.cpp0100644000175000001440000001163410130275777016634 0ustar joachimusers/************************************************************ * file: ieeeFormat.ccp * author: Zilin Du and Chee Yap * synopsis: Various questions about format of IEEE machine numbers * * -- checks if your machine is Big Endian or Little Endian * E.g., solaris is Little Endian and Pentium is Big Endian * -- format of special constants (+/- Infinity, NaN, etc) * -- size of various machine number types * * usage: * % g++ ieeeFormat.cc -o ieeeFormat * % ./ieeeFormat * * date: July 26, 2001 * Since Core Library Version 1.4 * $Id: ieeeFormat.cpp,v 1.8 2004/10/04 16:36:15 exact Exp $ ************************************************************/ #include #include #include #include using namespace std; // We must use unions to avoid dirty casts, to avoid aliasing problems. // (see option -fstrict-aliasing of GCC) union float_uint { float f; unsigned int ui; }; union double_ulong { double d; struct { unsigned long ul1, ul2; } ul; }; int main() { // float float_uint f_ui1, f_ui2; f_ui1.f = 0.0; f_ui2.f = 0.0; // double double_ulong d_ulx, d_uly, d_ulz; d_ulx.d = 0.0; d_uly.d = 1; d_ulz.d = 0.0; // int int xi = 1; // long long xl = 1; #ifndef _MSC_VER // long long (Visual C++ doesn't support long long) long long xll = 1; #endif // bool bool bigEndian; // Endian tests cout << "*********************** ENDIAN TESTS *******************\n"; cout << "N.B. Solaris is Little Endian, Pentium is Big Endian.\n"; char *pi = (char *)ξ if ( (*pi) == 1 ) { cout << "This is Big Endian int!" << endl; bigEndian = true; } else { cout << "This is a Little Endian int!" << endl; bigEndian = false; } char *pl = (char *) &xl; if ( (*pl) == 1 ) cout << "This is a Big Endian long!" << endl; else cout << "This is a Little Endian long!" << endl; #ifndef _MSC_VER char *pll = (char *) &xll; if ( (*pll) == 1 ) cout << "This is a Big Endian long long!" << endl; else cout << "This is a Little Endian long long!" << endl; #endif // Size tests cout << "*********************** SIZE TESTS *********************\n"; cout << "size of an bool = " << sizeof(bool) << endl; cout << "size of an char = " << sizeof(char) << endl; cout << "size of an int = " << sizeof(int) << endl; cout << "size of an unsigned int = " << sizeof(unsigned int) << endl; cout << "size of a long = " << sizeof(long) << endl; cout << "size of an unsigned long = " << sizeof(unsigned long) << endl; #ifndef _MSC_VER cout << "size of a long long = " << sizeof(long long) << endl; #endif cout << "size of a float = " << sizeof(float) << endl; cout << "size of a double = " << sizeof(double) << endl; // Signed Zero cout << "*********************** SIGNED ZERO ********************\n"; cout << "positive double zero: " << d_ulx.d << endl; cout << "positive double zero: " << -d_ulx.d << endl; // The following may appear a little surprising at first: if (d_ulx.d == (-d_ulx.d)) cout << "CORRECT(!) : positive zero = negative zero "; else cout << "ERROR(!) : positive zero != negative zero "; cout << endl; // Infinity cout << "*********************** INFINITY ***********************\n"; f_ui2.f = 0.0; d_ulz.d = 0.0; f_ui2.ui = f_ui2.ui | 0xff800000L; // -infinity float unsigned long *pzd = &d_ulz.ul.ul1; if (bigEndian) pzd++; (*pzd) = (*pzd) | 0xfff00000L; // -infinity double cout << "Negative Infinity: float = " << f_ui2.f << ", double = " << d_ulz.d << endl; f_ui2.f = 0.0; d_ulz.d = 0.0; f_ui2.ui = f_ui2.ui | 0x7f800000L; // +infinity float (*pzd) = (*pzd) | 0x7ff00000L; // +infinity double cout << "Positive Infinity: float = " << f_ui2.f << ", double = " << d_ulz.d << endl; cout << "double 1.0/0.0 = " << d_uly.d/d_ulx.d << endl; cout << "double 1.0/(-0.0) = " << d_uly.d/(-d_ulx.d) << endl; if (d_ulz.d == (d_uly.d/d_ulx.d)) cout << "CORRECT! Have constructed positive infinity" << endl; else cout << "ERROR! Failed to construct positive infinity" << endl; // NaN cout << "*********************** SIGNED NaN **********************\n"; cout << "Here are some ways to get NaN" << endl; f_ui2.f = 0.0; d_ulz.d = 0.0; f_ui2.ui = f_ui2.ui | 0x7f800001L; // positive NaN (*pzd) = (*pzd) | 0x7ff00001L; // positive NaN cout << " Positive NaN: float = " << f_ui2.f << ", double = " << d_ulz.d << endl; f_ui2.f = 0.0; d_ulz.d = 0.0; f_ui2.ui = f_ui2.ui | 0xfff00000L; // negative NaN (*pzd) = (*pzd) | 0xfff10000L; // negative NaN cout << " Negative NaN: float = " << f_ui2.f << ", double = " << d_ulz.d << endl; cout << "N.B. On Solaris, the next 4 divisions only produce +NaN's.\n"; cout << "N.B. On Pentium, the next 4 divisions only produce -NaN's.\n"; cout << " double 0.0/0.0 : " << d_ulx.d/d_ulx.d << endl; cout << " float 0.0/0.0 : " << 0.0/f_ui1.f << endl; cout << " float -0.0/0.0 : " << -0.0/f_ui1.f << endl; cout << " double 0.0/-0.0 : " << d_ulx.d/(-d_ulx.d) << endl; return 0; } core++-1.7/progs/ieee/next.cpp0100755000175000001440000000465710130275777015544 0ustar joachimusers/************************************************************ * file: next.ccp * synopsis: Computes the next largest IEEE floating point number * * usage: * % next * * author: Chee Yap * date: Aug 26, 2003 * Since Core Library Version 1.6 * $Id: next.cpp,v 1.5 2004/10/04 16:36:15 exact Exp $ ************************************************************/ #define CORE_LEVEL 4 #include #include "next.h" using namespace std; int main(int argc, char** argv) { setScientificFormat(); cout << setprecision(55); // setDefaultPrecision(100, CORE_INFTY); // relative 100 bits cout << "=========== Next Floating Point Value =================\n"; cout << " Default Precision is (100,infty)" << endl; cout << " Machine Precision = " << MACHINE_PREC << endl; cout << " BITS of precision in evaluating Expr = " << BITS << endl; cout << " CORE_EPS (Unit Roundoff) = " << CORE_EPS << endl; cout << " CORE_EPS as Expr = " << show(CORE_EPS, BITS) << endl; cout << "==================================================\n"; int init = 1; if (argc>1) init = atoi(argv[1]); int stop = 10; if (argc>2) stop = atoi(argv[2]); double x = init; double xx; Expr X; cout << ">>>> FORWARD values starting from " << x << endl; for (int i = init; i <= stop; i++){ xx = next(x); cout << " next double value = " << xx << endl; if (x == xx) cout << "ERROR! next value equal previous value" << endl; #ifdef myDEBUG else { X = xx; cout << " >> As Expr = " << X ; } cout << " >> to " << BITS << " bits = " << show(xx, BITS) << endl; #endif x = xx; cout << endl; } cout << ">>>> BACKWARD values starting from " << xx << endl; for (int i = init; i <= stop; i++){ xx = prev(x); cout << " prev double value = " << xx << endl; if (x == xx) cout << "ERROR! prev value equal previous value" << endl; #ifdef myDEBUG else { X = xx; cout << " >> As Expr = " << X ; } cout << " >> to " << BITS << " bits = " << show(xx, BITS) << endl; #endif x = xx; cout << endl; } cout << "=========== END Floating Point Value Test =============\n"; double a = 1.0; double aa = nextafter(a, 2); double aaa = nextafter(aa, 2); cout << " (aa,aaa) = " << aa << ", " << aaa << endl; if (aa == next(a)) cout << " aa == next(a)" << endl; else cout << " aa != next(a)" << endl; if (aaa == next(a)) cout << " aaa == next(a)" << endl; else cout << " aaa != next(a)" << endl; return 0; } core++-1.7/progs/ieee/next.h0100755000175000001440000000547710127345240015177 0ustar joachimusers/* file: next.h * * Synopsis: * Main function here is * next(double x) * which returns the next larger floating point value. * * The converse of next is * prev(double x) * which returns the next smaller floating point value. * * There are 2 mysteries here (see below). * * NOTE: it is in standard C library that * the function nextafter(double x, double y) * will do the same and "next/prev", but return * a value between x and y. * For floats, it is called nextafterf(x,y). * * Author: Chee * Date: Aug 2003 */ /* ************************************************** * Mystery 1: I use the 52 because 53 does not work. * But I believe 53 should be the correct value correct. * * Actually, it does work for numbers less than 1. * Try invoking "next 0" when value 53 (or larger) is used. * But this can be explained by subnormal numbers. * **************************************************/ #include using namespace std; #ifndef MACHINE_PREC # define MACHINE_PREC 53 #endif #ifndef BITS # define BITS 60 #endif /* ************************************************** * next(x) returns the next smallest machine double. * **************************************************/ double next(double x) { BigFloat e = x; long fl = floorLg(e.BigIntValue()); // e is auto-converted to Expr in // order to call floorLg !! cout << "fl=" << fl << endl; BigFloat bf = BigFloat::exp2(1 + fl- MACHINE_PREC ); cout << "bf=" << bf << endl; cout << "2^{-52}=" << ldexp(1.0, -52) << endl; e += bf; cout << "e=" << e << endl; // #ifdef myDEBUG // cout << " fl = floorLg(" << x << ") = " << fl << endl; // cout << " bf = exp2(1 + fl - MACHINE_PREC) = " << bf << endl; // cout << " " << x << " + bf = " << e << endl; // cout << " next = " << e.doubleValue() << endl; // #endif return e.doubleValue(); } /* ************************************************** * prev(x) returns the next largest machine double. * **************************************************/ double prev(double x) { BigFloat e = x; long fl = ceilLg(e.BigIntValue()); BigFloat bf = BigFloat::exp2( fl- MACHINE_PREC ); e -= bf; // #ifdef myDEBUG // cout << " fl = ceilLg(" << x << ") = " << fl << endl; // cout << " bf = exp2( fl - MACHINE_PREC) = " << bf << endl; // cout << " " << x << " + bf = " << e << endl; // cout << " prev = " << e.doubleValue() << endl; // #endif return e.doubleValue(); } /* ************************************************** * show(x, b) returns BigFloat value of x, to b bits * * Mystery 2: why does this show more bits than * the ieee double? * **************************************************/ BigFloat show(double x, int bits=54) { Expr e = x; e.approx(bits, CORE_INFTY); BigFloat b = e.BigFloatValue(); // b.makeExact(); // not needed return b; } core++-1.7/progs/ieee/nextafter.cpp0100755000175000001440000000314310130276000016527 0ustar joachimusers// Sylvain Pion (adapted by Chee) // // The follow code reveals a bug in Expr's output! // Let g to be the smallest double value that is > than 1. // Expr(g) will print only 1. // #define CORE_LEVEL 4 #include #include #include using namespace std; int main() { double d = 1/3.0; double e = nextafter(d, 1.0); double f = 1.0; double g = nextafter(f, 2.0); double gg = nextafter(g, 2.0); // double gg = nextafter(nextafter(g, 2.0), 2.0); cout.precision(40); cout << d << endl; cout << e << endl; cout << f << endl; cout << g << endl; // This ought to print "1.0000...022". // But in cygwin, this prints "1" cout << gg << endl; printf("g = %2.20f\n", g); // This prints properly in cygwin printf("g = %2.55f\n", g); // This is to see ALL the significance of g printf("gg = %2.55f\n", gg); // This is to see ALL the significance of g if (f == g) cout << "error! f == g" << endl; else cout << "correct! f != g" << endl; // Now, to see what happens in CORE: Expr E = Expr(g); E.approx(100,100); // Evaluate it to high precision cout << setprecision(55) << "Expr(g) = " << E << endl; // BUG!! On cygwin, I get an output of "1" E = Expr(gg); E.approx(100,100); // evaluate it to many bits setDefaultOutputDigits(100); // output to many digits cout << setprecision(100) << "Expr(gg) = " << E << endl; // BUG!! On cygwin, I get an output of "1" if (E > 1) cout << "CORRECT! Expr(g) > 1" << endl; else if (E == 1) cout << "ERROR! Expr(g) == 1" << endl; else if (E == 1) cout << "ERROR! Expr(g) < 1" << endl; return 0; } core++-1.7/progs/ieee/tDoubleValue.cpp0100644000175000001440000000725710130276000017131 0ustar joachimusers/************************************************************ * file: tDoubleValue.cpp * author: Chee Yap and Zilin Du * synopsis: * Testing two conversion routines in Expr.h: * * Expr::doubleValue() * -- returns the closest machine double value * Expr::doubleInterval( lb, ub) * -- returns an enclosing interval [lb,ub] * formed by two machine doubles lb, ub. * * NOTE: we use two builtin functions: * Suppose d=double and e=int. Then * frexp(d, &e) -- sets e to the exponent part of d * ldexp(d, e) -- returns the value (d * 2^e); * * usage: * % tDoubleValue [dValue="1.23"] [prec=17] * * KNOWN BUG: * The print out for Expr(e) does not * seem to be always consistent with machine double interval. * * E.g., * Expr e = 1 + 2^{-52} * has the printout value = 1.00000000000000044 * But e.doubleInterval(lb, ub) gives * * [lb, ub] = (1.0000000000000004, 1.0000000000000004) * * * date: June 16, 2003 * Since Core Library Version 1.6 * $Id: tDoubleValue.cpp,v 1.7 2004/10/04 16:36:16 exact Exp $ ************************************************************/ #include using namespace std; // test( s ) // where s is string of digits (called baseVal) // // (1) // We convert s to Expr e, and to machine double d. // We compare e.doubleValue() with d: // if they are not equal, we have error. // // (2) // We also call e.doubleInterval(lb, ub) which returns // the interval defined by the machine doubles lb and ub. // We compare to see if lb <= d <= ub. // If not, we have an error. // void test(const char * baseVal) { cout << " =====================================================\n"; machine_double d = atof(baseVal); Expr e(baseVal); cout << " baseVal = " << baseVal << endl; cout << " e = Expr(baseVal) = " << e << endl; cout << " d = atof(baseVal) = " << d << endl; cout << " e.doubleValue() = " << e.doubleValue() << " (should be same as previous value)" << endl; machine_double lb, ub; e.doubleInterval(lb, ub); cout << " [lb, ub] = (" << lb << ", " << ub << ")" << endl; if ((e > Expr(ub)) || (e < Expr(lb))) cout << "ERROR! e is not inside [lb, ub]" << endl; else cout << "CORRECT! e is inside [lb, ub]" << endl; cout << " NEXT, modify e to next representable double value " << endl; int exp; frexp(d, &exp); // frexp(d, &e) sets e to the exponent part of d e += ldexp(1.0, -52+exp); // ldexp(x,y) = x * 2^y; cout << " e+ 2^{-52+e.exp} = " << e << endl; d += ldexp(1.0, -52+exp); // ldexp(x,y) = x * 2^y; cout << " d+ 2^{-52+d.exp} = " << d << endl; cout << " e.doubleValue() = " << e.doubleValue() << " (should be same as previous value)" << endl; cout << " NEXT, get the double Interval containing e, d " << endl; e.doubleInterval(lb, ub); cout << " [lb, ub] = (" << lb << ", " << ub << ")" << endl; if ((e > Expr(ub)) || (e < Expr(lb))) cout << "ERROR! e is not inside [lb, ub]" << endl; else cout << "CORRECT! e is inside [lb, ub]" << endl; cout << " =====================================================\n"; } int main(int argc, char ** argv) { setDefaultRelPrecision(60); const char * baseVal = "0.123456789012345"; if (argc >= 2) baseVal = argv[1]; int prec = 18; if (argc >= 3) prec = atoi(argv[2]); setDefaultOutputDigits(prec); cout << "===========================================================\n"; cout << " OUTPUT PRECISION : " << prec << endl; cout << "===========================================================\n"; test(baseVal); test("0"); test("1"); test("-1"); test("123"); test("0.123"); test(".123"); return 0; } core++-1.7/progs/kahan/0040755000175000001440000000000010147210064014203 5ustar joachimuserscore++-1.7/progs/kahan/Makefile0100644000175000001440000000173007670164450015657 0ustar joachimusers# Makefile for kahan # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.5 2003/06/06 19:19:04 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= kahan all: $(TARGETS) test: $(TARGETS) ./kahan kahan: kahan.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/kahan/README0100644000175000001440000000362507437361201015076 0ustar joachimusersREADME for kahan Core Library, $Id: README,v 1.1.1.1 2002/02/28 07:55:45 exact Exp $ =============================================================== Kahan posed the following challenge for Core Library: "Let x,y,z be real and define F(z) := if (z=0) then 1 else (exp(z) -1)/z; Q(y) := | y- sqrt(y**2 + 1) | - 1/( y + sqrt( y**2 + 1 ) ; G(x) := F( Q(x) ** 2). Now for n = 15 to 9999 do Print { n, G(n) }. You may replace exp(z) by the first few terms of its Taylor series. Assume that all expressions are computed to the same floating-point precision rounded in a reasonable way. Unless your system can deduce algebraically that Q(n) = 0, it will almost always compute a nonzero value so small that then it will compute G(n) after roundoff, where the correct value of G(n) = 1. To get the correct value, your system would have to perform correct analysis with inequalities and symbolic expressions, no easy matter. Inequalities can be very troublesome for automated symbolic analysis. Here is another example: Let w be a complex variable, and let sqrt(...) stand for the principal square root, the one whose real part is nonnegative and whose imaginary part matches the argument's imaginary part in sign. One of the following expressions vanishes everywhere; where does the other NOT vanish? sqrt( w*w - 1 ) - sqrt(w - 1)*sqrt(w + 1) sqrt( 1 - w*w ) - sqrt(1 - w)*sqrt(1 + w) Of course, this question can be reduced to an equivalent question about real variables." [Email to Yap, 4/21/2000] ==================================================================== POSTSCRIPT: This program was verified by Kahan to compute as he had specified. Kahan remarked that our system had to do "theorem proving" to accomplish this feat. In a sense, this is right! Our system has some inherent ability to prove theorems. See our ruler-and-compass geometric theorem prover under ${CORE}/progs/prover/. core++-1.7/progs/kahan/kahan.cpp0100644000175000001440000000260207674755317016020 0ustar joachimusers/* ************************************************ File: kahan.cc Purpose: Kahan posed a challenge for Core Library, to compute a certain function G(n) and to compare its output to 1 for various values of n. It turns out that G(n) is identically equal to 1. In CORE_LEVEL 1, errors in machine floating point ensures that this test gives the wrong answer. But Core Library has no problems with this function. Usage: % kahan Author: Chee Yap Core Library, $Id: kahan.cpp,v 1.5 2003/06/21 04:10:55 exact Exp $ ************************************************ */ #ifndef CORE_LEVEL #define CORE_LEVEL 3 #endif #include "CORE.h" double F(double z) { if (z == 0) return 1; double zz = z*z; double out = (1 + (z/2) + (zz/6) + ((z*zz)/24)); return (out); } inline double abs(double x) { return (x > 0)? (x) : (- (x)); } double Q(double y) { double yy = y*y; double x = (sqrt(yy +1) - y) - (1/(y+sqrt(yy +1))); if (x != 0) std::cout << "x = " << x << std::endl; return x; } double G(double x) { double qx = Q(x); if (qx != 0) std::cout << " Q(x) not 0! = " << qx << std::endl; return (F(qx * qx)); } int main(void) { double g; //setFpFilterFlag(false); for (int n=5000; n<5010; ++n){ g = G(n); std::cout << " n = " << n << "; G(n) = " << g << ((g == 1)? " Correct! \n" : " Incorrect! \n"); } return 0; } core++-1.7/progs/nestedSqrt/0040755000175000001440000000000010147210064015255 5ustar joachimuserscore++-1.7/progs/nestedSqrt/Makefile0100644000175000001440000000221110144502413016705 0ustar joachimusers# Makefile for nestedSqrt # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.7 2004/11/10 21:15:55 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= p = nestedSqrtX TARGETS= nestedSqrt MORE_TARGETS= nestedSqrtX default: $(TARGETS) more: $(MORE_TARGETS) test: $(TARGETS) ./nestedSqrt moretest: $(MORE_TARGETS) ./nestedSqrtX p: $(p) nestedSqrt: nestedSqrt.o X nestedSqrtX: nestedSqrtX.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/nestedSqrt/README0100644000175000001440000000465107546603465016164 0ustar joachimusersFile: README for nestedSqrt Core Library $Id: README,v 1.3 2002/10/02 14:48:21 exact Exp $ ======================================================================== SYNOPSIS: The following example is from a paper in SODA'98 by Burnikel, Fleischer, Mehlhorn and Schirra (BFMS) describing their constructive root bound for radical expressions. Let SQRE(x, k) = SQRT(x, k-1)**2 if k > 0, = x if k=0. SQRT(x, k) = sqrt(SQRT((x, k-1)) if k > 0, = x if k=0. The program nestedSqrt.cpp computes E = SQRT(SQRE(2, k) - 1, k) - 2, which is a negative number very close to zero. We also use this as a demo of the use of Incremental Flag, to show the vast improvement in speed for some expressions. ======================================================================== Sep 30, 2002: nestedSqrtX.cpp is a variant of nestedSqrt.cpp. We now allow the base value (x) to be any decimal number. We evaluate two expressions: One expression E1 is essentially the one in nestedSqrt.cpp, except that the result is a small positive value: E1 = SQRT(SQRE(x, k) + 1, k) - x Another expression E0 is identically zero. E0 = SQRT(SQRE(x, k) , k) - x This allows us to test the speedup from the new k-ary root bounds. TIMING RESULTS: platform is SunBlade 1000 (2 CPU) > % time nestedSqrtX 6 2.5 > ================== NestedSqrtX ================ > =============================================== > Nesting depth is 6 > x = 2.50000000000000 > E = SQRE(2.50000000000000, 6) > = 29387358770557187699218413.43055614194547 > where SQRE(x,k)= SQRE(x,k-1)**2 and SQRE(x,0)=x > E1 = SQRT(E + 1, 6) - x > = .1329227995784915872903807038018071559792e-26 > (N.B. E1 should be very small positive number) > ( lg(E1) ~ -90) > E0 = SQRT(E, 6) - x > = 0 > (CORRECT!! E0 is identically zero) > =============================================== > 0.05u 0.02s 0:00.13 53.8% Repeating the above with different nesting depths, we get: DEPTH CORE 1.5x CORE 1.5 CORE 1.4 ===== ========= ======== ======== 6 0.05 0.06 7.17 7 0.10 0.20 57.58 8 0.35 0.85 ... 9 1.48 3.74 10 7.50 18.14 ===== ========= ======== ======== Note: in CORE 1.5x has the BFMSS[2,5] Bounds CORE 1.5 has the BFMSS[2] Bounds CORE 1.4 has the BFMS Bounds ======================================================================== core++-1.7/progs/nestedSqrt/nestedSqrt.cpp0100644000175000001440000000434510130275342020122 0ustar joachimusers/**************************************************************** file: nestedSqrt.cc purpose: To illustrate a very high precision inequality comparison This example is taken from the SODA'98 paper of Burnikel, Fleischer, Mehlhorn and Schirra (which describes the BFMS root bound) author: Chee Yap and Zilin (July 2001) usage: % nestedSqrt [N] [Flag] -- where the two optional arguments have the following meaning: -- N is the nesting depth of the sqrt expression N = 4 is the default -- Flag is used to turn on or off the incremental evaluation flag Flag = 1 to turn on (this is the default) Flag = 0 to turn off incremental evaluation NOTES: There is little reason to turn off the incremental evaluation flag. To give an example of how incremental evaluation can speed up the evaluation, try the following two commands in this directory: % make timing N=8 IncFlag=0 % make timing N=8 IncFlag=1 On our machine, these two tests takes 30.9 and 1 second, respectively. Since CORE Library version 1.4 $Id: nestedSqrt.cpp,v 1.7 2004/10/04 16:31:30 exact Exp $ ****************************************************************/ #ifndef CORE_LEVEL #define CORE_LEVEL 3 #endif #include "CORE.h" int main(int argc, char* argv[]) { std::cout.precision(40); setDefaultRelPrecision(20); setDefaultAbsPrecision(CORE_posInfty); double E = 2; int i,k; k = 4; if (argc == 1) { std::cout << "Default nesting depth is 4; you can provide the\n" << " nesting depth in the command line, e.g., nestedSqrt 6\n"; } else { k = atoi(argv[1]); if (argc == 3) { int IncFlag = atoi(argv[2]); if (IncFlag == 0) setIncrementalEvalFlag(false); else setIncrementalEvalFlag(true); } } for (i=0;i 0, and natural number k, we test the sign of the following two expressions: E0 = E0(x,k) = SQRT( SQRE( x, k), k) - x E1 = E1(x,k) = SQRT( SQRE( x, k) + 1, k) - x where SQRE( x, k) = SQRE( x, k-1)**2 when k>0, and SQRE( x, 0)= x, and SQRT( x, k) = sqrt( SQRT( x, k-1) when k>0, and SQRT( x, 0)= x, Clearly E0 is identically zero. For large k, E1 is a very small positive number. Author: Chee Yap (Sep 30, 2002) Usage: % nestedSqrtX [k=4] [x="2.25"] -- where the two optional arguments have the following meaning: -- k is the nesting depth of the sqrt expression k = 4 is the default -- x is the base number in decimal. x = 2.25 is the default Since CORE Library Version 1.5 $Id: nestedSqrtX.cpp,v 1.4 2004/10/04 16:31:31 exact Exp $ ****************************************************************/ #ifndef CORE_LEVEL #define CORE_LEVEL 3 #endif #include "CORE.h" int main(int argc, char* argv[]) { std::cout << "================== NestedSqrtX ================" << std::endl; std::cout << "===============================================" << std::endl; // PRECISION PARAMETERS // ======================================================================== std::cout.precision(40); // printout precision setDefaultRelPrecision(20); // default relative precision setDefaultAbsPrecision(CORE_posInfty); // turn off absolute precision // COMMAND LINE ARGUMENTS // ======================================================================== double E, x; int i,k; if (argc == 1) { k = 4; std::cout << " Nesting depth is 4 (default)" << std::endl; } else { k = atoi(argv[1]); std::cout << " Nesting depth is " << k << std::endl; } if (argc == 3) { x = argv[2]; std::cout << " x = " << x << std::endl; } else { x = "2.25"; // default base value std::cout << " x = " << x << " (default) " << std::endl; } // EVALUATION OF EXPRESSION E1 // ======================================================================== E = x; for (i=0;i0) { setScientificFormat(); std::cout << " E1 = SQRT(E + 1, " << k << ") - x \n"; std::cout << " = " << E1 << std::endl; std::cout << " (N.B. E1 should be very small positive number)\n"; std::cout << " ( lg(E1) ~ " <uMSB()<< ")"<< std::endl; } else std::cerr << " ERROR!! E1 is not positive " << std::endl; // EVALUATION OF EXPRESSION E0 // ======================================================================== for (i=0;i pivot [infile] [outfile] [strategy] * * where the default arguments are * [infile]="in/data1.txt", which contains 100 points * [outfile]="out/data1.txt" will hold the results of test * [strategy]=1 is an integer indicating pivot choice heuristic * * Pivot Choice Heuristics: * 0 = unspecified (or, pivot on random point) * i = pivot on i-th point (i=1,2,3) * 4 = Fortune's heuristic (pick point whose x value is median) * 5 = pivot on point opposite the longest edge * 6 = pivot on point with largest angle * * Author: Chee Yap * Adapted from code by Seung-Hyun Yun (shyun@3map.snu.ac.kr) * Date: July 2004 * Since Core Library Version 1.7 * *****************************************************************/ #include "pivot.h" using namespace std; // N=number of points in input file #define N 100 // Files are global char infile[]="in/data1.txt"; char outfile[]="out/data1.txt"; ifstream in; ofstream out; // MAIN ROUTINE int main( int argc, char **argv ) { register int i; if (argc>1) in.open( argv[1] ); else in.open(infile); // Input file has N points (= 2N numbers) if (argc>2) out.open( argv[2] ); else out.open(outfile); // Results of test written here int strategy; if (argc>3) strategy = atoi( argv[3] ); else strategy = 1; // 0=first point, 1=fortune, 2=max length, 3=max angle // read input points from file Point *Pts = new Point[N]; for ( i = 0; i < N; i++ ) { in >> Pts[i].x; in >> Pts[i].y; } // ACTUAL TEST ROUTINE pivotest( Pts, strategy ); // CLEAN UP cout<< "done" << endl; delete [] Pts; out.close(); return 0; } // Test the performance of a single strategy void pivotest( Point *Pts, int strategy ) { register int i,j; Point p, q, r; double approx, exact; int countRightArea=0, countWrongArea=0; int countRightSign=0, countWrongSign=0; for (i=0; i 0)|| ((approx == exact)&& (approx ==0))) countRightSign++; else countWrongSign++; } out << "PIVOTING RESULTS" << endl; out << " Input file: " << infile << endl; out << "=======================================================" << endl; out << " count of areas: right = " << countRightArea << ", wrong = " << countWrongArea << endl; out << " count of signs: right = " << countRightSign << ", wrong = " << countWrongSign << endl; } // Test the performance of a single strategy void pivotest2( Point *Pts, int strategy1, int strategy2 ) { } // This chooses the pivot based on some strategy: // --it is inlined because it is meant to be // called mainly by the area_approx program inline int pivotChoice( Point p, Point q, Point r, int strategy ){ switch (strategy) { case 0: // Take the any point? Not really used return 1; break; case 1: // Take the first point return 1; break; case 2: // Take the second point return 2; break; case 3: // Take the third point return 3; break; case 4: // Fortune's. Return the index of the median x-coordinate return median_index(p.x, q.x, r.x); break; case 5: // longest side return max_index( p.get_norm_square(), q.get_norm_square(), r.get_norm_square()); break; case 6: // largest angle return max_index( get_angle( q-p, r-p ), get_angle( p-q, r-q ), get_angle( p-r, q-r )); break; default: ; } cout << "ERROR in pivotChoice" << endl; return -1; // should not reach this! } // computes signed area using specified pivot strategy double area_approx( Point p, Point q, Point r, int pivot_idx ) { int i = pivotChoice(p, q, r, pivot_idx); switch( i ) { case 1: // p as pivot return (( q.x - p.x ) * ( r.y - p.y ) - ( q.y - p.y ) * ( r.x - p.x )); break; case 2: // q as pivot return (( r.x - q.x ) * ( p.y - q.y ) - ( r.y - q.y ) * ( p.x - q.x )); break; case 3: // r as pivot return (( p.x - r.x ) * ( q.y - r.y ) - ( p.y - r.y ) * ( q.x - r.x )); break; default: ; } return 0; } // computes the exact area, converted to machine double double area_exact( Point p, Point q, Point r ) { return (( Expr(q.x) - Expr(p.x) ) * ( Expr(r.y) - Expr(p.y) ) - ( Expr(q.y) - Expr(p.y) ) * ( Expr(r.x) - Expr(p.x) )).doubleValue(); } // computes the angle(p0, origin, p1). double get_angle( Point p0, Point p1 ) { double cs; p0.normalize(); p1.normalize(); cs = p0 * p1; cs = acos( cs ); return cs; } /* * ORIGINAL CODE FROM Yun Seung Hyun void signed_area( Point *Pts, int size, int strategy, ofstream& out ) { register i, j, k; Point p, q, r; double *absolute_error; double *relative_error; Expr average_absolute_error, average_relative_error, max_absolute_error = Expr( 0 ), max_relative_error = Expr( 0 ); double sum_absolute_error = 0, sum_relative_error = 0; int pivot_idx, count_correct_value = 0, count_correct_sign = 0, count_inverted_sign = 0, count_total = N * ( N - 1 ) * ( N - 2 ) / 6, idx = 0; absolute_error = new double[count_total]; relative_error = new double[count_total]; Expr exact_area, approx_area; for ( i = 0; i < size; i++ ) for ( j = i + 1; j < size; j++ ) for ( k = j + 1; k < size; k++ ) { p = Pts[i]; q = Pts[j]; r = Pts[k]; double tmp; // get pivot method. if ( strategy == 1 ) pivot_idx = get_pivot_idx_I( p, q, r ); if ( strategy == 2 ) pivot_idx = get_pivot_idx_II( p, q, r ); if ( strategy == 3 ) pivot_idx = get_pivot_idx_III( p, q, r ); // get approximated area using machine level. tmp = signed_area_approx( p, q, r, pivot_idx ); // get exact area using core lib. exact_area = signed_area_exact( p, q, r ); // to compare approximated area with exact area. approx_area = Expr( tmp ); // get error and sum if ( exact_area != 0 ) { absolute_error[idx] = ExprAbs( approx_area-exact_area ).doubleValue(); relative_error[idx] = ( ExprAbs( approx_area - exact_area ) / ExprAbs( exact_area ) ).doubleValue(); sum_absolute_error = sum_absolute_error + absolute_error[idx]; sum_relative_error = sum_relative_error + relative_error[idx]; } else { relative_error[idx] = 0; absolute_error[idx] = ExprAbs( approx_area - exact_area ).doubleValue(); sum_absolute_error = sum_absolute_error + absolute_error[idx]; sum_relative_error = sum_relative_error + relative_error[idx]; } // get maximum error. if ( absolute_error[idx] > max_absolute_error ) max_absolute_error = absolute_error[idx]; if ( relative_error[idx] > max_relative_error ) max_relative_error = relative_error[idx]; // count the followings... if ( absolute_error[idx] == 0 ) count_correct_value++; if ( ExprSign( approx_area ) == ExprSign( exact_area ) ) count_correct_sign++; if ( ExprSign( approx_area ) != ExprSign( exact_area ) ) count_inverted_sign++; idx++; } average_absolute_error = sum_absolute_error / count_total; average_relative_error = sum_relative_error / count_total; double sum_absolute = 0.0; double sum_relative = 0.0; for ( i = 0; i < count_total; i++ ) { Expr difference_absolute = absolute_error[i] - average_absolute_error; Expr difference_relative = relative_error[i] - average_relative_error; difference_absolute = difference_absolute * difference_absolute; difference_relative = difference_relative * difference_relative; sum_absolute = sum_absolute + difference_absolute.doubleValue(); sum_relative = sum_relative + difference_relative.doubleValue(); } Expr deviation_absolute, deviation_relative; out << setprecision(15); deviation_absolute = sqrt( sum_absolute / count_total ); deviation_relative = sqrt( sum_relative / count_total ); out << "=======================================================" << endl; out << "Result" << endl; out << "1. The number of time( approx_area == exact_area ) is " << count_correct_value << endl; out << "2. The maximum value of |approx_area-exact_area| is " << max_absolute_error << endl; out << "3. The average value of |approx_area - exact_area| is " << average_absolute_error << endl; out << "4. The standard deviation of |approx_area - exact_area| is " << deviation_absolute << endl; out << "5. The maximum value of |approx_area - exact_area| / |exact_area| is " << max_relative_error << endl; out << "6. The average value of |approx_area - exact_area| / |exact_area| is " << average_relative_error << endl; out << "7. The standard deviation of |approx_area - exact_area| / |exact_area| is " << deviation_relative << endl; out << "8. The number of correct sign is " << count_correct_sign << endl; out << "9. The number of inverted sign is " << count_inverted_sign << endl; out << "=======================================================" << endl; delete [] absolute_error; delete [] relative_error; } int ExprSign( Expr e ) { if ( e == 0 ) return 0; if ( e > 0 ) return 1; return -1; } int get_pivot_idx_I( Point p, Point q, Point r ) { register i; int pivot_idx = 1; double min, tmp; min = rho( p, q, r, 1 ); for ( i = 2; i < 4; i++ ) { tmp = rho( p, q, r, i ); if ( tmp < min ) { pivot_idx = i; min = tmp; } } return pivot_idx; } int get_pivot_idx_II( Point p, Point q, Point r ) { double P, Q, R; P = get_angle( q-p, r-p ); Q = get_angle( p-q, r-q ); R = get_angle( p-r, q-r ); if ( P > Q ) { if ( P > R ) return 1; // P > Q,R else return 3; // R > P > Q } else { if ( Q > R ) return 2; // Q > P,R else return 3; // R > Q > P; } return 1; } int get_pivot_idx_III( Point p, Point q, Point r ) { double P, Q, R; P = get_angle( q-p, r-p ); Q = get_angle( p-q, r-q ); R = get_angle( p-r, q-r ); if ( P < Q ) { if ( P < R ) return 1; // P < Q,R else return 3; // R < P < Q } else { if ( Q < R ) return 2; // Q < P,R else return 3; // R < Q < P; } return 1; } double rho( double a, double b ) { double tmp0 = a / b; double tmp1 = b / a; tmp0 = fabs( tmp0 ); tmp1 = fabs( tmp1 ); double ret = MIN( tmp0, tmp1 ); return ret; } double rho( Point p0, Point p1 ) { double ret = MAX( rho( p0.x, p1.x ), rho( p0.y, p1.y ) ); return ret; } double rho( Point p, Point q, Point r, int pivot_idx ) { double ret; switch( pivot_idx ) { case 1: // rho_p ret = MAX( rho( p, q ), rho( p, r ) ); break; case 2: // rho_q ret = MAX( rho( q, r ), rho( q, p ) ); break; case 3: // rho_r ret = MAX( rho( r, p ), rho( r, q ) ); break; } return ret; } Expr ExprAbs( Expr e ) { Expr ret = e; if ( e < 0 ) ret = -ret; return ret; } */ core++-1.7/progs/orientation/pivot.h0100644000175000001440000000641610130275263016776 0ustar joachimusers/* file: pivot.h * Since Core Library Version 1.7 * Author: Seung-Hyun Yun, Chee Yap */ #ifndef _PIVOT_H #define _PIVOT_H #include #include #include #define CORE_LEVEL 4 #include "CORE/CORE.h" using namespace std; // Point class class Point { public: // constructors and destructor Point() { x = y = 0.0; }; Point( double x, double y ) { this->x = x; this->y = y; } ~Point(){} public: // operator overloading. Point& operator =( const Point& pt ) { x = pt.x; y = pt.y; return (*this); } double operator *( const Point& pt ) { return ( x*pt.x + y*pt.y ); } double operator *( const double& c ) { x *= c; y *= c; return c; } bool operator ==( const Point& pt ) { return ( x==pt.x && y==pt.y) ; } bool operator !=( const Point& pt ) { return ( x!=pt.x || y!=pt.y) ; } Point operator -( const Point& pt ) { return Point( x-pt.x, y-pt.y ); } inline double get_norm() { return sqrt( (x*x + y*y) ); } inline double get_norm_square() { return (x*x + y*y); } inline void normalize() { double len = get_norm(); x /= len; y /= len; } public: // class attribute. double x; double y; }; // testing a single pivoting strategy void pivotest( Point *Pts, int strategy ); // testing and comparing two pivoting strategies void pivotest2( Point *Pts, int strategy1, int strategy2 ); // approximate area computation using a particular strategy double area_approx( Point p, Point q, Point r, int pivot_strategy ); // exact area computation (but rounded to double) double area_exact( Point p, Point q, Point r ); // chooses a pivot based on strategy inline int pivotChoice( Point p, Point q, Point r, int strategy ); // computes the angle at origin made by two vectors double get_angle( Point v0, Point v1 ); // sign of number inline int get_sign(double x) {return (x>0) ? 1 : ((x<0) ? -1 : 0);} // isPositive? inline bool isPositive(double x) {return (x>0) ? true : false;} // isNegative? inline bool isNegative(double x) {return (x<0) ? true : false;} // index of max(x,y,z) inline int max_index( double x, double y, double z) { if ( x > y ) { if ( x > z ) return 1; // x > y,z else return 3; // z >= x > y } else { if ( y > z ) return 2; // y >= x,z else return 3; // z >= y >= x; } } // index of median(x,y,z) inline int median_index( double x, double y, double z) { if ( x > y ) { if ( y > z ) return 2; // x > y > z else if (x > z) return 3; // x > z >= y else return 1; // z >= x > y } else { if ( x > z ) return 1; // y >= x > z else if (y>z) return 3; // y > z >= x else return 2; // z >= y >= x } } /* Legacy from Yun's code * ******************************************************************* void signed_area( Point *Pts, int size, int strategy, ofstream& out ); int get_pivot_idx_I( Point p, Point q, Point r ); int get_pivot_idx_II( Point p, Point q, Point r ); int get_pivot_idx_III( Point p, Point q, Point r ); double rho( double a, double b ); double rho( Point p0, Point p1 ); double rho( Point p, Point q, Point r, int pivot_idx ); int ExprSign( Expr e ); Expr ExprAbs( Expr e ); * ******************************************************************* */ #else #endif // _PIVOT_H core++-1.7/progs/orientation/shyun.tar.gz0100644000175000001440000001106010077715114017754 0ustar joachimuserss@shyun.tar[yoGPv)2eYfq2@-6/5)Yn6ɖ%I<;ƌջ*)oŽ l &'=s%QD ޭ>gQ깘/1?=N> I^4K1 B2fDwΆ H@a  >D!0#LR!A&DCY& KJ F:b@$}q}X$Va"fVW\P*U5LcQ&!](08D>aH#MQ)h,^[Lc3'h$G>*edS7Y'[BUBKQ6&p)s Fl5:BJu8-[#ᕤt_{5g'@$INR˧S)$Bb9qA!jXEN2UM0",IJE4dILGB!FЈ@[L$ $"y*nbyL"V9.uRB: LԱ.Y s(D5S"U!(+HQʠv8Mg%S@4U]lfb?2\ܘTR%brD&RX*l'Ҥ1 yN3 h Zdd|CH"ԘRc*"0=3H?2n#=u iآc-%)} ʲe7@OMh s!ZAF 9S"Ix!h3Ox >Q]fyR1Fq2bLH{Weaȕ%\ vq7`06u)!ɏk$V 3'LIij\IiALCD,axuȰ,R}ȥ2xI æPVr:w q4.5C*ML9='B@AP!%pmEbRdf5t31B6ID$y c[ "@i;tGoX0Ajk@&*jS!Xl:&aAyܦBҔ*ֶ =oD"K#7)`%vHdSm8t!/8 5(a0,g7]&>Ke0 ?םp6/Ƕia`w'n!L[HC -!-8z Ͷn^H;O ӷ<@TjDoep>fk}>1=0`K,<q~Z3a|?(N6],t́(;f8ezˋ;ߞq֝O.|3.y0^,gyCpG p0p6/ޜt*5{-4=2=0Ԉpw<b_ÏzmP<}jub?17h>|3G}0lJ۩aUA>yՂE(&lw)_NMRۊ[ay1D!7)T(o"?ʋbJkJ=e^G[;djm}W{!6[E7x^ thmN.n16r8:Nɴ(et3ErVLUZ#>c&LҘrCLƍeqչ&C?Žf?c+(.WI%o2Z]CyByWO0$ gV> |'LĤT޳ˆ<UyB琨")?˼MLf"-lP)*An`]b>A?9v0/[6Rʵzs$+Uflr@F𘩯 /nBI/ 4AY1sfU HMq9AA(kBV>H [˰Wk]ϊߨnE,I!Qc-l>4 ڭHlCӠ10+[6@ an b-m8K,POMCܻy^ 3h20Pg`Kf=U9 fqh4}r0v?*ךÇJS  {Dc 1޿յ.wp%,dXlQ(W|@\(Ao}U-65:ᙧ4/I^Hf(ی:@8M&& M&(ذ& mEk8oON V 3cmDID;/ה\ LiֶV+6tv6=KN[ms޽B[%/}oY]M Wq9_"+.3z^q)j߲^7p +.UT\D2}W\>ܧ⚓+śgW2,,k jڎemX(vB}*سU ߫0x5ߺyB [xIGoZcF(n<ȵ ~c !B]6E@ƹuTSǼKuOތ0М`wq &g,\zÊ@Ev^^*syY^:F/XjWXi㝴bE4#m>l0u>܇uh>܇ln5Tٞ:q/01c)icO֤/%U?l0Tb,FFPFnHV{NZ2y~ij_G,4M2r ܩ>fאܛd ٩>η|9kiv#OxdZ? CHv%"odzwdë"TLZ]OҒY6HI,6FouӇzwG< O'_<;a+Ho5S:6i:ώob|@?_M|>WCgj0{O^ Ͱ uɨWC˓Q>7uHW 2j utxxwG~0'i1 ~{惡ySZ+DŽj`,Ά󃧴몧}?JW5能^h(߮Ex )-`7p:'9D"LjyhB1&s߆}!Yi I8BnZ ۮMWb^֭EɌB>zB`g4ŢeJxIMO7ˊ^f_r~S5{ntw@ߌr;n]wػn,_}#o#!|v{{{xuTPcore++-1.7/progs/pentagon/0040755000175000001440000000000010147210064014734 5ustar joachimuserscore++-1.7/progs/pentagon/Makefile0100644000175000001440000000257410144727407016414 0ustar joachimusers# Makefile for pentagon # # Core Library, $Id: Makefile,v 1.13 2004/11/11 18:27:19 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= pentagon_level3 MORE_TARGETS= pentagon_level1 default: $(TARGETS) more: $(MORE_TARGETS) test: $(TARGETS) ./pentagon_level3 moretest: $(MORE_TARGETS) ./pentagon_level1 %_level1: %_level1.o transform_level1.o ${CXX} $(LDFLAGS) $? -lcorex++$(VAR)_level1 $(CORE_LIB) -o $@ %_level3: %_level3.o transform_level3.o ${CXX} $(LDFLAGS) $? -lcorex++$(VAR)_level3 $(CORE_LIB) -o $@ #================================================= # Rules for CORE_LEVEL 1 and CORE_LEVEL 3 #================================================= %_level1.o: %.cpp ${CXX} -c -DCORE_LEVEL=1 $(CXXFLAGS) $(CORE_INC) $< -o $@ %_level3.o: %.cpp ${CXX} -c -DCORE_LEVEL=3 $(CXXFLAGS) $(CORE_INC) $< -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/pentagon/README0100644000175000001440000000500410130275103015605 0ustar joachimusersREADME file Pentagon Test Author: Shubin Zhao, Summer 2001 Chee Yap, 2003 Since Core Library Version 1.6 $Id: README,v 1.5 2004/10/04 16:28:51 exact Exp $ ======================================================================= Description of Pentagon Test: In this test, we first construct a planar pentagon P in 3-D. In order to guarantee that P is actually planar, we first construct a pentagon Q in the the plane z=0. Then we define an affine transformation T, and set P = T(Q). We consider two operations In(P), Out(P) which transforms a pentagon P into another pentagon so that the following containment (written as inequality) holds: In(P) < P < Out(P) The pentagon In(P) is inside P and obtained by constructing all the chords of P. These five chords intersect at 5 points that form the vertices of In(P). We may define Out(P) to be the "inverse" of In(P). Thus, Out(In(P)) = P. However, starting from any pentagon P, we can also directly try to construct Out(P) as follows: we extend each edge of P into an infinite line. Each of these lines intersect at most two other infinite lines at points that are strictly outside P. These gives rise to at most 10 intersection points strictly outside P. If there are exactly 10 intersection points, then they form our pentagon Out(P). Otherwise, Out(P) is not defined. We can iterate these operations, and mix them in any order. In particular, Out^n (In^n(P))= P. In the test of this program, we only check the simple identity: Out(In(P))=P. Unfortunately, even this simple test will usually take a VERY long time to complete (in Core Version 1.3). Elsewhere, we do a complete analysis of this. Therefore, we invoke the "escape precision mechanism" of Core Library. This mechanism allows a comparison to return "equal" when the difference is no larger than a user specified value. We compile this program at levels 1 and 3. But Level 1 cannot be run because it will have segment fault (not surprisingly). --Shubin Zhao and Chee Yap Summer 2001 ====================================================== UPDATE: June 2003, Core 1.6 ====================================================== We can now reduce an expression, if its value is rational, to a leaf node with a rational number. To do this, we just set a global flag by calling bool f = true; bool oldf = setRationalReduceFlag(f); Here, oldf is the previous value of the global flag. Using this trick, we can now easily run the pentagon program (without invoking the escape precision mechanism). --Chee Yap Summer 2003 core++-1.7/progs/pentagon/pentagon.cpp0100644000175000001440000000743410130275103017255 0ustar joachimusers/***************************************************************** * File: pentagon.cpp * Synopsis: * example program for 2-dimensional geometry * Usage: * % pentagon [EscapePrec] [NumberRounds = 1] [RatFlag = true] * E.g., * % pentagon 2000 5 * * Author: Shubin Zhao (shubinz@cs.nyu.edu), 2001. * * Since Core Library 1.4 * $Id: pentagon.cpp,v 1.9 2004/10/04 16:28:51 exact Exp $ *****************************************************************/ #include "CORE.h" #include "CORE/geometry3d.h" extern void transform( double in[3], double *out ); void inner( Point3d pentagon[5], Point3d * output) { for(int i=0; i<5; i++) { Line3d diagnal1(pentagon[i], pentagon[(i+2)%5]); Line3d diagnal2(pentagon[(i+1)%5], pentagon[(i+4)%5]); output[i] = *(Point3d *)diagnal1.intersection(diagnal2); } } void outer( Point3d pentagon[5], Point3d * output) { for(int i=0; i<5; i++) { Line3d edge1(pentagon[i], pentagon[(i+1)%5]); Line3d edge4(pentagon[(i+3)%5], pentagon[(i+4)%5]); output[i] = *(Point3d *)edge1.intersection(edge4); } } bool isEqual(Point3d pentA[5], Point3d pentB[5]) { for(int i=0; i<5; i++) { if( pentA[i] != pentB[i] ) return false; } return true; } void pent_print(Point3d pentagon[5]) { std::cout << "\nPentagon:\n"; std::cout << pentagon[0] << "\n" << pentagon[1] << "\n" << pentagon[2] << "\n" << pentagon[3] << "\n" << pentagon[4] << "\n" ; } #if CORE_LEVEL > 2 double pentagon2d[5][3] = {{"1.0", "0.0", "0.0"}, {"0.309017", "0.951", "0.0"}, {"-0.809017", "0.587785", "0.0"}, {"-0.809017", "-0.587785", "0.0"}, {"0.309017", "-0.951", "0.0"}}; #else double pentagon2d[5][3] = {{1.0, 0.0, 0.0}, {0.309017, 0.951, 0.0}, {-0.809017, 0.587785, 0.0}, {-0.809017, -0.587785, 0.0}, {0.309017, -0.951, 0.0}}; #endif int main( int argc, char* argv[] ) { EscapePrec = 30000; // default escape precision int rounds = 1; // default number of rounds bool ratFlag = true; // default is to reduce Expr to Rationals // Read command line arguments: if( argc > 1 ) EscapePrec = atoi( argv[1] ); if( argc > 2 ) rounds = atoi( argv[2] ); if( argc > 3 ) if (atoi( argv[3] ) <= 0) ratFlag = false; setRationalReduceFlag(ratFlag); // if ratFlag=true, reduce rational Expressions // Read command line arguments: double buff[3]; Point3d pentagon3d[5]; Point3d pentInner[5]; Point3d pentOuter[5]; std::cout << "EscapePrec=" << EscapePrec << std::endl; std::cout << "round=" << rounds << std::endl; // create pentagon in 3d by linear transformation transform( pentagon2d[0], buff); pentagon3d[0] = Point3d(buff[0], buff[1], buff[2]); transform( pentagon2d[1], buff); pentagon3d[1] = Point3d(buff[0], buff[1], buff[2]); transform( pentagon2d[2], buff); pentagon3d[2] = Point3d(buff[0], buff[1], buff[2]); transform( pentagon2d[3], buff); pentagon3d[3] = Point3d(buff[0], buff[1], buff[2]); transform( pentagon2d[4], buff); pentagon3d[4] = Point3d(buff[0], buff[1], buff[2]); // keep the original for( int j=0; j<5; j++ ) pentOuter[j] = pentagon3d[j]; //compute inner and outer repeatedly for( int r=0; r= 2 double offset[3] = {"1.2", "3.4", "5.6" }; double T0[3] = {"1.234", "7.777", "1.111" }; double T1[3] = {"4.0", "5.0", "3.0" }; double T2[3] = {"1.11", "8.88", "9.99" }; #else double offset[3] = {1.2, 3.4, 5.6 }; double T0[3] = {1.234, 7.777, 1.111 }; double T1[3] = {4.0, 5.0, 3.0 }; double T2[3] = {1.11, 8.88, 9.99}; #endif double point[3]; ADD(point, in, offset); out[0] = DOT(T0, point); out[1] = DOT(T1, point); out[2] = DOT(T2, point); } core++-1.7/progs/pi/0040755000175000001440000000000010147210064013531 5ustar joachimuserscore++-1.7/progs/pi/Makefile0100644000175000001440000000272110145431413015171 0ustar joachimusers# Makefile for pi # # Core Library, $Id: Makefile,v 1.13 2004/11/13 16:15:07 exact Exp $ # Set parameters before calling Make.options VAR=Debug VAR= include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= newPi MORETARGETS= pi brent EXTRATARGETS= pi2 pi3 default: $(TARGETS) test: $(TARGETS) ./newPi 6644 0 ./newPi 6644 1 moretest: $(MORETARGETS) ./pi 3500 0 0 ./brent 6644 1 extratest: $(EXTRATARGETS) ./pi2 6644 ./pi3 6644 testbrent: brent ./brent 100 time: $(TARGETS) $(MORETARGETS) time ./pi 6644 0 0 >/dev/null time ./pi2 6644 >/dev/null time ./pi3 6644 >/dev/null time ./brent 6644 >/dev/null time ./brent 6644 1 >/dev/null bigtest: pi ./pi 15000 0 0 pi: pi.o newPi: newPi.o pi2: pi2.o pi3: pi3.o brent: brent.o t: t.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/pi/PI.html0100644000175000001440000000506007437361201014735 0ustar joachimusers 2000 places of Pi This is taken from http://www-groups.dcs.st-and.ac.uk/~history/HistTopics/2000_places.html

2000 places of Pi

Go Back


3.14159265358979323846264338327950288419716939937510582097494459
 230781640628620899862803482534211706798214808651328230664709384
 460955058223172535940812848111745028410270193852110555964462294
 895493038196442881097566593344612847564823378678316527120190914
 564856692346034861045432664821339360726024914127372458700660631
 558817488152092096282925409171536436789259036001133053054882046
 652138414695194151160943305727036575959195309218611738193261179
 310511854807446237996274956735188575272489122793818301194912983
 367336244065664308602139494639522473719070217986094370277053921
 717629317675238467481846766940513200056812714526356082778577134
 275778960917363717872146844090122495343014654958537105079227968
 925892354201995611212902196086403441815981362977477130996051870
 72113499999983729780499510597317328160963185950244594553469083
 026425223082533446850352619311881710100031378387528865875332083
 814206171776691473035982534904287554687311595628638823537875937
 519577818577805321712268066130019278766111959092164201989380952
 572010654858632788659361533818279682303019520353018529689957736
 225994138912497217752834791315155748572424541506959508295331168
 617278558890750983817546374649393192550604009277016711390098488
 240128583616035637076601047101819429555961989467678374494482553
 797747268471040475346462080466842590694912933136770289891521047
 521620569660240580381501935112533824300355876402474964732639141
 992726042699227967823547816360093417216412199245863150302861829
 745557067498385054945885869269956909272107975093029553211653449
 872027559602364806654991198818347977535663698074265425278625518
 184175746728909777727938000816470600161452491921732172147723501
 414419735685481613611573525521334757418494684385233239073941433
 345477624168625189835694855620992192221842725502542568876717904
 946016534668049886272327917860857843838279679766814541009538837
 863609506800642251252051173929848960841284886269456042419652850
 222106611863067442786220391949450471237137869609563643719172874
 677646575739624138908658326459958133904780275901

Note the long run of 9's.
It is not known whether every string of digits appears somewhere.

Go Back


JOC/EFR Nov 94 core++-1.7/progs/pi/README0100644000175000001440000001165710145231066014423 0ustar joachimusers================================================================================ File: README for pi Author: Chee and Chen Li (June 2000) Since CORE Library version 1.2 $Id: README,v 1.8 2004/11/12 21:59:18 exact Exp $ ================================================================================ SYNOPSIS: % make -- makes the executable "newPi" % newPi 6644 2 -- computes Pi to 6644 bits (=2000 digits) of accuracy using Brent's algorithm, implemented using BigFloat NOTE: 6644 = 2000 * log_2(10). % newPi 6644 1 -- computes Pi to 2000 digits using Machin's formula implemented using BigFloat % make more -- makes the executable "pi" and "brent" % pi 123 -- computes Pi to 123 bits of accuracy and sqrt(Pi) to 121 bits of accuracy % pi 6644 -- computes Pi to 6644 bits (=2000 digits) of accuracy and sqrt(Pi) to 6642 bits of accuracy NOTE: 6644 = 2000 * log_2(10). % pi 6644 0 -- same as above, but do not compute sqrt(Pi) Default for second argument is "1") % pi 6644 0 2 -- same as above, except self validation of Pi is to 2000 digits instead of 250 digits. Default for third argument is "1" % brent 6644 1 -- to compute Pi to 2000 digits using Brent's algorithm implemented using Expr (slow version) Files in this directory: README -- This file Makefile -- Assumes the current directory is $(CORE)/progs/pi pi.cpp -- Computes Pi using Machin's formula. newPi.cpp -- Computes Pi using various algorithms (improved Brent's or improved Machin's) brent.cpp -- Brent's algorithm for Pi (original Brent implementation) PI2000.html -- A source for 2000 digits of Pi inputs/{PI2000, PI250, ...} -- Pi to 2000 digits, etc. ================================================================================ INTRODUCTION: We implement Machin's formula for computing Pi = 3.14159265358979323846264338327950288419716939937510582097494459... to any desired precision. It serves to check the correctness of Core library's numerical outputs and its precision mechanism. Here is Machin's well-known formula: pi/4 = 4 arctan(1/5) - arctan(1/239) = \sum_{k=0} ^\infty (-1)^k [ 4 / ( (2k +1) 5^{2k+1} ) - 1 / ( (2k +1) 239^{2k+1} ) ] Timing: Using this formula, a Sun Ultra 10 (440 MHz, 256 MB RAM) can compute Pi to 2000 digits (=6644 bits) in about 1.51 seconds (using CORE Version 1.2). You can get duplicate this timing by running the current program with the command arguments % pi 6644 0 0 % pi 10000 0 0 -- this takes 3.24 seconds to compute 3010 digits In some formulas (e.g., for erf(x)), there is also a need for high precision values of sqrt(Pi). The program also outputs sqrt(Pi). NOTE: we include automatic self-verification of the computed values of Pi up to 250 digits, and sqrt(Pi) up to 100 digits. ================================================================= BUG REPORT: for some reason, pi does not work correctly on cygwin platforms for n > 4195 bits. Actually, this upper bound seems to vary depending on machines. 4/4/2002, UPDATE: This is not a bug, but a stack overflow problem. Please read the file "stackOverflow.txt" found under $(CORE_PATH)/doc for details on how to fix it. ================================================================= July, 2002: On Brent's algorithm for Pi: We also implemented Brent's algorithm for Pi. Theoretically, this is supposed to be extremely fast (Newton convergence). But for some reason, it is much slower than the above Machin's formula. For instance, on Solaris SunBlade 1000 (2x Ultrasparc III 750MHz, 8MB Cache, 2GB Memory), we obtain the following times: time pi 10000 0 0: 0.74 seconds time brent 10000 0 0: 19.12 seconds Sep, 2002: Update on timing Brent's timing New improvements after CORE 1.5 has made Brent's algorithm competitive with Machin's formula. Still, more improvements should be expected. ================================================================= Oct, 2004: We can speed this up with one of two approaches: (1) reduce to rational (if using Expr) (2) use BigFloats instead of Expr In newPi.cpp, we implemented (2), and this gives significant speedup (much faster than Maple). We also reimplemented Machin's formula in newPi.cpp, but now we use binary split to compute arctan(1/x) where x is a bigInt. This greatly speeds up Machin as well. The BigFloat version of Brent is a great improvement over the old Machin's algorithm, but is still inferior to the improved Machin's formula! Using the same Solaris SunBlade as above to compute to 100,000 bits (30102 digits) (timing does not include printout of digits). Test Time Comment ==== ===== ======= newPi 100000 0 3.35 sec Machin's formula using binary split newPi 100000 1 33.3 sec Brent's algorithm using bigFloat pi 100000 0 0 segment fault Original implementation of Machin's. ================================================================= core++-1.7/progs/pi/brent.cpp0100644000175000001440000001271410145231066015354 0ustar joachimusers/* *************************************************************** File: brent.ccp Purpose: To compute Pi using Brent's algorithm Usage: % pi [optPrec] [DOsqrt] [DOvalidate] where the arguments (all optional) are -- [optPrec] is the absolute precision in number of bits. Default is [optPrec] = 54 (as in machine double) -- [DOvalidate] is a flag (default to 1) [DOvalidate]=0 means no validation of Pi. [DOvalidate]=1 means validate Pi up to 250 digits. [DOvalidate]=2 means validate Pi up to 2000 Digits. EXAMPLE: To compute Pi to 2000 digits, set [optPrec] to 6644 (= 2000 * log_2(10)). If you also want to check the 2000 computed digits, but to skip the sqrt(Pi) computation, you may type: % pi 6644 0 2 Author: Chee Yap and Chen Li (June 2000) Since CORE Library Version 1.2 $Id: brent.cpp,v 1.9 2004/11/12 21:59:18 exact Exp $ *************************************************************** */ // This program MUST be run at CORE_LEVEL 3: # define CORE_LEVEL 4 #include #include "CORE.h" using namespace std; // implements Brent's algorithm for Pi // to precision 2^{-prec} // /* Original version using Expr: Expr brent(int prec) { Expr A = 1; Expr B = Expr(1)/ sqrt(Expr(2)); Expr T = BigRat(1,4); BigInt X = 1; Expr Y; Expr eps = BigFloat::exp2(- prec +1); Expr sq; while (A - B > eps) { Y = A; A = (A+B)/2; B = sqrt(B*Y); sq = (A-Y)*(A-Y); T -= X* sq; X <<= 1; } Expr ans = A*A/T; ans.approx(CORE_posInfty, prec); return ans; } //brent */ // New version using BigFloat Expr brent(int prec) { defBFsqrtAbsPrec = prec; BigFloat A = 1; BigFloat B = 1; B /= sqrt(BigFloat(2)); BigFloat T = 0.25; BigInt X = 1; BigFloat Y; BigFloat eps = BigFloat::exp2(- prec +1); BigFloat sq; while (A - B > eps) { Y = A; A = (A+B).div2(); B = sqrt(B*Y); sq = (A-Y)*(A-Y); T -= X * sq; X <<= 1; //A.makeExact(); //B.makeExact(); //T.makeExact(); } Expr ans = Expr(A)*Expr(A)/Expr(T); ans.approx(CORE_posInfty, prec); return ans; } //brent int main( int argc, char *argv[] ) { /* *************************************************************************** COMMAND LINE ARGUMENTS *************************************************************************** */ int eps = 54; // Number of bits of absolute precision desired // default to 54 bits (= machine double precision) if (argc > 1) eps = atoi(argv[1]); int DOvalidate = 1; // 1st level of checking /* *************************************************************************** COMPUTING Pi *************************************************************************** */ // compute pi to eps-bits of precision: Expr pi = brent(eps); // Translates eps (in bits) to outputPrec (in digits) int outputPrec; // desired precision in digits outputPrec = (int) (eps * log(2.0)/log(10.0)); cout << " Output precision is " << outputPrec << " digits \n"; // Output of Pi cout << "outputPrec = " << outputPrec << endl; cout << " Pi = " << setprecision(outputPrec+1) << pi << endl; /* *************************************************************************** AUTOMATIC CHECK that (1) our internal value of Pi (2) our output value of Pi are both correct to 250 (or 2000) digits *************************************************************************** */ // Reading in digits of Pi from Files int prec; // bit precision for the comparison ifstream from; // input stream from file if (DOvalidate == 0) { // no validation prec = 1; } if (DOvalidate == 1) { prec = core_min(eps, 830); // 830 bits = 250 digits. from.open("inputs/PI250", ios::in); // read 250 digits of Pi from file } if (DOvalidate == 2) { prec = core_min(eps, 6644); // 6644 bits = 2000 digits from.open("inputs/PI2000", ios::in); // read 2000 digits of Pi from file } if (DOvalidate > 0) { // validation needed string piStr; char c; while (from.get(c)) if ((c >= '0' && c <= '9') || (c=='.')) piStr += c; if (!from.eof()) cout << "!! Error in reading from PI250 \n"; from.close(); Expr bigPi(piStr.c_str()); // bigPi is the value of Pi from file // debug: // cout << " bigPi = " << setprecision(outputPrec + 1) << bigPi << endl; // CHECKING OUTPUT VALUE OF Pi: ostringstream ost; ost << setprecision(outputPrec+1) << pi << endl; piStr = ost.str(); // Need to take the min of outputPrec and the number of digits in bigPi int minPrec = 0; if (DOvalidate == 1) minPrec = core_min(outputPrec, 250); if (DOvalidate == 2) minPrec = core_min(outputPrec, 2000); //debug: cout << "minPrec = " << minPrec << endl; cout << "bigPi = " << setprecision(outputPrec+1) << bigPi << endl; cout << "pi = " << setprecision(outputPrec+1) << Expr(piStr.c_str()) << endl; // ?? fail: // Expr ee = pow(Expr(10), -minPrec+4); ee.approx(minPrec * 4); // cout << "pow(10, -minPrec+4) = " << pow(Expr(10), -minPrec+4) << endl ; if ( fabs(Expr(piStr.c_str()) - bigPi) <= pow(Expr(10), -minPrec+4)) cout << " >> Output value of Pi verified to "<< minPrec << " digits\n"; else cout << " !! Output value of Pi INCORRECT to " << minPrec << " digits! \n"; /** ignore for now // CHECKING INTERNAL VALUE of Pi: if ( fabs(pi - bigPi) <= BigFloat::exp2(- prec +1)) cout << " >> Internal value of Pi verified up to " << prec << " bits\n"; else cout << " !! Internal value of Pi INCORRECT to " << prec << " bits! \n"; **/ }; return 0; } core++-1.7/progs/pi/newPi.cpp0100644000175000001440000001335610145320336015326 0ustar joachimusers/* *************************************************************** File: newPi.ccp Purpose: To compute Pi using several algorithms: Brent's algorithma and Machin's algorithm Usage: % multiPi [optPrec=54] [method=2] where the arguments (all optional) are -- [optPrec] is the absolute precision in number of bits. Default is [optPrec] = 54 (as in machine double) -- [method] specifies the algorithm: method=1 for machin's algorithm method=2 for brent's algorithm (dynamically checking if suff.precision) method=3 for brent's algorithm (static determination of suff.precision) EXAMPLE: To compute Pi to 2000 digits, set [optPrec] to 6644 (= 2000 * log_2(10)). Author: Zilin (Oct 2004) Since Core Library Version 1.7 $Id: newPi.cpp,v 1.2 2004/11/13 05:51:26 exact Exp $ *************************************************************** */ // This program MUST be run at CORE_LEVEL 4: # define CORE_LEVEL 4 #include #include "CORE.h" using namespace std; BigInt R(int a, int b) { if (b - a == 1) return 2*a + 3; else { int m = (a+b)/2; return R(a, m) * R(m, b); } } BigInt Q(int a, int b, int x) { if (b - a == 1) return (2*a + 3)*x*x; else { int m = (a+b)/2; return Q(a, m, x) * Q(m, b, x); } } BigInt P(int a, int b, int x) { if (b - a == 1) { if (a % 2 == 1) return 1; else return -1; } else { int m = (a+b)/2; return Q(m, b, x)*P(a, m, x) + R(a, m)*P(m, b, x); } } Expr arctan(int x, int a) { // compute arctan(1/x) to absolute precision 2^{-a} // x is a natural number and x > 1. int N = (int) (a / ( 2 * log(float(x))/log(2.0))) + 1; // cout << " Number of terms needed in arctan, N = " << N << endl; /* double at = 1; double x2 = x * x; for (int i=1; i<=N; i++) { if (i % 2 == 1) at = x2 * at - 1 / double(2 * i + 1); else at = x2 * at + 1 / double(2 * i + 1); } */ Expr at = (1 + Expr(P(0, N, x))/Expr(Q(0, N, x))) / Expr(x); // at /= pow (x2, N) * x; at.approx(CORE_posInfty, a); return at; } Expr machin(int prec) { // Computing Auxilliary Values Expr t1 = arctan(5, prec + 6); Expr t2 = arctan(239, prec + 4); Expr ans = (4 * t1 - t2) * 4; ans.approx(CORE_posInfty, prec); return ans; } BigFloat brent(int prec) { defBFsqrtAbsPrec = prec; BigFloat A = 1; BigFloat B = 1; B /= sqrt(BigFloat(2)); BigFloat T = 0.25; BigInt X = 1; BigFloat Y; BigFloat eps = BigFloat::exp2(- prec +1); BigFloat sq; int count = 0; while (A - B > eps) { Y = A; A = (A+B).div2(); B = sqrt(B*Y); sq = (A-Y)*(A-Y); T -= X * sq; X <<= 1; A.makeExact(); B.makeExact(); T.makeExact(); count ++; } //Expr ans = Expr(A)*Expr(A)/Expr(T); //ans.approx(CORE_posInfty, prec); cout << "Number of iterations = " << count << endl; BigFloat ans = (A*A).div(T, prec + T.lMSB() - 2* A.uMSB() + 2); return ans; } //brent BigFloat brent2(int prec) { int iters = (int)(log(prec*log(2.0)/log(10.0))/log(2.0)); cout << "Need " << iters << " iterations" << endl; defBFsqrtAbsPrec = prec; BigFloat A = 1; BigFloat B = BigFloat(1)/sqrt(BigFloat(2)); BigFloat T = 0.25; BigInt X = 1; BigFloat Y; BigFloat eps = BigFloat::exp2(-prec +1); BigFloat sq; BigFloat AA; int count = 0; for (int p = -1; p < prec*2+10; p = p*2+10) { Y = A*B; A = (A+B).div2(); B = sqrt(Y); AA = A*A; sq = AA - Y; T -= X * sq; X <<= 1; A.makeExact(); B.makeExact(); T.makeExact(); count ++; } cout << "Number of Iteration = " << count << endl; BigFloat ans = (AA).div(T, prec + 2); return ans; } BigFloat brent3(int prec) { int iters = (int)(log(prec*log(2.0)/log(10.0))/log(2.0)); cout << "Need " << iters << " iterations" << endl; BigFloat A = 1; BigFloat B = BigFloat(1)/BigFloat(2).sqrt(prec); BigFloat T = 0.25; BigInt X = 1; BigFloat Y; BigFloat eps = BigFloat::exp2(-prec +1); BigFloat sq; BigFloat AA; int count = 0; for (int p = -1; p < prec*2+10; p = p*2+10) { Y = A*B; A = (A+B).div2(); B = Y.sqrt(p+10); AA = A*A; sq = AA - Y; T -= X * sq; X <<= 1; A.makeExact(); B.makeExact(); T.makeExact(); count ++; } cout << "Number of Iteration = " << count << endl; BigFloat ans = (AA).div(T, prec + 2); return ans; } int main( int argc, char *argv[] ) { /* *************************************************************************** COMMAND LINE ARGUMENTS *************************************************************************** */ int eps = 54; // Number of bits of absolute precision desired // default to 54 bits (= machine double precision) int arg = 1; if (argc > 1) eps = atoi(argv[1]); if (argc > 2) arg = atoi(argv[2]); //int DOvalidate = 1; // 1st level of checking /* *************************************************************************** COMPUTING Pi *************************************************************************** */ // compute pi to eps-bits of precision: Expr pi1; BigFloat pi2; Timer timer; timer.start(); if (arg == 0) pi1 = machin(eps); else if (arg == 1) pi2 = brent(eps); else if (arg == 2) pi2 = brent2(eps); else pi2 = brent3(eps); timer.stop(); cout << "Time = " << timer.getSeconds() << endl; // Translates eps (in bits) to outputPrec (in digits) int outputPrec; // desired precision in digits outputPrec = (int) (eps * log(2.0)/log(10.0)); cout << "Output precision is " << outputPrec << " digits \n"; // Output of Pi cout << "outputPrec = " << outputPrec << endl; if (arg == 0) cout << " Pi = " << setprecision(outputPrec+1) << pi1 << endl; else cout << " Pi = " << setprecision(outputPrec+1) << pi2 << endl; return 0; } core++-1.7/progs/pi/pi.cpp0100644000175000001440000002116010130274754014652 0ustar joachimusers/* *************************************************************** File: pi.cpp Purpose: To compute Pi and sqrt(Pi) to any desired precision using Machin's series. Usage: % pi [optPrec] [DOsqrt] [DOvalidate] where the arguments (all optional) are -- [optPrec] is the absolute precision in number of bits. Default is [optPrec] = 54 (as in machine double) -- [DOsqrt] is a flag (default to 1). A non-zero value will cause the program to compute sqrt{Pi), validated to 100 digits. -- [DOvalidate] is a flag (default to 1) [DOvalidate]=0 means no validation of Pi. [DOvalidate]=1 means validate Pi up to 250 digits. [DOvalidate]=2 means validate Pi up to 2000 Digits. EXAMPLE: To compute Pi to 2000 digits, set [optPrec] to 6644 (= 2000 * log_2(10)). If you also want to check the 2000 computed digits, but to skip the sqrt(Pi) computation, you may type: % pi 6644 0 2 WARNING: there are 2 sources for slowness in running this program. (1) [DOvalidate]=2 is slow just because of the need to read 2000 digits from a file and converting them into internal format. We cannot do much about this. The actual time to compute Pi to 2000 digits is no problem at all (you will see the output in a flash) (2) [DOsqrt]=1 and [optPrec] is large. Notes: The implementation is basically straightforward, and illustrates the power of the Core Library's features. It is clear that most of the common functions of analysis can be similarly implemented to achieve the guaranteed accuracy feature (see below). GUARANTEED OUTPUT: The specified number of bits is translated into an equivalent number of digits for output. All but the last printed digits are guaranteed to be correct. The last digit can be off by +/-1. Thus, if an output that terminates with ...1999, the actual digits might actually be ...2000 or ...1998. SQUARE ROOT of Pi: This constant is useful, e.g., in computing the error function (erf). We compute sqrt(Pi) to ([optPrec] - 2) bits of absolute precision. But this computation can be turned off if the optional second argument is 0. SELF-VALIDATION: This program checks that the INTERNAL VALUE of computed Pi and the OUTPUT of the computed Pi are each correct up to N digits. Here, N = 0, 250, 2000 (respectively) when the flag [DOvalidate] = 0, 1, 2. It also checks that the internal value of computed sqrt(Pi), when computed, is correct up to 100 digits. Author: Chee Yap and Chen Li (June 2000) Since CORE Library Version 1.2 $Id: pi.cpp,v 1.11 2004/10/04 16:27:24 exact Exp $ *************************************************************** */ // This program MUST be run at CORE_LEVEL 3: #define CORE_LEVEL 3 #include #include "CORE.h" using namespace std; double arctan(int x, int a) { // compute arctan(1/x) to absolute precision 2^{-a} // x is a natural number and x > 1. int N = (int) (a / ( 2 * log(float(x))/log(2.0))) + 1; // cout << " Number of terms needed in arctan, N = " << N << endl; double at = 1; double x2 = x * x; for (int i=1; i<=N; i++) { if (i % 2 == 1) at = x2 * at - 1 / double(2 * i + 1); else at = x2 * at + 1 / double(2 * i + 1); } at /= pow (x2, N) * x; at.approx(CORE_posInfty, a); return at; } int main( int argc, char *argv[] ) { setFpFilterFlag(false); /* *************************************************************************** COMMAND LINE ARGUMENTS *************************************************************************** */ int eps = 54; // Number of bits of absolute precision desired // default to 54 bits (= machine double precision) int DOsqrt = 1; // a flag: defaults to 1 // (i.e., compute sqrt) int DOvalidate = 1; // a flag to validate Pi: defaults to 1 // (i.e., validate to 250 digits) if (argc > 1) eps = atoi(argv[1]); if (argc > 2) DOsqrt = atoi(argv[2]); if (argc > 3) { DOvalidate = atoi(argv[3]); if ((DOvalidate < 0) || (DOvalidate >2)) { cout << " !! Third argument in error, defaults to 1\n"; DOvalidate = 1; }; }; // debug //eps = 9000; //DOsqrt = 0; //DOvalidate = 0; cout << "DOsqrt = " << DOsqrt << "; DOvalidate = " << DOvalidate << endl; /* *************************************************************************** COMPUTING Pi *************************************************************************** */ // Translates eps (in bits) to outputPrec (in digits) int outputPrec; // desired precision in digits outputPrec = (int) (eps * log(2.0)/log(10.0)); cout << " Output precision is " << outputPrec << " digits \n"; // Computing Auxilliary Values double t1 = arctan(5, eps + 6); //debugging output: //cout << setprecision(outputPrec+1) << "arctan(1/5) = " // << t1 << endl; double t2 = arctan(239, eps + 4); // debugging output: // cout << setprecision(outputPrec+1) << "arctan(1/239) = " // << t2 << endl; double pi = (4 * t1 - t2) * 4; pi.approx(CORE_posInfty, eps); // Output of Pi cout << " Pi = " << setprecision(outputPrec+1) << pi << endl; // Note: setprecision in C++ is actually "width" (=number of characters // in output. So we use "outputPrec + 1" to account for the decimal point. /* *************************************************************************** AUTOMATIC CHECK that (1) our internal value of Pi (2) our output value of Pi are both correct to 250 (or 2000) digits *************************************************************************** */ // Reading in digits of Pi from Files int prec = 0; // bit precision for the comparison ifstream from; // input stream from file if (DOvalidate == 0) { // no validation prec = 1; } if (DOvalidate == 1) { prec = core_min(eps, 830); // 830 bits = 250 digits. from.open("inputs/PI250", ios::in); // read 250 digits of Pi from file } if (DOvalidate == 2) { prec = core_min(eps, 6644); // 6644 bits = 2000 digits from.open("inputs/PI2000", ios::in);// read 2000 digits of Pi from file } if (DOvalidate > 0) { // validation needed string piStr; char c; while (from.get(c)) { if ((c >= '0' && c <= '9') || (c=='.')) piStr += c; } if (!from.eof()) cout << "!! Error in reading from PI250 \n"; from.close(); double bigPi(piStr.c_str()); // bigPi is the value of Pi from file // debug: // cout << " bigPi = " << setprecision(outputPrec + 1) // << bigPi << endl; // CHECKING OUTPUT VALUE OF Pi: ostringstream ost; ost << setprecision(outputPrec+1) << pi << endl; piStr = ost.str(); // Need to take the min of outputPrec and the number of digits in bigPi int minPrec = 0; if (DOvalidate == 1) minPrec = core_min(outputPrec, 250); if (DOvalidate == 2) minPrec = core_min(outputPrec, 2000); if ( fabs(double(piStr.c_str()) - bigPi) <= (1/pow(double(10), minPrec-4))) cout << " >> CORRECT! Output value of Pi verified to "<< minPrec << " digits" << endl; else cout << " ERROR! Output value of Pi INCORRECT for " << minPrec << " digits" << endl; // CHECKING INTERNAL VALUE of Pi: if ( fabs(pi - bigPi) <= (Expr)BigFloat::exp2(- prec +1)) cout << " >> CORRECT! Internal value of Pi verified up to " << prec << " bits" << endl; else cout << " ERROR! Internal value of Pi INCORRECT for " << prec << " bits!" << endl; } /**************************************************************************** COMPUTING THE SQUARE ROOT of Pi to (eps - 2) bits of absolute precision *************************************************************************** */ if (DOsqrt == 0) return 0; // do not compute sqrt(Pi) // Here is sqrt(Pi) to 100 digits from Knuth: double SQRTPI="1.772453850905516027298167483341145182797549456122387128213807789852911284591032181374950656738544665"; double sPi = sqrt(pi); sPi.approx(CORE_posInfty, eps + 2); cout << " sqrt(Pi) = " << setprecision(outputPrec-1) << sPi << endl; /**************************************************************************** AUTOMATIC CHECK that the internal value of computed sqrt(Pi) is correct up to the first 100 digits. *************************************************************************** */ prec = core_min(eps-1, 332); // 332 bits == 100 digits double d3 = fabs(sPi - SQRTPI); double tmp = 1 / pow(double(10), (int) (prec * log(2.0)/log(10.0)) ); if ( d3 <= tmp ) cout << " >> CORRECT! Internal value of sqrt(Pi) verified to " << prec << " bits" << endl; else cout << " ERROR! Internal value of sqrt(Pi) INCORRECT for " << prec << " bits! " << endl; return 0; } core++-1.7/progs/pi/pi0.cpp0100644000175000001440000000217207667672044014753 0ustar joachimusers// Note: this can be VERY slow because of the slow convergence // of the series we use! // This program is to test out library using pi routines // $Id: pi0.cpp,v 1.5 2003/06/05 16:47:32 exact Exp $ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE.h" int main( int argc, char *argv[] ) { // eps is -log_2(accuracy desired) int eps; if (argc > 1) eps = atoi(argv[1]); else eps = 10; // outputPrec is the number of digits that are known to be accurate int outputPrec; outputPrec = (int) eps * log(2.0)/log(10.0); // Use the following series for pi: // pi/4 = 1 - (1/3) + (1/5) - (1/7) + (1/9) - ... // = \sum_{i=0} ^ k ((1/(4i+1)) - (1/(4i+3))) // // k is the number of terms to compute in the pi series int k = (int)pow(2,eps); std::cout << " Number of bits of accuracy = " << eps << std::endl; std::cout << " k = " << k << std::endl; double pi = 0; for (int i = 0; i< k; i++) { pi += 1/double((4*i + 1)*(4*i + 3)); } pi *= 8; pi.approx(extLong::CORE_posInftyLong, eps); std::cout << " Pi = " << std::setprecision(outputPrec) << pi << std::endl; return 0; } core++-1.7/progs/pi/pi1.cpp0100644000175000001440000003023010130274754014731 0ustar joachimusers/* *************************************************************** File: pi1.cc This is different from pi.cc only in that the validated values for Pi are stored in the program, instead of read from file. This turns out to be slower?? Purpose: To compute Pi and sqrt(Pi) to any desired precision using Machin's series. Usage: % pi [optPrec] [DOsqrt] [DOvalidate] where the arguments (all optional) are -- [optPrec] is the absolute precision in number of bits. Default is [optPrec] = 54 (as in machine double) -- [DOsqrt] is a flag (default to 1). A non-zero value will cause the program to compute sqrt{Pi), validated to 100 digits. -- [DOvalidate] is a flag (default to 1) [DOvalidate]=0 means no validation of Pi. [DOvalidate]=1 means validate Pi up to 250 digits. [DOvalidate]=2 means validate Pi up to 2000 Digits. EXAMPLE: To compute Pi to 2000 digits, set [optPrec] to 6644 (= 2000 * log_2(10)). If you also want to check the 2000 computed digits, but to skip the sqrt(Pi) computation, you may type: % pi 6644 0 2 WARNING: there are 2 sources for slowness in running this program. (1) [DOvalidate]=2 is slow just because of the need to read 2000 digits from a file and converting them into internal format. We cannot do much about this. The actual time to compute Pi to 2000 digits is no problem at all (you will see the output in a flash) (2) [DOsqrt]=1 and [optPrec] is large. Notes: The implementation is basically straightforward, and illustrates the power of the Core Library's features. It is clear that most of the common functions of analysis can be similarly implemented to achieve the guaranteed accuracy feature (see below). GUARANTEED OUTPUT: The specified number of bits is translated into an equivalent number of digits for output. All but the last printed digits are guaranteed to be correct. The last digit can be off by +/-1. Thus, if an output that terminates with ...1999, the actual digits might actually be ...2000 or ...1998. SQUARE ROOT of Pi: This constant is useful, e.g., in computing the error function (erf). We compute sqrt(Pi) to ([optPrec] - 2) bits of absolute precision. But this computation can be turned off if the optional second argument is 0. SELF-VALIDATION: This program checks that the INTERNAL VALUE of computed Pi and the OUTPUT of the computed Pi are each correct up to N digits. Here, N = 0, 250, 2000 (respectively) when the flag [DOvalidate] = 0, 1, 2. It also checks that the internal value of computed sqrt(Pi), when computed, is correct up to 100 digits. Author: Chee Yap and Chen Li (June 2000) Since CORE Library Version 1.2 $Id: pi1.cpp,v 1.6 2004/10/04 16:27:24 exact Exp $ *************************************************************** */ // This program MUST be run at CORE_LEVEL 3: # define CORE_LEVEL 3 #include "CORE.h" double arctan(int x, int a) { // compute arctan(1/x) to absolute precision 2^{-a} // x is a natural number and x > 1. int N = (int) (a / ( 2 * log(x)/log(2))) + 1; // std::cout << " Number of terms needed in arctan, N = " << N << std::endl; double at = 1; double x2 = x * x; for (int i=1; i<=N; i++) { if (i % 2 == 1) at = x2 * at - 1 / double(2 * i + 1); else at = x2 * at + 1 / double(2 * i + 1); } at /= pow (x2, N) * x; at.approx(extLong::CORE_posInftyLong, a); return at; } int main( int argc, char *argv[] ) { /* *************************************************************************** COMMAND LINE ARGUMENTS *************************************************************************** */ int eps = 54; // Number of bits of absolute precision desired // default to 54 bits (= machine double precision) int DOsqrt = 1; // a flag: defaults to 1 // (i.e., compute sqrt) int DOvalidate = 1; // a flag to validate Pi: defaults to 1 // (i.e., validate to 250 digits) if (argc > 1) eps = atoi(argv[1]); if (argc > 2) DOsqrt = atoi(argv[2]); if (argc > 3) { DOvalidate = atoi(argv[3]); if ((DOvalidate < 0) || (DOvalidate >2)) { std::cout << " !! Third argument in error, defaults to 1\n"; DOvalidate = 1; }; }; std::cout << "DOsqrt = " << DOsqrt << "; DOvalidate = " << DOvalidate << std::endl; /* *************************************************************************** COMPUTING Pi *************************************************************************** */ // Translates eps (in bits) to outputPrec (in digits) int outputPrec; // desired precision in digits outputPrec = (int) (eps * log(2)/log(10)); std::cout << " Output precision is " << outputPrec << " digits \n"; // Computing Auxilliary Values double t1 = arctan(5, eps + 6); // debugging output: // std::cout << std::setprecision(outputPrec+1) << "arctan(1/5) = " << t1 << std::endl; double t2 = arctan(239, eps + 4); // debugging output: // std::cout << std::setprecision(outputPrec+1) << "arctan(1/239) = " << t2 << std::endl; double pi = (4 * t1 - t2) * 4; pi.approx(extLong::CORE_posInftyLong, eps); // Output of Pi std::cout << " Pi = " << std::setprecision(outputPrec+1) << pi << std::endl; // Note: setprecision in C++ is actually "width" (=number of characters // in output. So we use "outputPrec + 1" to account for the decimal point. /* *************************************************************************** AUTOMATIC CHECK that (1) our internal value of Pi (2) our output value of Pi are both correct to 250 (or 2000) digits *************************************************************************** */ /* // Reading in digits of Pi from Files int prec; // bit precision for the comparison std::ifstream from; // input stream from file if (DOvalidate == 0) { // no validation prec = 1; } if (DOvalidate == 1) { prec = core_min(eps, 830); // 830 bits = 250 digits. from.open("PI250", std::ios::in); // read 250 digits of Pi from file } if (DOvalidate == 2) { prec = core_min(eps, 6644); // 6644 bits = 2000 digits from.open("PI2000", std::ios::in); // read 2000 digits of Pi from file } if (DOvalidate > 0) { // validation needed string piStr; char c; while (from.get(c)) if ((c >= '0' && c <= '9') || (c=='.')) piStr += c; if (!from.eof()) std::cout << "!! Error in reading from PI250 \n"; from.close(); double bigPi(piStr.c_str()); // bigPi is the value of Pi from file // debug: // std::cout << " bigPi = " << std::setprecision(outputPrec + 1) << bigPi << std::endl; // CHECKING OUTPUT VALUE OF Pi: std::ostringstream ost; ost << std::setprecision(outputPrec+1) << pi << std::endl; piStr = ost.str(); // Need to take the min of outputPrec and the number of digits in bigPi int minPrec; if (DOvalidate == 1) minPrec = core_min(outputPrec, 250); if (DOvalidate == 2) minPrec = core_min(outputPrec, 2000); if ( fabs(Expr(piStr.c_str()) - bigPi) <= pow(Expr(10), -minPrec+1)) std::cout << " >> Output value of Pi verified to "<< minPrec << " digits\n"; else std::cout << " !! Output value of Pi INCORRECT to " << minPrec << " digits! \n"; // CHECKING INTERNAL VALUE of Pi: if ( fabs(pi - bigPi) <= BigFloat::exp2(- prec +1)) std::cout << " >> Internal value of Pi verified up to " << prec << " bits\n"; else std::cout << " !! Internal value of Pi INCORRECT to " << prec << " bits! \n"; }; */ // ALTERNATIVE METHOD FOR READING VALIDATEDED DIGITS OF PI int prec; double bigPi; // validated digits of Pi if (DOvalidate == 1) { // 250 digits bigPi = double("\ 3.14159265358979323846264338327950288419716939937510582097494459\ 230781640628620899862803482534211706798214808651328230664709384\ 460955058223172535940812848111745028410270193852110555964462294\ 8954930381964428810975665933446128475648233786783165271201909\ "); } if (DOvalidate == 2) { // 2000 digits bigPi = double("3\ .14159265358979323846264338327950288419716939937510582097494459\ 230781640628620899862803482534211706798214808651328230664709384\ 460955058223172535940812848111745028410270193852110555964462294\ 895493038196442881097566593344612847564823378678316527120190914\ 564856692346034861045432664821339360726024914127372458700660631\ 558817488152092096282925409171536436789259036001133053054882046\ 652138414695194151160943305727036575959195309218611738193261179\ 310511854807446237996274956735188575272489122793818301194912983\ 367336244065664308602139494639522473719070217986094370277053921\ 717629317675238467481846766940513200056812714526356082778577134\ 275778960917363717872146844090122495343014654958537105079227968\ 925892354201995611212902196086403441815981362977477130996051870\ 72113499999983729780499510597317328160963185950244594553469083\ 026425223082533446850352619311881710100031378387528865875332083\ 814206171776691473035982534904287554687311595628638823537875937\ 519577818577805321712268066130019278766111959092164201989380952\ 572010654858632788659361533818279682303019520353018529689957736\ 225994138912497217752834791315155748572424541506959508295331168\ 617278558890750983817546374649393192550604009277016711390098488\ 240128583616035637076601047101819429555961989467678374494482553\ 797747268471040475346462080466842590694912933136770289891521047\ 521620569660240580381501935112533824300355876402474964732639141\ 992726042699227967823547816360093417216412199245863150302861829\ 745557067498385054945885869269956909272107975093029553211653449\ 872027559602364806654991198818347977535663698074265425278625518\ 184175746728909777727938000816470600161452491921732172147723501\ 414419735685481613611573525521334757418494684385233239073941433\ 345477624168625189835694855620992192221842725502542568876717904\ 946016534668049886272327917860857843838279679766814541009538837\ 863609506800642251252051173929848960841284886269456042419652850\ 222106611863067442786220391949450471237137869609563643719172874\ 677646575739624138908658326459958133904780275901\ "); }; if (DOvalidate > 0) { // validation needed // std::cout << " bigPi = " << std::setprecision(outputPrec + 1) << bigPi << std::endl; // CHECKING OUTPUT VALUE OF Pi: std::ostringstream ost; ost << std::setprecision(outputPrec+1) << pi << std::endl; std::string piStr = ost.str(); // Need to take the min of outputPrec and the number of digits in bigPi int minPrec; if (DOvalidate == 1) minPrec = core_min(outputPrec, 250); if (DOvalidate == 2) minPrec = core_min(outputPrec, 2000); if ( fabs(Expr(piStr.c_str()) - bigPi) <= pow(Expr(10), -minPrec+1)) std::cout << " >> Output value of Pi verified to "<< minPrec << " digits\n"; else std::cout << " !! Output value of Pi INCORRECT to " << minPrec << " digits! \n"; // CHECKING INTERNAL VALUE of Pi: if ( fabs(pi - bigPi) <= BigFloat::exp2(- prec +1)) std::cout << " >> Internal value of Pi verified up to " << prec << " bits\n"; else std::cout << " !! Internal value of Pi INCORRECT to " << prec << " bits! \n"; }; /* *************************************************************************** COMPUTING THE SQUARE ROOT of Pi to (eps - 2) bits of absolute precision *************************************************************************** */ if (DOsqrt == 0) return 0; // do not compute sqrt(Pi) // Here is sqrt(Pi) to 100 digits from Knuth: Expr SQRTPI="1.772453850905516027298167483341145182797549456122387128213807789852911284591032181374950656738544665"; double sPi = sqrt(pi); sPi.approx(extLong::CORE_posInftyLong, eps + 2); std::cout << " sqrt(Pi) = " << std::setprecision(outputPrec-1) << sPi << std::endl; /* *************************************************************************** AUTOMATIC CHECK that the internal value of computed sqrt(Pi) is correct up to the first 100 digits. *************************************************************************** */ prec = core_min(eps-1, 332); // 332 bits == 100 digits double d3 = fabs(sPi - SQRTPI); double tmp = pow(Expr(10), (int) - prec * log(2)/log(10)); if ( d3 <= tmp ) std::cout << " >> Internal value of sqrt(Pi) verified to " << prec << " bits\n"; else std::cout << " !! Internal value of sqrt(Pi) INCORRECT to " << prec << " bits! \n"; return 0; } core++-1.7/progs/pi/pi2.cpp0100644000175000001440000000165207520335700014736 0ustar joachimusers// from Valentina #include "CORE.h" // Compute Pi using Brent's algorithm: double Pi(int p) { double A=1; double Y; double B=1/sqrt(2.0); double T=0.25; double X=1; double err = BigFloat::exp2(-p); while ( (A - B) > err ) { std::cout << "in" << std::endl; Y=A; A=(A+B)/2; B=sqrt(B*Y); T=T-X*(A-Y)*(A-Y); X=2*X; } std::cout << "out" << std::endl; return A*A/T; } // Implementation of some functions in the Brent's paper // " Fast Multiple-Precision Evaluation of Elementary Functions" // Pi int main (int argc, char *argv[]) { int eps = 54; if (argc > 1) eps = atoi(argv[1]); //setScientificFormat(); int outputPrec; // desired precision in digits outputPrec= (int) (eps * log(2.0)/log(10.0)); std::cout << "outputPrec = " << outputPrec << std::endl; double output = Pi(eps); output.approx(eps); std::cout << "Pi = " << std::setprecision(outputPrec) << output << std::endl; return 0; } core++-1.7/progs/pi/pi3.cpp0100644000175000001440000001451510130274754014743 0ustar joachimusers/* *************************************************************** File: pi3.cc Adapted from pi.cc Author: Chee Yap and Chen Li (June 2000) Since CORE Library Version 1.2 $Id: pi3.cpp,v 1.9 2004/10/04 16:27:24 exact Exp $ *************************************************************** */ // This program MUST be run at CORE_LEVEL 3: # define CORE_LEVEL 3 #include #include "CORE.h" double arctan(int x, int a) { // compute arctan(1/x) to absolute precision 2^{-a} // x is a natural number and x > 1. int N = (int) (a / ( 2 * log(float(x))/log(2.0))) + 1; // std::cout << " Number of terms needed in arctan, N = " << N << std::endl; double at = 1; double x2 = x * x; for (int i=1; i<=N; i++) { if (i % 2 == 1) at = x2 * at - 1 / double(2 * i + 1); else at = x2 * at + 1 / double(2 * i + 1); } at /= pow (x2, N) * x; at.approx(CORE_posInfty, a); return at; } int main( int argc, char *argv[] ) { /* *************************************************************************** COMMAND LINE ARGUMENTS *************************************************************************** */ int eps = 54; // Number of bits of absolute precision desired // default to 54 bits (= machine double precision) int DOsqrt = 1; // a flag: defaults to 1 // (i.e., compute sqrt) int DOvalidate = 1; // a flag to validate Pi: defaults to 1 // (i.e., validate to 250 digits) if (argc > 1) eps = atoi(argv[1]); if (argc > 2) DOsqrt = atoi(argv[2]); if (argc > 3) { DOvalidate = atoi(argv[3]); if ((DOvalidate < 0) || (DOvalidate >2)) { std::cout << " !! Third argument in error, defaults to 1\n"; DOvalidate = 1; }; }; std::cout << "DOsqrt = " << DOsqrt << "; DOvalidate = " << DOvalidate << std::endl; /* *************************************************************************** COMPUTING Pi *************************************************************************** */ // Translates eps (in bits) to outputPrec (in digits) int outputPrec; // desired precision in digits outputPrec = (int) (eps * log(2.0)/log(10.0)); std::cout << " Output precision is " << outputPrec << " digits \n"; // Computing Auxilliary Values double t1 = arctan(5, eps + 6); // debugging output: // std::cout << std::setprecision(outputPrec+1) << "arctan(1/5) = " << t1 << std::endl; double t2 = arctan(239, eps + 4); // debugging output: // std::cout << std::setprecision(outputPrec+1) << "arctan(1/239) = " << t2 << std::endl; double pi = (4 * t1 - t2) * 4; pi.approx(CORE_posInfty, eps); // Output of Pi std::cout << " Pi = " << std::setprecision(outputPrec+1) << pi << std::endl; // Note: setprecision in C++ is actually "width" (=number of characters // in output. So we use "outputPrec + 1" to account for the decimal point. /* *************************************************************************** AUTOMATIC CHECK that (1) our internal value of Pi (2) our output value of Pi are both correct to 250 (or 2000) digits *************************************************************************** */ // Reading in digits of Pi from Files int prec = 0; // bit precision for the comparison std::ifstream from; // input stream from file if (DOvalidate == 0) { // no validation prec = 1; } if (DOvalidate == 1) { prec = core_min(eps, 830); // 830 bits = 250 digits. from.open("inputs/PI250", std::ios::in); // read 250 digits of Pi from file } if (DOvalidate == 2) { prec = core_min(eps, 6644); // 6644 bits = 2000 digits from.open("inputs/PI2000", std::ios::in); // read 2000 digits of Pi from file } if (DOvalidate > 0) { // validation needed std::string piStr; char c; while (from.get(c)) if ((c >= '0' && c <= '9') || (c=='.')) piStr += c; if (!from.eof()) std::cout << "!! Error in reading from PI250 \n"; from.close(); double bigPi(piStr.c_str()); // bigPi is the value of Pi from file // debug: // std::cout << " bigPi = " << std::setprecision(outputPrec + 1) << bigPi << std::endl; // CHECKING OUTPUT VALUE OF Pi: std::ostringstream ost; ost << std::setprecision(outputPrec+1) << pi << std::endl; piStr = ost.str(); // Need to take the min of outputPrec and the number of digits in bigPi int minPrec = 0; if (DOvalidate == 1) minPrec = core_min(outputPrec, 250); if (DOvalidate == 2) minPrec = core_min(outputPrec, 2000); double ee = pow(Expr(10), -minPrec+4); ee.approx(eps); std::cout << "pow(Expr(10), -minPrec+4)) = " << std::setprecision(outputPrec) << ee << std::endl; if ( fabs(Expr(piStr.c_str()) - bigPi) <= pow(Expr(10), -minPrec+4)) std::cout << " >> Output value of Pi verified to "<< minPrec << " digits\n"; else std::cout << " !! Output value of Pi INCORRECT to " << minPrec << " digits! \n"; // CHECKING INTERNAL VALUE of Pi: if ( fabs(pi - bigPi) <= (Expr)BigFloat::exp2(- prec +1)) std::cout << " >> Internal value of Pi verified up to " << prec << " bits\n"; else std::cout << " !! Internal value of Pi INCORRECT to " << prec << " bits! \n"; }; /* *************************************************************************** COMPUTING THE SQUARE ROOT of Pi to (eps - 2) bits of absolute precision *************************************************************************** */ if (DOsqrt == 0) return 0; // do not compute sqrt(Pi) // Here is sqrt(Pi) to 100 digits from Knuth: Expr SQRTPI="1.772453850905516027298167483341145182797549456122387128213807789852911284591032181374950656738544665"; double sPi = sqrt(pi); sPi.approx(CORE_posInfty, eps + 2); std::cout << " sqrt(Pi) = " << std::setprecision(outputPrec-1) << sPi << std::endl; /* *************************************************************************** AUTOMATIC CHECK that the internal value of computed sqrt(Pi) is correct up to the first 100 digits. *************************************************************************** */ prec = core_min(eps-1, 332); // 332 bits == 100 digits double d3 = fabs(sPi - SQRTPI); double tmp = pow(Expr(10), -(int) (prec * log(2.0)/log(10.0)) ); if ( d3 <= tmp ) std::cout << " >> Internal value of sqrt(Pi) verified to " << prec << " bits\n"; else std::cout << " !! Internal value of sqrt(Pi) INCORRECT to " << prec << " bits! \n"; return 0; } core++-1.7/progs/pi/t.cpp0100644000175000001440000001171410145231067014505 0ustar joachimusers/* *************************************************************** File: newPi.ccp Purpose: To compute Pi using several algorithms: Brent's algorithma and Machin's algorithm Usage: % multiPi [optPrec=54] [method=2] where the arguments (all optional) are -- [optPrec] is the absolute precision in number of bits. Default is [optPrec] = 54 (as in machine double) -- [method] specifies the algorithm: method=1 for machin's algorithm method=2 for brent's algorithm (dynamically checking if suff.precision) method=3 for brent's algorithm (static determination of suff.precision) EXAMPLE: To compute Pi to 2000 digits, set [optPrec] to 6644 (= 2000 * log_2(10)). Author: Zilin (Oct 2004) Since Core Library Version 1.7 $Id: t.cpp,v 1.5 2004/11/12 21:59:19 exact Exp $ *************************************************************** */ // This program MUST be run at CORE_LEVEL 4: # define CORE_LEVEL 4 #include #include "CORE.h" using namespace std; BigInt R(int a, int b) { if (b - a == 1) return 2*a + 3; else { int m = (a+b)/2; return R(a, m) * R(m, b); } } BigInt Q(int a, int b, int x) { if (b - a == 1) return (2*a + 3)*x*x; else { int m = (a+b)/2; return Q(a, m, x) * Q(m, b, x); } } BigInt P(int a, int b, int x) { if (b - a == 1) { if (a % 2 == 1) return 1; else return -1; } else { int m = (a+b)/2; return Q(m, b, x)*P(a, m, x) + R(a, m)*P(m, b, x); } } Expr arctan(int x, int a) { // compute arctan(1/x) to absolute precision 2^{-a} // x is a natural number and x > 1. int N = (int) (a / ( 2 * log(float(x))/log(2.0))) + 1; // cout << " Number of terms needed in arctan, N = " << N << endl; /* double at = 1; double x2 = x * x; for (int i=1; i<=N; i++) { if (i % 2 == 1) at = x2 * at - 1 / double(2 * i + 1); else at = x2 * at + 1 / double(2 * i + 1); } */ Expr at = (1 + Expr(P(0, N, x))/Expr(Q(0, N, x))) / Expr(x); // at /= pow (x2, N) * x; at.approx(CORE_posInfty, a); return at; } Expr machin(int prec) { // Computing Auxilliary Values Expr t1 = arctan(5, prec + 6); Expr t2 = arctan(239, prec + 4); Expr ans = (4 * t1 - t2) * 4; ans.approx(CORE_posInfty, prec); return ans; } BigFloat brent(int prec) { defBFsqrtAbsPrec = prec; BigFloat A = 1; BigFloat B = 1; B /= sqrt(BigFloat(2)); BigFloat T = 0.25; BigInt X = 1; BigFloat Y; BigFloat eps = BigFloat::exp2(- prec +1); BigFloat sq; int count = 0; while (A - B > eps) { Y = A; A = (A+B).div2(); B = sqrt(B*Y); sq = (A-Y)*(A-Y); T -= X * sq; X <<= 1; A.makeExact(); B.makeExact(); T.makeExact(); count ++; } //Expr ans = Expr(A)*Expr(A)/Expr(T); //ans.approx(CORE_posInfty, prec); cout << "Number of iterations = " << count << endl; BigFloat ans = (A*A).div(T, prec + T.lMSB() - 2* A.uMSB() + 2); return ans; } //brent BigFloat brent2(int prec) { int iters = log(prec*log(2.0)/log(10.0))/log(2.0); cout << "Need " << iters << " iterations" << endl; defBFsqrtAbsPrec = prec; BigFloat A = 1; BigFloat B = BigFloat(1)/sqrt(BigFloat(2)); BigFloat T = 0.25; BigInt X = 1; BigFloat Y; BigFloat eps = BigFloat::exp2(-prec +1); BigFloat sq; BigFloat AA; int count = 0; for (int p = -1; p < prec*2+10; p = p*2+10) { Y = A*B; A = (A+B).div2(); B = sqrt(Y); AA = A*A; sq = AA - Y; T -= X * sq; X <<= 1; A.makeExact(); B.makeExact(); T.makeExact(); count ++; } cout << "Number of Iteration = " << count << endl; BigFloat ans = (AA).div(T, prec + 2); return ans; } int main( int argc, char *argv[] ) { /* *************************************************************************** COMMAND LINE ARGUMENTS *************************************************************************** */ int eps = 54; // Number of bits of absolute precision desired // default to 54 bits (= machine double precision) int arg = 1; if (argc > 1) eps = atoi(argv[1]); if (argc > 2) arg = atoi(argv[2]); //int DOvalidate = 1; // 1st level of checking /* *************************************************************************** COMPUTING Pi *************************************************************************** */ // compute pi to eps-bits of precision: Expr pi1; BigFloat pi2; Timer timer; timer.start(); if (arg == 1) pi1 = machin(eps); else if (arg == 2) pi2 = brent(eps); else pi2 = brent2(eps); timer.stop(); cout << "Time = " << timer.getSeconds() << endl; // Translates eps (in bits) to outputPrec (in digits) int outputPrec; // desired precision in digits outputPrec = (int) (eps * log(2.0)/log(10.0)); cout << "Output precision is " << outputPrec << " digits \n"; // Output of Pi cout << "outputPrec = " << outputPrec << endl; if (arg == 1) cout << " Pi = " << setprecision(outputPrec+1) << pi1 << endl; else cout << " Pi = " << setprecision(outputPrec+1) << pi2 << endl; return 0; } core++-1.7/progs/pi/inputs/0040755000175000001440000000000010147210064015053 5ustar joachimuserscore++-1.7/progs/pi/inputs/PI20000100644000175000001440000000402007437361201015611 0ustar joachimusers3.14159265358979323846264338327950288419716939937510582097494459 230781640628620899862803482534211706798214808651328230664709384 460955058223172535940812848111745028410270193852110555964462294 895493038196442881097566593344612847564823378678316527120190914 564856692346034861045432664821339360726024914127372458700660631 558817488152092096282925409171536436789259036001133053054882046 652138414695194151160943305727036575959195309218611738193261179 310511854807446237996274956735188575272489122793818301194912983 367336244065664308602139494639522473719070217986094370277053921 717629317675238467481846766940513200056812714526356082778577134 275778960917363717872146844090122495343014654958537105079227968 925892354201995611212902196086403441815981362977477130996051870 72113499999983729780499510597317328160963185950244594553469083 026425223082533446850352619311881710100031378387528865875332083 814206171776691473035982534904287554687311595628638823537875937 519577818577805321712268066130019278766111959092164201989380952 572010654858632788659361533818279682303019520353018529689957736 225994138912497217752834791315155748572424541506959508295331168 617278558890750983817546374649393192550604009277016711390098488 240128583616035637076601047101819429555961989467678374494482553 797747268471040475346462080466842590694912933136770289891521047 521620569660240580381501935112533824300355876402474964732639141 992726042699227967823547816360093417216412199245863150302861829 745557067498385054945885869269956909272107975093029553211653449 872027559602364806654991198818347977535663698074265425278625518 184175746728909777727938000816470600161452491921732172147723501 414419735685481613611573525521334757418494684385233239073941433 345477624168625189835694855620992192221842725502542568876717904 946016534668049886272327917860857843838279679766814541009538837 863609506800642251252051173929848960841284886269456042419652850 222106611863067442786220391949450471237137869609563643719172874 677646575739624138908658326459958133904780275901 core++-1.7/progs/pi/inputs/PI2500100644000175000001440000000040207437361201015536 0ustar joachimusers3.14159265358979323846264338327950288419716939937510582097494459 230781640628620899862803482534211706798214808651328230664709384 460955058223172535940812848111745028410270193852110555964462294 8954930381964428810975665933446128475648233786783165271201909 core++-1.7/progs/poly/0040755000175000001440000000000010147210064014104 5ustar joachimuserscore++-1.7/progs/poly/Curves.cpp0100644000175000001440000000540410130274600016055 0ustar joachimusers/* ************************************** File: Curves.h Description: The templated class Sturm implements Sturm sequences. Basic capabilities include: counting number of roots in an interval, isolating all roots in an interval isolating the i-th largest (or smallest) root in interval It is based on the Polynomial class. BUGS and TODO LIST: The copy constructor seems to fail Should have a test for square-free polynomials Author: Chee Yap and Sylvain Pion Date: July 20, 2002 Since Core Library Version 1.5 $Id: Curves.cpp,v 1.2 2004/10/04 16:25:36 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE.h" using namespace std; // ================================================== // Curve Class // ================================================== typedef Expr NT; typedef std::vector > VecPoly; template < class NT > class Curve { public: int ydeg; // y-degree of the curve VecPoly vPoly; // array of (1+ydeg) polynomials // So the equation of the curve is C(x,y) // = (y^d * vPoly[d]) + (y^{d-1} * vPoly[d-1]) +...+ (vPoly[0]). // CONSTRUCTORS Curve() { // null constructor ydeg = 0; } Curve(VecPoly vp) { // construct from a vector of polynomial vPoly = vp; ydeg = vp.size() - 1; } // METHODS // dump functions void dump(string msg) const { cerr << msg << endl; cerr << "Equation of Curve is:" << endl; for (int i=0; i <= ydeg; i++) cerr << " vPoly[" << i << "] = " << vPoly[i] << endl; } // dump without message void dump() const { dump(""); } // The polynomial (in y) of the Curve when x is fixed Polynomial yPolynomial(const Expr & x) { VecExpr vE; for (int i=0; i<= ydeg; i++) { vE.push_back(vPoly[i].eval(x)); } return Polynomial(vE); } void verticalIntersections(const Expr & x, BFVecInterval & vI) { Sturm SS(yPolynomial(x)); SS.isolateRoots(vI); } };// Curve class int main() { VecPoly vP; NT coeff0[] = {2}; NT coeff3[] = {0, 0, 0, -1}; vP.push_back( Polynomial(3, coeff3) ); // coeff of 1 vP.push_back( Polynomial::polyZero() ); // coeff of y vP.push_back( Polynomial(0, coeff0) ); // coeff of y^2 // THIS is the equation x^3 - 2y^2 = 0. // It is called the Cissoid of Diocles [Brieskorn-Knorrer, p.9] // Curve C(vP); C.dump(); BFVecInterval vI; double eps = 0.1; for (int i=0; i<10; i++) { C.verticalIntersections(eps*i, vI); cout << " Number of roots : " << vI.size() << endl; for (BFVecInterval::const_iterator it = vI.begin(); it != vI.end(); ++it) { cout << " Root in [" << it->first << " ; " << it->second << "]" << endl; } vI.clear(); }//for } core++-1.7/progs/poly/Makefile0100644000175000001440000001361110144470574015556 0ustar joachimusers# Makefile for Poly # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.53 2004/11/10 19:52:28 exact Exp $ #================================================= # VARIABLES #================================================= #CHOOSE THE LINKAGE LINKAGE=static LINKAGE=shared #CHOOSE THE VARIANT Core Library you need VAR=GCC31 VAR=Debug VAR= CORE_PATH=../.. include ${CORE_PATH}/progs/Make.options #================================================= # TARGET FILES #================================================= DEPEND= n=1 # if default is NT is not assigned, default is NT=BigInt # NT= # NT=BigFloat # NT=Expr # NT=int # NT=BigRat p=tPoly p=tt p=solve p=tNewton p=tSturm${n} p=tSturm p=pisot p=tRootOf p=tPseudo p=tGCD TARGETS= tSturm tSturmBF MORE_TARGETS = tNewton tPolyALL tSturmRat tSturmExp tSturmInt \ tWilk20 tWilk20deriv tKameny4 tGCD tRootOf OTHER_TARGETS = solve pisot parsepoly #================================================= # TARGETS #================================================= default: $(TARGETS) test: $(TARGETS) ./tSturm ./tSturmBF moretest: $(MORE_TARGETS) ./tPoly ./tPolyInt ./tPolyRat ./tPolyExp ./tPolyBF ./tSturmExp ./tSturmRat ./tSturmInt ./tWilk20 ./tWilk20deriv ./tKameny4 ./tGCD ./tRootOf ./tNewton 123 # ./tNewton 123456789012345 othertest: $(OTHER_TARGETS) ./pisot ./solve p: $(p).o $(DEPEND) ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o ${p} all: $(TARGETS) $(MORE_TARGETS) testall: test moretest testmore: tNewton tSturm tNewton 4 tNewton 8 tNewton 123456 tSturm 200 moreTest tSturmInt # tSturmLon testPoly: ./tPoly ./tPolyInt ./tPolyRat ./tPolyExp ./tPolyBF testNewton: ./tNewton ./tNewtonBF testSturm: ./tSturm ./tSturmBF ./tSturmExp time: tPoly tNewton tSturm time tPoly time tNewton time tSturm # Compiling Polynomial class with various number types (int, BigInt, Exp) tPolyALL: tPoly tPolyRat tPolyInt tPolyExp tPolyBF tPoly: tPoly.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) tPoly.cpp -o tPoly.o ${CXX} $(LDFLAGS) tPoly.o $(CORE_LIB) -o tPoly tPolyRat: tPoly.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_RAT tPoly.cpp -o tPolyRat.o ${CXX} $(LDFLAGS) tPolyRat.o $(CORE_LIB) -o tPolyRat tPolyBF: tPoly.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_BF tPoly.cpp -o tPolyBF.o ${CXX} $(LDFLAGS) tPolyBF.o $(CORE_LIB) -o tPolyBF tPolyInt: tPoly.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_INT tPoly.cpp -o tPolyInt.o ${CXX} $(LDFLAGS) tPolyInt.o $(CORE_LIB) -o tPolyInt tPolyExp: tPoly.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_EXP tPoly.cpp -o tPolyExp.o ${CXX} $(LDFLAGS) tPolyExp.o $(CORE_LIB) -o tPolyExp exp: tPoly.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_EXP tPoly.cpp -o tPolyExp.o ${CXX} $(LDFLAGS) tPolyExp.o $(CORE_LIB) -o tPolyExp # testing Newton iteration with various number types (int, BigInt, Exp) tNewtonALL: tNewton tNewtonBF tNewton: tNewton.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_BINT tNewton.cpp -o tNewton.o ${CXX} $(LDFLAGS) tNewton.o $(CORE_LIB) -o tNewton tNewtonBF: tNewton.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_BF tNewton.cpp -o tNewtonBF.o ${CXX} $(LDFLAGS) tNewtonBF.o $(CORE_LIB) -o tNewtonBF tGCD: tGCD.o tRootOf: tRootOf.o tWilk20: tWilk20.o tWilk20deriv: tWilk20deriv.o # Compile tSturm with NT=BigInt (default), or NT=BigFloat, NT=Expr, # NT=BigRat, NT=int, or NT=long: # tSturmALL: tSturm tSturmBF tSturmExp tSturmInt tSturmRat tSturmLon tSturmALL: tSturm tSturmBF tSturmExp tSturmInt tSturmRat tSturm: tSturm.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) tSturm.cpp -o tSturm.o ${CXX} $(LDFLAGS) tSturm.o $(CORE_LIB) -o tSturm tSturmBF: tSturm.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_BF tSturm.cpp -o tSturmBF.o ${CXX} $(LDFLAGS) tSturmBF.o $(CORE_LIB) -o tSturmBF tSturmExp: tSturm.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_EXP tSturm.cpp -o tSturmExp.o ${CXX} $(LDFLAGS) tSturmExp.o $(CORE_LIB) -o tSturmExp tSturmInt: tSturm.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_INT tSturm.cpp -o tSturmInt.o ${CXX} $(LDFLAGS) tSturmInt.o $(CORE_LIB) -o tSturmInt tSturmLon: tSturm.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_LONG tSturm.cpp -o tSturmLon.o ${CXX} $(LDFLAGS) tSturmLon.o $(CORE_LIB) -o tSturmLon tSturmRat: tSturm.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_RAT tSturm.cpp -o tSturmRat.o ${CXX} $(LDFLAGS) tSturmRat.o $(CORE_LIB) -o tSturmRat timeNewton: timeNewton.o solve: solve.o pisot: pisot.o tKameny4: tKameny4.o tPseudo: tPseudo.o parsepoly: parsepoly.o t: t.o wein: wein.o tt: tt.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) tt.cpp -o tt.o ${CXX} $(LDFLAGS) tt.o $(CORE_LIB) -o tt tt1: tt1.o tt2: tt2.o tt3: tt3.o #================================================= # Rules #================================================= %: %.o $(DEPEND) ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= ALL=$(TARGETS) $(MORE_TARGETS) EXEPROGS=$(ALL:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) -@rm -f tSturm$(EXETYPE) tSturmExp$(EXETYPE) tSturmBF$(EXETYPE) \ tSturmInt$(EXETYPE) tSturmLon$(EXETYPE) -@rm -f tNewton$(EXETYPE) tNewtonBF$(EXETYPE) -@rm -f tPoly$(EXETYPE) tPolyExp$(EXETYPE) \ tPolyInt$(EXETYPE) tPolyRat$(EXETYPE) tPolyBF$(EXETYPE) -@rm -f tt$(EXETYPE) tt1$(EXETYPE) tt2$(EXETYPE) #================================================= # Housekeeping #================================================= tar: -@tar cvf poly.tar \ Poly.h Poly.tcc \ tPoly.cpp tt.cpp \ Newton.h tNewton.cpp \ Sturm.h tSturm.cpp\ solve.cpp \ tRoots.cpp \ Makefile README save: -@ci -l -m"make save" *.cpp *.tcc *.h Makefile README Notes core++-1.7/progs/poly/Newton.h0100644000175000001440000000633710130274601015534 0ustar joachimusers/* ************************************** File: Newton.h Synopsis: Class Newton supports Newton iteration for polynomial roots This is based on the Polynomial class Author: Chee Yap and Sylvain Pion Date: July 20, 2002 Since Core Library v1.4 $Id: Newton.h,v 1.10 2004/10/04 16:25:37 exact Exp $ ************************************** */ #ifndef _CORE_NEWTON_H # define _CORE_NEWTON_H #define CORE_LEVEL 4 #include "CORE.h" // ================================================== // Newton Class // NOTE: if bad input, return -1. // ================================================== template < class NT > class Newton { public: Polynomial p; // this is the polynomial being iterated Polynomial q; // this is derivative of p BigFloat val; // curr approximate value BigFloat del; // difference from previous value BigFloat olddel; // old difference from previous value int count; // counter for number of iterations extLong uMSB; // this is del.uMSB() when you are in the // Newton zone, otherwise, you need some // other means of estimating how close you are // to the root static int N_STOP_ITER; // Stop IterE after this many iterations // This is initialized below, outside the Newton class //======================================================= // CONSTRUCTORS //======================================================= Newton(Polynomial pp, BigFloat e = 1): p(pp), val(e), del(e), olddel(0), count(0) { q = differentiate(pp); uMSB = e.uMSB(); } //======================================================= // METHODS //======================================================= // Resetting the state of Newton object: void reset( BigFloat v = 1) { val=v; del=v; olddel=0; count=0; } // Iterate n times: BigFloat IterN(int n = 1) { for (int i=0; i= -prec) && (count < N_STOP_ITER)) ; // N_STOP_ITER to prevent infinite loops return val; } // ================================================== // Test Routine // ================================================== // testN: iterate n times BigFloat testN( int n){ return IterN(n); } // testE: iterate until less than Epsilon =2^{-prec} change BigFloat testE(int prec){ // prec is normally >0 return IterE(prec); } };// Newton class // ================================================== // Static initialization // ================================================== template int Newton:: N_STOP_ITER = 10000; // stop IterE after this many loops // Reset this as needed #endif core++-1.7/progs/poly/README0100644000175000001440000000727110130274601014767 0ustar joachimusers============================================================ README file for poly Core Library Description: Simple Polynomial Package with Applications (Newton, Sturm) Author: Chee Yap, July 2002 $Id: README,v 1.13 2004/10/04 16:25:37 exact Exp $ ============================================================ Files: README -- this file Makefile -- Type "make p=xxx" to compile the file xxx.cpp tPoly.cpp -- Exercises the functions of Polynomial Class Newton.h -- template Newton Class, for simple Newton iteration tNewton.cpp -- Exercises the Newton class tSturm.cpp -- Exercises the Sturm class solve.cpp -- uses Sturm and Newton together to solve for roots timeNewton.cpp -- time Newton for various accuracy of evaluating iterates Directories: inputs -- files for input data outputs -- results from tests ============================================================ NOTE ON RELATIVE ERROR REQUIRED FOR IMPLEMENTING SELF-CORRECTING NEWTON Consider this experiment using the program "timeNewton.cpp": To compute the square root of N=12345678 to 100,000 bits of precision. Using the standard Newton iteration (as implemented in Sturm class), we want to know the effects of approximate Newton iteration. More precisely, if N(x_0) = x_0 - f(x_0)/f'(x_0), where x_0 is a bigfloat, we want to know to what precision should we compute f(x_0)/f'(x_0). Currently, we compute this to relative error defBFdivRelPrec (a global variable used by BigFloat division). Here are some timings: defBFdivRelPrec time (secs) =============== =========== 4 64.4 30 21.4 300 3 3000 0.75 30000 1.0 300000 8.5 How to determine the optimal? -- Chee, Vikram, Zilin Sep 28, 2004 ============================================================ NOTE ON IMPLEMENTING NEWTON ITERATION We have kept an older version of Newton.h in the file NewtonOrig.h The main difference from the Newton.h is that the members "val" and "del" in the original Newton class are Expr objects, instead of BigFloat Objects. The relative performance between the 2 implementations is seen in the following experiment: suppose we use Newton iteration to compute sqrt(2) to 10,000 bits of precision. We also write this result to a file (in our bigNumber format). The program based on the current Newton.h needed 67 iterations, using 0.17 seconds. The program based on the current Newton.h terminated in only 13 iterations but using 0.31 seconds. Thus, while Expr is more accurate, it is slower than a simple BigFloat iterator. --Chee August 2, 2002 ============================================================ NOTE ON CHANGING THE DEFINITION OF Interval, from a pair of Expr's to a pair of BigFloats: In a test involving tSturm, using the default polynomial in tSturm, suppose we refine all the isolated real roots (there are 6) to 2000 absolute bits: Using Expr Intervals, the time is 257.56 seconds, Using BigFloat Intervals, the time is 45.34seconds. Another timing: Timing for running tSturm, tPoly, tNewton is 0.6 sec user time, 0.0 sec system time. --Chee and Sharma March 13, 2003 ============================================================ NOTE ON POLYNOMIALS USING DIFFERENT NUMBER TYPES You can now use NT=BigInt (default), NT=int, NT=BigRat, NT=Expr are polynomials. We plan to allow NT=BigFloat as well. Here are the relative times for running tPoly.cpp (test down on a Pentium M, 1.4 GHz, 786 MB RAM) using Core 1.6x): NT=Expr, 0.230s NT=BigRat, 0.193s NT=BigInt, 0.160s NT=int, 0.130s Note the extra time for more complex number types are purely attributable to overhead for the structures, and not to more complex numerical precision. --Chee Mar 26, 2004 ============================================================ core++-1.7/progs/poly/parsepoly.cpp0100644000175000001440000000756410144470574016652 0ustar joachimusers/* ************************************** File: ParsePoly.cpp Test the usage of constructor from strings for POlynomials. Author: Vikram Sharma Date: Oct. 1 2004 Since Core Library Version 1.7 $Id: parsepoly.cpp,v 1.5 2004/11/10 19:52:28 exact Exp $ ************************************** */ #define CORE_LEVEL 4 #include "CORE/CORE.h" using namespace std; typedef BigInt NT; typedef Polynomial PolyNT; typedef std::vector VecNT; // ========================================================= // MAIN // ========================================================= int main(int argc, char* argv[]) { //Fundamental test cases string s1 = "";//Emtpy string should be zero //basic terms string s2 = "x"; string s3 = "x^23"; string s4 = "23543544543543"; string s5 = "- x^3";//Unary minus string s6 = "(x^2)^2";//Exponentiation //Terms string s7 = "234 x^2"; string s8 = "-234 x^2";//Unary minus string s9 = "234 x^2 (x^3)";//Parentheses string s10 = "234 x^2 (x^3)^2";//Parentheses with exponential string s11 = "234 x^2 (x^3) * 2 x"; //More complex ones string s12="x^2*( 3*x - (x^2+x) -1)^3+ 4*x^2*2*(x^2-1)*(x+2)"; // string ss12="28x^5 - 15x^6 + x^4 + 6x^7 - 2x^3 - x^8 - 17x^2"; string s13="(x+1)^2 - (x^2 + 1 + 2x) + (x+1)(x+1)"; string s14="32 u^34 + 23 - 32 u^3 - 34*u ";//Any chars can be used as //placeholders string s15="32 X^34 + 23 - 32 X^3 - 34*X";//Capital case string s16="-32 X^34 + 23 - 32 X^3 - 34*X";//Capital case //Explicit construction of the BiPolys corresponding to the above two tests Polynomial p(34); p.setCoeff(34, 32); p.setCoeff(3, -32); p.setCoeff(1, -34); p.setCoeff(0, 23); Polynomial CC(s1); cout <<" String is " << s1 << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; CC = CC.getpoly(s2); cout <<" String is " << s2 << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; CC = CC.getpoly(s3); cout <<" String is" << s3 << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; CC = CC.getpoly(s4); cout <<" String is " << s4 << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; CC = CC.getpoly(s5); cout <<" String is " << s5 << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; CC = CC.getpoly(s6); cout <<" String is " << s6 << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; CC = CC.getpoly(s7); cout <<" String is " << s7 << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; CC = CC.getpoly(s8); cout <<" String is " << s8 << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; CC = CC.getpoly(s9); cout <<" String is " << s9 << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; CC = CC.getpoly(s10); cout <<" String is " << s10 << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; CC=CC.getpoly(s13); cout <<" Polynomial should be x^2 + 2*x + 1" << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; CC = CC.getpoly(s12); Polynomial CC1(ss12); if(CC == CC1) cout <<"CORRECT! Polynomial created correctly from string " << endl; else cout <<"ERROR!!! Polynomial created incorrectly from string " << endl; CC = Polynomial(s14, 'u'); cout <<" Using different place holders : string is " << s14 << endl; if(CC == p) cout <<"CORRECT! Polynomial created correctly from string " << endl; else cout <<"ERROR!!! Polynomial created incorrectly from string " << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; CC = CC.getpoly(s15); cout <<" Using capital 'X' : string is " << s15 << endl; if(CC == p) cout <<"CORRECT! Polynomial created correctly from string " << endl; else cout <<"ERROR!!! Polynomial created incorrectly from string " << endl; CC.dump("Polynomial is"); cout << endl;cout << endl; } core++-1.7/progs/poly/pisot.cpp0100644000175000001440000000170210130274601015742 0ustar joachimusers/* ************************************** File: pisot.cpp Description: Some tests of Pisot numbers: Golden ratio ((1+\sqrt{5})/2)^{100} = 792,070,839,848,372,253,126.999,999,999,999,999,999,998,737,486,.. NOTE: Core Library confirms this value, which is taken from a book review on the "Pisot and Salem Numbers" by Bertin, et al, Birkhaeuser, Basel 1992. Author: Chee Yap Date: July 20, 2002 Since Core Library Version 1.5 $Id: pisot.cpp,v 1.2 2004/10/04 16:25:37 exact Exp $ ************************************** */ #ifndef Level # define Level 3 #endif #include "CORE.h" using namespace std; // ================================================== // main // ================================================== int main() { setDefaultAbsPrecision(30); cout.precision(50); double phi = (1 + sqrt(double(5)))/2; double phic = pow(phi,100); phic.approx(200); cout << "phi^{100} = " << phic << endl; } core++-1.7/progs/poly/solve.cpp0100644000175000001440000001057510130274601015744 0ustar joachimusers/* ************************************** File: solve.cpp Description: Solving for real algebraic roots It is based on the Polynomial class Usage: % alge [opt-prec=54] [start=0] [end=start+10] where [opt-prec] is the optional guaranteed precision and [start], [end] define the interval in which to search for root. Author: Chee Yap, Sylvain Pion Date: July 20, 2002 Since Core Library v1.4 $Id: solve.cpp,v 1.3 2004/10/04 16:25:37 exact Exp $ ************************************** */ #ifndef Level # define Level 3 #endif #include #include "Sturm.h" #include "Newton.h" // ================================================== // // ================================================== // ================================================== // Main // ================================================== // typedef int NT typedef BigInt NT; typedef Polynomial Poly; // Sqrt 2 NT c_root2[] = {-2, 0, 1}; Poly root2(2, c_root2); // Legendre : 4 real roots between [-1;1] NT c_legendre4[] = {3, 0, -30, 0, 35}; Poly legendre4(4, c_legendre4); // wilk.pol Wilkinson polynomial (x-1)(x-2)...(x-n) n=20 // dri (dense, real?, i?) // 0 (exact coeff) // 20 (degree) NT c_wilk[] = { "2432902008176640000", "-8752948036761600000", "13803759753640704000", "-12870931245150988800", "8037811822645051776", "-3599979517947607200", "1206647803780373360", "-311333643161390640", "63030812099294896", "-10142299865511450", "1307535010540395", "-135585182899530", "11310276995381", "-756111184500", "40171771630", "-1672280820", "53327946", "-1256850", "20615", -210, 1}; Poly wilk(20, c_wilk); Sturm SS; void debug(std::string m) { std::cout << "DEBUG: calling isolateRoots\n"; } void testSturm( Poly P) { SS = * new Sturm(P); // SS.dump(std::string("Test Sturm Poly, ")); std::vector > v; SS.isolateRoots(v); std::cout << " Number of roots : " << v.size() << std::endl; for (std::vector >::const_iterator it = v.begin(); it != v.end(); ++it) { std::cout << " Root in [" << it->first << " ; " << it->second << "]" << std::endl; } }//sturmtest void processCommandLine(int argc, char ** argv ) { // SET INTERNAL PRECISION if (argc >= 2) { setDefaultRelPrecision(atoi(argv[1])); // if user specifies precision } else setDefaultRelPrecision(80); // otherwise, defRelPrec = 54 // i.e., as in machine arithmetic setDefaultAbsPrecision(CORE_posInfty); // This puts defRelPrec in control int prec = 100; // Do Newton iteration till delta // is at most 2^{-prec} // SET OUTPUT PRECISION std::cout.setf(std::ios::scientific, std::ios::floatfield); // choose scientific notation std::cout.precision(11); // default Print Digits = 11 std::cout << "------------------------------------------------------------\n"; std::cout << "Relative Precision is " << defRelPrec << std::endl; std::cout << "Print Digits is " << std::cout.precision() << std::endl; std::cout << "Iteration Stops when delta < " << BigFloat::exp2(prec) << std::endl; // std::cout << setprecision(defPrtDgt.asLong()); // already set above. std::cout << "------------------------------------------------------------\n"; } typedef Sturm::Interval Interval; int main(int argc, char** argv){ processCommandLine(argc, argv); // sturm test of Wilk -- slow (about 3-4 min)! testSturm(legendre4); SS = * new Sturm (legendre4); Interval v = SS.isolateRoot(3); std::cout << "3rd Root = " << v.first << ", " << v.second << std::endl; v = SS.isolateRoot(1); std::cout << "1rd Root = " << v.first << ", " << v.second << std::endl; v = SS.isolateRoot(5); std::cout << "5rd Root = " << v.first << ", " << v.second << std::endl; v = SS.firstRootBelow(0); std::cout << "1st below 0 = " << v.first << ", " << v.second << std::endl; v = SS.firstRootBelow(100); std::cout << "1st below 100 = "<< v.first << ", " << v.second << std::endl; v = SS.firstRootAbove(0); std::cout << "1st above 0 = " << v.first << ", " << v.second << std::endl; v = SS.firstRootAbove(-100); std::cout << "1st above -100 = "<& p, int n); //template ConstPolyRep; // checkGcd(p,q,g): // returns true if g=GCD(p,q) // returns false otherwise bool checkGcd(Polynomial& p, Polynomial& q, Polynomial& g){ if(zeroP(p) && zeroP(q))//If both the polynomials are zero then GCD is zero return(zeroP(g)); if(zeroP(g))//Zero polynomial cannot be a GCD except for the case above return false; if(zeroP(p)) //If P is zero then GCD(P, Q) should be same as Q return(q.primPart() == g.primPart());//, up to multiplicity if(zeroP(q)) return(p.primPart() == g.primPart()); //Similar to above /* Polynomial temp1(p), temp2(q), temp, quo; while(!zeroP(temp2)){ quo = temp1.pseudoRemainder(temp2); if(!isDivisible(temp1, g)) return false; temp = temp2;//Changing the divisor to the dividend and the temp2 = temp1;// remainder to the divisor. temp1 = temp; }*/ NT x = 0; for(int i=0; i < g.getTrueDegree(); i++) x += core_abs(psc(i, p, q)); // psc(i,p,q) = i-th principal subresultant coeff. if(isDivisible(p, g) && isDivisible(q, g) && x == 0 && psc(g.getTrueDegree(), p, q) != 0) return true; return false; } void checkBounds(Polynomial& p){ for (int i=0; i<1000; i++){ /// WHAT IS THIS FOR? p.CauchyUpperBound(); p.CauchyLowerBound(); } } //Given the original polynomial P and it's square-free part Q bool checkSquareFree( Polynomial &p, Polynomial& q){ if(p.getTrueDegree() <= 1) return true; Polynomial r = differentiate(q); Polynomial temp(p), temp1(p); temp = temp.pseudoRemainder(q); //temp.dump("temp"); //Q is squarefree and Q divides P and P/Q is proportional to gcd(P, P') if(res(q,r) != 0 && isDivisible(p, q) && checkGcd(p, temp1.differentiate(), temp)) return true; // cout << "Check Gcd " << checkGcd(p, temp1.differentiate(), temp) << endl; //cout << "Res " << res(q, r) << endl; //cout << "Is Div " << isDivisible(p, q) << endl; return false; } //bool checkPrimPart(){ //} int main(int argc , char ** argv) { NT cs1[] = {-45, 390, -1260, 2040, -2115, 1350}; Polynomial P1(5, cs1); NT cs2[] = {3, -2, 5}; Polynomial P2(2, cs2); NT cs3[] = {9, -6, 15}; Polynomial P3(2, cs3); NT cs4[] = {15, -9, 6}; Polynomial P4(2, cs4); NT cs5[] = {5}; Polynomial P5(0, cs5); Polynomial G, zero; //Two Polynomials which have a non-constant GCD G = gcd(P1, P2); if(checkGcd(P1, P2, G)) cout << "CORRECT! GCD calculated properly" << endl; else cout << "ERROR! GCD calculated wrongly" << endl; //Two Polynomials which differ by a constant multiple G = gcd(P2, P3); G.dump(); if(checkGcd(P2, P3, G)) cout << "CORRECT! GCD calculated properly" << endl; else cout << "ERROR! GCD calculated wrongly" << endl; //Two Polynomials which have a constant GCD G = gcd(P3, P4); if(checkGcd(P3, P4, G)) cout << "CORRECT! GCD calculated properly" << endl; else cout << "ERROR! GCD calculated wrongly" << endl; //Two Polynomials one of which is a zero polynomial G = gcd(P3, zero); if(checkGcd(P3, zero, G)) cout << "CORRECT! GCD calculated properly" << endl; else cout << "ERROR! GCD calculated wrongly" << endl; //Two Polynomials both of which are zero polynomial G = gcd(zero, zero); if(checkGcd(zero, zero, G)) cout << "CORRECT! GCD calculated properly" << endl; else cout << "ERROR! GCD calculated wrongly" << endl; //Two Polynomials which have a constant GCD G = gcd(P5, P4); if(checkGcd(P5, P4, G)) cout << "CORRECT! GCD calculated properly" << endl; else cout << "ERROR!!! GCD calculated wrongly" << endl; // TEST OF KNOWN GCD's Polynomial C; C = P2*P3; // So, gcd(P2,C)=P2; if (gcd(C,P2) != P2) cout << "ERROR!!! gcd(A*B,A) != A" << endl; else cout << "CORRECT! gcd(A*B,A) = A" << endl; if (gcd(P3,C) != P3) cout << "ERROR!!! gcd(B,A*B) != B" << endl; else cout << "CORRECT! gcd(B,A*B) = B" << endl; Polynomial D(P2); D.setCoeff(0,4); if(checkGcd(P2,C,D)) cout << "ERROR!!! D is considered gcd" << endl; else cout << "CORRECT! D is not the gcd" << endl; checkBounds(P1); checkBounds(P2); checkBounds(P3); checkBounds(P4); checkBounds(P5); //Example from Modern Computer Algebra, v.z.Gathen, Pg 172 NT cs6[] = {-764, -979, -741, -814, -65, 824}; Polynomial P6(5, cs6); NT cs7[] = {617, 916, 880, 663, 216}; Polynomial P7(4, cs7); //========================================== NT p = psc(0, P6, P7); if (p != BigInt("31947527181400427273207648")) cout << "ERROR!!! in psc(0)" << endl; cout << "psc(0, P6, P7) "<< p<deg(Q)=n, then // sres_n(P,Q) = lead(Q)^{m-n-1} Q. // So, sres_4(P6,P7)= P7, and psc(5,P6,P7)= lead(P7)= 216. p = psc(4, P6, P7); if (p != BigInt(216)) cout<<"ERROR!!! in psc(4)"<deg(Q)=n, then // sres_m(P,Q) = P. // So, sres_5(P6,P7)= P6, and psc(5,P6,P7)= lead(P6)= 824. p = psc(5, P6, P7); if (p != BigInt(824)) cout<<"INCORRECT! in psc(5). Known minor bug"< PolyNT; typedef Sturm SturmNT; // Polynomial tester: P is polynomial to be tested // -- THIS is a Kludge to get around "Poly" versus "Polynomial" // void testSturm(PolyNT &P, int prec, int n = -1) // { // testSturm(P, prec, n); // } // ================================================== // Main // ================================================== int main(int argc, char** argv){ // SET INTERNAL PRECISION setDefaultRelPrecision(CORE_posInfty); // This puts defAbsPrec in control int prec = 300; // Do Sturm refinement till delta // is at most 2^{-prec} if (argc >= 2) prec = atoi(argv[1]); // if user specifies setDefaultAbsPrecision(prec); bool slowTest = false; if (argc >= 3) slowTest = true; // if user specifies precision // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(prec/3); // convert prec bits into prec/3 digits cout << "------------------------------------------------------------\n"; cout << "Relative Precision is " << defRelPrec << endl; cout << "Print Digits is " << cout.precision() << endl; cout << "Iteration Stops when delta < " << BigFloat::exp2(-prec) << endl; // cout << setprecision(defPrtDgt.asLong()); // already set above. cout << "------------------------------------------------------------\n"; cout <<"=============================================================\n" << "TEST : Kameny Polynomial of degree 14 (4 real roots)\n" << "=============================================================" << endl; char* s[] = {"4", "0", "0", "0", "-4000000000000000000000000", "0", "0", "4", "1000000000000000000000000000000000000000000000000", "0", "0","2000000000000000000000000","0", "0", "1"}; NT cs[15]; for(int i=0; i<15; i++) { cs[i] = s[i]; } PolyNT P(14, cs); P.dump("Kameny 4 "); testNewtonSturm(P, prec, 4); return 0; }// main core++-1.7/progs/poly/tNewton.cpp0100644000175000001440000002077210133477755016274 0ustar joachimusers/* ************************************** File: tNewton.cpp Uses the Newton Class to compute square roots and cube roots of any int N. Result is stored in a file, and then read out again at any desired precisions. This is self-tested for accuracy. Usage: % tNewton [N = 2] [prec = 2000] [readprec = 100] where [N] is value whose square-root and cube-root is to be taken [prec] is the precision (in number of bits) of the computation. [readprec] is the precision to read back from file The number read from the file is squared (cubed) and compared to the argument [N]. Their difference should be no more than 2^{4-[readprec]} (otherwise an error will be reported). ASSERT: [prec] >= [readprec] The result is stored in the files named output/sqrt[N].[prec] output/cube[N].[prec] CORRECTNESS CHECK: Suppose we want to verify that |x - sqrt(N)| < 2^{-p} (p = prec). Let sqrt(N) = x+e. Then |N-x^2| = |(x+e)^2 - x^2| > 2x|e|. I.e., diff2 := |N/x - x|/2 > |e|. If we ASSUME x>1, then 2|e|>diff2>|e|. So if we make |e|<2^{-p-1} (***) then -p > diff2.uMSB(). We test this inequality in our code (see below). To ensure (***), we compute x (or read x from file) to (p+1) absolute bits of precision. [Important Note: when reading x from file, the accuracy argument is relative, so you need to first convert p to the corresponding relative accuracy]. Similarly, suppose we want |x - cuberoot(N)| < 2^{-p}. Let cuberoot(N) = x+e where x>0. Then |N-x^3| > 3x|e|(x-|e|) > 3x|e|, assuming x-|e| >= 1. Hence it is enough to verify -p >= diff3.uMSB() where diff3 = |(N/x*x) - x|/3 if e<2^(-p-2) Then, similar considerations apply that are similar to (***). REMARK: There are more direct methods to test the case of sqrt but these do not extend to cuberoot (since CORE does not directly support cuberoot currently). Author: Chee Yap and Zilin Date: Aug 2, 2002 (updated, Oct 10, 2004). Since Core Library v1.4 $Id: tNewton.cpp,v 1.19 2004/10/14 13:32:29 exact Exp $ ************************************** */ #include #include "CORE/CORE.h" using namespace std; // ================================================== // Main // ================================================== // Default number type is NT=BigInt #if defined _NT_INT typedef int NT; #elif defined _NT_LON typedef long NT; #elif defined _NT_EXP typedef Expr NT; #elif defined _NT_RAT typedef BigRat NT; #elif defined _NT_BF typedef BigFloat NT; #elif defined _NT_BINT typedef BigInt NT; #else typedef BigInt NT; #endif int main(int argc, char** argv){ //============================================================ // Process Command Line Arguments //============================================================ // Initialize file names for storing results string fname1 = "outputs/sqrt"; string fname2 = "outputs/cuberoot"; // Initialize N int N; if (argc >= 2) { N = atoi(argv[1]); fname1 += argv[1]; fname2 += argv[1]; fname1 += "."; fname2 += "."; // assigned value } else { N = 2; fname1 += "2."; fname2 += "2."; // default value } // Set Absolute Precision prec int prec; if (argc >= 3) { prec = atoi(argv[2]); // If user specifies [prec] } else { // default absolute precision prec = 2000; } // Set bit precision for reading from file int readprec; if (argc >= 4) { readprec = atoi(argv[3]); } else { readprec = 100; // default value } // Make sure that [prec] >= [readprec]-4 if (readprec-4 > prec) prec = readprec; char prec_str[200]; sprintf(prec_str, "%d", prec); fname1 += prec_str; fname2 += prec_str; // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(11); // default Print Digits = 11 cout << "--------------------------------------------------------\n"; cout << "Computing Square Root and Cube Root of N=" << N << " to " << prec << " absolute bits" << endl; cout << "--------------------------------------------------------\n"; // Open Output files ofstream ofs1, ofs2; // output streams for sqrt and cuberoot ofs1.open(fname1.data()); if (!ofs1) cout << "error opening output file " << fname1 << endl; ofs2.open(fname2.data()); if (!ofs2) cout << "error opening output file " << fname2 << endl; //============================================================ // Step 1: compute sqrt(N) to prec absolute bits: //============================================================ NT cs2[] = {-2, 0, 1}; // coefficients of Polynomial Sturm NP (Polynomial(2, cs2)); // Sturm object NP.seq[0].setCoeff(0, -N); // make -N the constant coefficient BigFloat del; BigFloat val; val = NP.newtonIterE(prec, N, del); // compute to sqrt(N) to prec absolute bits ofs1 << "# Filename: poly/" << fname1 << endl; ofs1 << "# This stores sqrt(" << N << ") to " << prec << " absolute bits, in base 10" << endl; int base = 10; int linelength = 70; writeToFile(val, ofs1, base, linelength); ofs1 << "# END of FILE " << fname1 << endl; ofs1.close(); // CHECKING cout << " ---------------------------------------------------\n"; cout << " SELF-CHECK for sqrt: reading from output file\n"; cout << " ---------------------------------------------------\n"; ifstream ifs1(fname1.data()); // input stream for sqrt BigFloat rootN; readFromFile(rootN, ifs1, readprec+1+(1+BigFloat(N).uMSB().asLong())/2 ); // read [readprec] many absolute bits of precision // REMARK: we need to add "1" to get (***) above // we need to add (1+N.uMSB())/2 to convert the relative precision // of reading to an absolute precision cout << " Sqrt(" << N << ") = " << rootN << endl; cout << " >>> Reading [readprec]=" << readprec << " bits \n"; Expr diff2 = (Expr(N)/Expr(rootN) - Expr(rootN))/2; cout << "uMSB=" << diff2.BigFloatValue().uMSB() << endl; cout << "readprec=" << -readprec << endl; if (diff2.BigFloatValue().uMSB() > -readprec) cout << " >>> ERROR! Value read from file is not accurate \n"; else cout << " >>> CORRECT! Value read from file is accurate \n"; ifs1.close(); ifs1.open(fname1.data()); // close and reopen file //============================================================ cout << " >>> AGAIN, reading all " << prec << " bits \n"; readFromFile(rootN, ifs1, 0); // read all digits in file diff2 = (Expr(N)/Expr(rootN) - Expr(rootN))/2; cout << "uMSB=" << diff2.BigFloatValue().uMSB() << endl; cout << "prec=" << -prec << endl; if (diff2.BigFloatValue().uMSB() > -prec) cout << " >>> ERROR! Value read from file is not accurate \n"; else cout << " >>> CORRECT! Value read from file is accurate \n"; ifs1.close(); //============================================================ // Step 2: compute cuberoot(N) to prec absolute bits: //============================================================ NT cs3[] = {-2, 0, 0, 1}; // coefficients of Polynomial Sturm NP2 (Polynomial(3, cs3)); // Newton object NP2.seq[0].setCoeff(0, -N); // make -N the constant coefficient val = NP2.newtonIterE(prec, N, del); // compute to cuberoot(N) to prec abs. bits ofs2 << "# Filename: poly/" << fname2 << endl; ofs2 << "# This stores cuberoot(" << N << ") to " << prec << " absolute bits, in base 10" << endl; writeToFile(val, ofs2, base, linelength); ofs2 << "# END of FILE " << fname2 << endl; ofs2.close(); //CHECKING: cout << " ---------------------------------------------------\n"; cout << " SELF-CHECK for cube root: reading from output file\n"; cout << " ---------------------------------------------------\n"; ifstream ifs2(fname2.data()); // input stream for cuberoot readFromFile(rootN, ifs2, readprec+2+(1+BigFloat(N).uMSB().asLong())/3); // read [readprec] bits cout << " CubeRoot(" << N << ") = " << rootN << endl; Expr ExprrootN=Expr(rootN); Expr diff3 = (Expr(N)/(ExprrootN*ExprrootN) - ExprrootN)/3; cout << "uMSB=" << diff3.BigFloatValue().uMSB() << endl; cout << "readprec=" << -readprec << endl; if (diff3.BigFloatValue().uMSB() > -readprec) cout << " >>> ERROR! Value read from file is not accurate \n"; else cout << " >>> CORRECT! Value read from file is accurate \n"; cout << "----------------------END-------------------------------\n"; return 0; }// main core++-1.7/progs/poly/tPoly.cpp0100644000175000001440000003331310130274602015717 0ustar joachimusers/* ************************************** File: tPoly.cpp Purpose: basic testing of the polynomial class USAGE: > tPoly [InteractiveMode] If an optional argument [InteractiveMode] is given, the mode is interactive. (the user will need to type some inputs on keyboard) The value of [InteractiveMode] is not examined. NOTE: This program compiled with NT=BigInt as default. But if you define one of the variables _NT_INT, _NT_RAT, _NT_EXP then you get (respectively) NT=int, NT=BigRat, NT=Expr. We would like this to compile with NT=BigFloat as well... Author: Chee Yap Date: May 28, 2002. (Revised Mar 24, 2004) Since Core Library v1.4.1 $Id: tPoly.cpp,v 1.24 2004/10/04 16:25:38 exact Exp $ ************************************** */ #define CORE_LEVEL 4 #include "CORE/CORE.h" // Default number type is NT=BigInt #if defined _NT_INT typedef int NT; #elif defined _NT_LON typedef long NT; #elif defined _NT_EXP typedef Expr NT; #elif defined _NT_RAT typedef BigRat NT; #elif defined _NT_BF typedef BigFloat NT; #elif defined _NT_BIGINT typedef BigInt NT; #else typedef BigInt NT; #endif typedef Polynomial Poly; using namespace std; int testPseudo(Poly A, Poly B, bool verbose=false) { NT C; Poly Rem = A; if (verbose) cout << "===============begin testPseudo===========" << endl; Poly Quo = Rem.pseudoRemainder(B, C); if (verbose) { cout << "A = " << A << endl; cout << "B = " << B << endl; cout << "Quo = " << Quo << endl; cout << "Rem = " << Rem << endl; cout << "C = " << C << endl; } A.mulScalar(C); // A = A * C; Poly pp = Quo * B + Rem; if (verbose) { cout << "C*A = " << A << endl; cout << "Quo*B + Rem = " << pp << endl; } if (A == pp) cout << "CORRECT! (C*A) == (Quo*B + Rem) in pseudoRemainder" << endl; else cout << "ERROR! (C*A) != (Quo*B + Rem) in pseudoRemainder" << endl; if (verbose) cout << "===============end testPseudo===========" << endl; return 1; } int main( int argc, char* argv[] ) { //////////////////////////////////////////////////////////// // ARGUMENT PROCESSING //////////////////////////////////////////////////////////// bool InteractiveMode = false; if (argc > 1) InteractiveMode = true; cout << " ================ START OF TEST POLY ================ " << endl; cout << "================================================\n"; cout << "CONSTRUCTORS \n"; cout << "================================================\n"; Poly zP; cout << "Zero Poly (zP) :\n> " << zP << endl; if (zP != Poly::polyZero()) cout << "ERROR: either polyZero() or zP is not the zero polynomial" << endl; else cout << "CORRECT: polyZero() = zP" << endl; Poly oneP(0); cout << "Unity Poly (oneP) :\n> " << oneP << endl; if (oneP != Poly::polyUnity()) cout << "ERROR: either polyUnity() or oneP is not the unity polynomial" << endl; else cout << "CORRECT: polyUnity() = oneP" << endl; Poly U(5); cout << "Another Unit Poly U :\n> " << U << endl; NT c[] = {1, 2, 3, 4, 5}; Poly P4(4, c); cout << "P4 :\n> " << P4 << endl; Poly Q(P4); cout << "Q, copy of P4 :\n> " << Q << endl; cout << "================================================\n"; cout << "DUMPING POLYNOMIALS \n"; cout << "================================================\n"; cout << "> Dumping polynomials to cerr " << endl; P4.dump(">This is P4 (output to cerr): "); cerr << "> The next is U (unit poly): " << endl; U.dump(); cout << "================================================\n"; cout << "EXPAND, CONTRACT, REVERSE, MakeTailCoeffNonzero, NEGATE \n"; cout << "================================================\n"; int n = Q.expand(3); // Q is copy of P4 cout << "Null extension of Q :\n> n =" << n << " (should be -2) " << endl; if (n != -2) cout << "ERROR!! Q.expand did not return -2" << endl; cout << "> Unchanged Q :\n> " << Q << endl; n = Q.expand(7); cout << "Expansion of Q :\n> n =" << n << " (should be 7) " << endl; cout << "> New Q :\n> " << Q ; cout << "> getTrueDegree(Q) = " << Q.getTrueDegree() << " (should be 4)\n" ; n = Q.contract(); cout << "Reduce Q :\n> n = " << n << " (should be 4) " << endl; cout << "> This should be the original Q:\n> " << Q << endl; n = Q.contract(); if (n != -2) cout << "ERROR!! Q.contract did not return -2" << endl; else cout << "Nothing to reduce in Q :\n> n = " << n << " (CORRECT! n = -2) " << endl; Q.reverse(); cout << "> Reversed Q :\n> " << Q ; Q.reverse(); // we want them to be equal, so Q needs to // be reversed again (it was reversed once above) if (Q == P4) cout << "CORRECT! reverse(reverse)=ident" << endl; else cout << "ERROR! reverse(reverse) != ident" << endl; Q.negate(); cout << "> Negated Q :\n> " << Q ; Q.negate(); if (Q == P4) cout << "CORRECT! negate(negate)=ident" << endl; else cout << "ERROR! negate(negate) != ident" << endl; assert(P4.getTailCoeff() != 0); // needed for the next test for (int i = 0; i<25; i += 3) { P4.mulXpower(i); // multiply by X^17 if (P4.makeTailCoeffNonzero() == i) cout << "CORRECT! makeTailCoeff is correct" << endl; else cout << "ERROR! makeTailCoeff has error" << endl; } cout << "================================================\n"; cout << "ASSIGNMENT \n"; cout << "================================================\n"; Poly P5; P5 = P4; cout << "Assignment P5=P4 : Here is P5\n> " << P5 << endl; NT c5[] = {-1, 2, -3, 4, -5, 6}; P5 = Poly(5, c5); cout << "Updated P5 :\n> " << P5 << endl; cout << "================================================\n"; cout << "ARITHMETIC \n"; cout << "================================================\n"; Poly S = P5 + P4; cout << "Addition, S = P5 + P4 :\n> " << S << endl; S = P5 - P4; cout << "Difference, S = P5 - P4 :\n> " << S << endl; // Multiplication by Scalar NT x = 10; S.mulScalar(x); cout << "Scalar Multiply of S * 10 :\n> " << S << endl; // Multiplication by X-power S.mulXpower(0); cout << "S mulXpower(0) :\n> " << S << endl; S.mulXpower(3); cout << "S mulXpower(3) :\n> " << S << endl; S.mulXpower(-4); cout << "S mulXpower(-4) :\n> " << S << endl; // Unary minus cout << "Unary Minus, -S :\n> " << -S << endl; // Product Poly P = P5 * P4; cout << "Product, P = P5 * P4 :\n> " << P << endl; // POWER cout << "Power, P5^0 :\n> " << power(P5,0) << endl; cout << "Power, P5^1 :\n> " << power(P5,1) << endl; cout << "Power, P5^2 :\n> " << power(P5,2) << endl; cout << "Power, P5^3 :\n> " << power(P5,3) << endl; cout << "================================================\n"; cout << "REMAINDERS \n"; cout << "================================================\n"; Poly P7(P4); P7.mulXpower(3); // raise to power x^7 cout << "P7 :\n> " << P7 << endl; NT c2[] = {2, 0, 3}; Poly P2(2, c2); cout << "P2 :\n> " << P2 << endl; P7.pseudoRemainder(P2); // Now P7 is the pseudoRemainder cout << "P7.pseudoRemainder(P2) :\n> " << P7 << endl; NT c7[] = {8, 22}; Poly p7(1, c7); // p7 = 22x + 8 if (P7 == p7) cout << "CORRECT! 22x+8 is pseudoRemainder" << endl; else cout << "ERROR! 22x+8 is NOT the pseudoRemainder" << endl; //////////////////////////////////////////// testPseudo( P4, P5); testPseudo( power(P4,3), P2); NT c3[] = {1, -3, 0, 2}; Poly P3 = Poly(3, c3); testPseudo( power(P4,3), P3); testPseudo( power(P4,3), P4); testPseudo( power(P4,6), power(P4,5)); //////////////////////////////////////////// Poly P20 = power(P4,5); Poly P0 = P20; Poly P16 = P0.pseudoRemainder(P4); // P0 should be zero Poly p16 = power(P4,4); cout << "P16 = " << P16 << endl; cout << "p16 = " << p16 << endl; if (p16 == P16) cout << "CORRECT! pseudoQuotient of (P4)^5 divided P4" << endl; else cout << "ERROR! pseudoQuotient of (P4)^5 divided P4" << endl; if (P0 == Poly::polyZero()) cout << "CORRECT! pseudoRemainder of (P4)^5 divided P4 is 0" << endl; else cout << "ERROR! pseudoRemainder of (P4)^5 divided P4 is not 0" << endl; cout << "================================================\n"; cout << "EVALUATION \n"; cout << "================================================\n"; cout << "Evaluation, of P5 :\n> P5(BigFloat(0)) = " << P5.eval(BigFloat(0)); cout << "> P5(Expr(1)) = " << P5.eval(Expr(1)) << endl; cout << "> P5(Expr(2)) = " << P5.eval(Expr(2)) << endl; Expr a=P5.eval(Expr("1.2")); cout << "> P5(Expr(\"1.2\")) = " << a << endl; Expr b=P5.eval(Expr(1.2)); cout << "> P5(Expr(1.2)) = " << b << endl; cout << "> Is P5(Expr(\"1.2\")) == P5(Expr(1.2)) ? " ; if (a == b) cout << " Yes (ERROR!)" << endl; else cout << " No (CORRECT!)" << endl << endl; cout << "================================================\n"; cout << "DIFFERENTIATION \n"; cout << "================================================\n"; cout << "Differentiate P5 zero times:\n> P5 = " << differentiate(P5,0) << endl; cout << "Differentiation, of P5 :\n> P5' = " << differentiate(P5) << endl; cout << "Differentiate twice :\n> P5'' = " << differentiate(P5,2) << endl; cout << "Differentiate thrice :\n> P5''' = " << differentiate(P5,3) << endl; cout << "================================================\n"; cout << "COMPARISON\n"; cout << "================================================\n"; cout << "Testing for Zero Polynomial: \n> " ; if (zeroP(zP)) cout << "CORRECT! zP is the zero polynomial" << endl; else cout << "ERROR! zP should be the zero polynomial" << endl; cout << "Testing for Unit Polynomial: \n> " ; if (unitP(oneP)) cout << "CORRECT! oneP is the unit polynomial" << endl; else cout << "ERROR! zP should be the unit polynomial" << endl; cout << "Comparing P5 and P4: \n> " ; if (P5 == P4) cout << "ERROR! they are equal " << endl; if (P5 != P4) cout << "CORRECT! they are not equal " << endl; cout << "================================================\n"; cout << "GCD \n"; cout << "================================================\n"; // to be provided! cout << "================================================\n"; cout << "STREAM I/O \n"; cout << "================================================\n"; if (InteractiveMode) { cout << "Stream Input : type degree d, then d+1 coefficients\n> " << endl; Poly Pin; cin >> Pin; cout << "Is this your input polynomial? \n> " << Pin << endl; } cout << "================================================\n"; cout << "COEFFICIENT MANIPULATION \n"; cout << "================================================\n"; cout << "\nGet coefficient array of P4" << endl; NT ** cp = P4.getCoeffs(); int deg = P4.getDegree(); for (int i=0; i<=deg; i++) cout << " " << i << "-th Coefficient = " << (*cp)[i] << endl; cout << "Get each coefficients of P4" << endl; for (int i=0; i<=5; i++) { if (i <= deg) { const NT cp = P4.getCoeff(i); cout << " " << i << "-th Coefficient = " << cp << endl; } } cout << "Change the 5th coefficients of P4 to 100" << endl; NT hundert = 100; if (P4.setCoeff(5, hundert)) cout << " ERROR! Should have failed" << endl; else cout << " CORRECT! Failed to change" << endl; cout << "Change the 3th coefficients of P4 to 100" << endl; if (P4.setCoeff(3, hundert)) cout << " Here is the new P4:\n> P4 = " << P4 << endl; else cout << " ERROR! Should have succeeded" << endl; // ================================================== // ADDITIONAL TESTS // ================================================== #if defined _NT_BF Poly BF_R(1); BF_R.setCoeff(0, BigFloat(123, 0, -4)); BF_R.setCoeff(1, BigFloat(321, 0, 4)); cout << "BF_R: " << BF_R << endl; Poly BF_Q(2); BF_Q.setCoeff(0, BigFloat(2, 0, -1)); BF_Q.setCoeff(1, BigFloat(3, 0, 2)); BF_Q.setCoeff(2, BigFloat(4, 0, -3)); cout << "BF_Q: " << BF_Q << endl; Poly BF_B(3); BF_B.setCoeff(0, BigFloat(12, 0, -1)); BF_B.setCoeff(1, BigFloat(3, 0, 2)); BF_B.setCoeff(2, BigFloat(4, 0, -3)); BF_B.setCoeff(3, BigFloat("12345678901234567", 0, -3)); cout << "BF_B: " << BF_B << endl; Poly BF_A = BF_B * BF_Q + BF_R; cout << "BF_A: " << BF_A << endl; testPseudo(BF_A, BF_B, true); // ================================================== // NT C; // Poly BF_P = BF_A.pseudoRemainder(BF_B, C); // cout << "BF_P = pseudoQuotient of BF_A by BF_B: " << BF_P << endl; // cout << "PseudoRemainder of BF_A by BF_B: " << BF_A << endl; // cout << "Constant of pseudoRemainder is " << C << endl; // if (BF_A == BF_R) // cout << "CORRECT! PseudoRemainder is same as BF_R" << endl; // else // cout << "ERROR!!! PseudoRemainder is different from BF_R" << endl; // if (BF_P == BF_Q) // cout << "CORRECT! PseudoQuotient is same as BF_Q" << endl; // else // cout << "ERROR!!! PseudoQuotient is different from BF_Q" << endl; // BF_A = BF_B * BF_Q + BF_R; // ================================================== BF_A.setCoeff(5, BigFloat(1234, 0, 2)); testPseudo(BF_A, BF_B, true); #endif cout << " ================= END OF TEST POLY ================= " << endl; #if defined _NT_INT cout << " ================= NT = int ========================= " << endl; #elif defined _NT_EXP cout << " ================= NT = Expr ======================== " << endl; #elif defined _NT_RAT cout << " ================= NT = BigRat ====================== " << endl; #elif defined _NT_LON cout << " ================= NT = long ======================== " << endl; #elif defined _NT_BF cout << " ================= NT = BigFloat ======================== " << endl; #else cout << " ================= NT = BigInt ====================== " << endl; #endif return 0; }//main // ================================================== // End of tPoly // ================================================== core++-1.7/progs/poly/tRootOf.cpp0100644000175000001440000001050210130274602016177 0ustar joachimusers/************************************************************* * File: tRootOf.cpp * Purpose: * Illustrating the RootOf(P) construction * -- sqrt(6) = sqrt(2) * sqrt(3) * -- phi^2 = phi + 1 where phi is golden ratio * -- phi = (sqrt(5) +/- 1)/2 * * Usage: tRootOf [n] * * where n is optional number of bits of precision * Default is n = 60. * * Author: Zilin Du * Date: May 22, 2003 * Since Core Library version 1.6 *************************************************************/ #include "CORE/CORE.h" using namespace CORE; using namespace std; typedef BigInt NT; //template Expr::Expr(const Polynomial& p, int n); //template ConstPolyRep; int main(int argc , char ** argv) { int outputPrec; int eps; outputPrec = 40; // default output precision if (argc >= 2) { outputPrec = atoi(argv[1]); } eps = (int)(outputPrec*log(10.0)/log(2.0)); cout << "outputPrec = " << outputPrec << ", eps = " << eps << endl; // compute sqrt(2) NT cs[] = {-2, 0, 1}; // coefficients of Polynomial Polynomial P(2, cs); Expr root1 = rootOf(P, 1); Expr root2 = rootOf(P, 2); Expr e = sqrt(Expr(3)); Expr f1 = root1 + e; Expr f2 = root2 + e; f1.approx(CORE_INFTY, eps); f2.approx(CORE_INFTY, eps); setDefaultOutputDigits(outputPrec); cout << "-sqrt(2) = " << root1 << endl; cout << " sqrt(2) = " << root2 << endl; cout << " sqrt(3) = " << e << endl; cout << "-sqrt(2) + sqrt(3) = " << f1 << endl; cout << " sqrt(2) + sqrt(3) = " << f2 << endl; ////////////////////////////////////////////////////////////// // test sqrt(6)-sqrt(2)*sqrt(3) ////////////////////////////////////////////////////////////// NT cs1[] = {-2, 0, 1}; // coefficients of Polynomial Polynomial P1(2, cs1); Expr e1 = rootOf(P1, 2); NT cs2[] = {-3, 0, 1}; // coefficients of Polynomial Polynomial P2(2, cs2); Expr e2 = rootOf(P2, 2); NT cs3[] = {-6, 0, 1}; // coefficients of Polynomial Polynomial P3(2, cs3); Expr e3 = rootOf(P3, 2); cout << "sqrt(2) = " << e1 << endl; cout << "sqrt(3) = " << e2 << endl; cout << "sqrt(6) = " << e3 << endl; Expr ee = e3 - e1 * e2; if (ee == 0) { cout << "CORRECT! sqrt(2) * sqrt(3) = sqrt(6)" << endl; } else { cout << "ERROR! sqrt(2) * sqrt(3) != sqrt(6)" << endl; } ////////////////////////////////////////////////////////////// // More on sqrts of 2, 3, 6 ////////////////////////////////////////////////////////////// Expr e12 = e1 / e2; ee.approx(CORE_INFTY, eps); e12.approx(CORE_INFTY, eps); cout << "sqrt(6)-sqrt(2)*sqrt(3) = " << ee << endl; cout << "sqrt(2)/sqrt(3) = " << e12 << endl; ////////////////////////////////////////////////////////////// // test almost sqrts ////////////////////////////////////////////////////////////// BigFloat BFeps = BigFloat(1).exp2(-100); // very small value Expr ee1 = sqrt(Expr(2)-Expr(BFeps.exp2(-100))); Expr ee2 = sqrt(Expr(3)+Expr(BFeps.exp2(-100))); Expr eee = e3 - ee1 * ee2; if (eee == 0) { cout << "ERROR! sqrt(2 - eps) * sqrt(3 + eps) = sqrt(6)" << endl; } else { cout << "CORRECT! sqrt(2 - eps) * sqrt(3 + eps) != sqrt(6)" << endl; } ////////////////////////////////////////////////////////////// // test golden ratio ////////////////////////////////////////////////////////////// NT cs4[] = {-1, -1, 1}; // coefficients of Polynomial x^2 - x -1 Polynomial P4(2, cs4); Expr goldenRatio1 = rootOf(P4, 1); Expr goldenRatio2 = rootOf(P4, 2); cout << "GoldenRatio1 = " << goldenRatio1 << endl; cout << "GoldenRatio2 = " << goldenRatio2 << endl; if (goldenRatio2 * goldenRatio2 == 1 + goldenRatio2) { cout << "CORRECT! GoldenRatio^2 = GoldenRatio + 1 (first root)" << endl; } else { cout << "ERROR! GoldenRatio^2 != GoldenRatio + 1 (first root)" << endl; } if (goldenRatio1 * goldenRatio1 == 1 + goldenRatio1) { cout << "CORRECT! GoldenRatio^2 = GoldenRatio + 1 (second root)" << endl; } else { cout << "ERROR! GoldenRatio^2 != GoldenRatio + 1 (second root)" << endl; } Expr g1 = (1 - sqrt(Expr(5)))/2; Expr g2 = (1 + sqrt(Expr(5)))/2; if ((goldenRatio1 == g1) && (goldenRatio2 == g2)) { cout << "CORRECT! GoldenRatio = (1 +/- sqrt(5))/2 " << endl; } else { cout << "ERROR! GoldenRatio != (1 +/- sqrt(5))/2 " << endl; } } core++-1.7/progs/poly/tSturm.cpp0100644000175000001440000003305710144777714016134 0ustar joachimusers/* ************************************** File: tSturm.cpp Description: Testing the Sturm Class, which is in turn based on the Polynomial class. The current version of tSturm using intervals that are pairs of BigFloat's, not Expr's. This is much more efficient. The number type for coefficients of polynomials is NT. This program can be compiled with NT equal to any of the following: BigInt (default), BigFloat, Expr, BigRat, int. Usage: % tSturm [opt-prec=100] [if-more-test-desired] where [opt-prec] is the optional precision bounding the bit size of the isolating intervals. It there is another argument (if-more-test-desired), then some slow polynomial evaluations will be invoked. Note: Some examples may fail when NT = int. This is to be expected, not a bug. Below, we try to avoid doing such examples when NT = int. Author: Chee Yap, Sylvain Pion, Vikram Sharma Date: July 20, 2002 Since Core Library v1.4 $Id: tSturm.cpp,v 1.31 2004/11/12 00:11:56 sharma Exp $ ************************************** */ # define CORE_LEVEL 4 #include "CORE/CORE.h" using namespace std; // ================================================== // Setup // ================================================== // Default NT is BigInt #if defined _NT_INT typedef int NT; #elif defined _NT_LONG typedef long NT; #elif defined _NT_RAT typedef BigRat NT; #elif defined _NT_EXP typedef Expr NT; #elif defined _NT_BF typedef BigFloat NT; #else typedef BigInt NT; //Default #endif typedef Polynomial PolyNT; typedef Sturm SturmNT; // ================================================== // Test function // ================================================== int testPseudo(PolyNT A, PolyNT B, bool verbose=false) { NT C; PolyNT Rem = A; if (verbose) cout << "===============begin testPseudo===========" << endl; PolyNT Quo = Rem.pseudoRemainder(B, C); if (verbose) { cout << "A = " << A << endl; cout << "B = " << B << endl; cout << "Quo = " << Quo << endl; cout << "Rem = " << Rem << endl; cout << "C = " << C << endl; } A.mulScalar(C); // A = A * C; PolyNT pp = Quo * B - Rem; if (verbose) { cout << "C*A = " << A << endl; cout << "Quo*B - Rem = " << pp << endl; } if (A == pp) cout << "CORRECT! (C*A) == (Quo*B - Rem) in pseudoRemainder" << endl; else cout << "ERROR! (C*A) != (Quo*B + Rem) in pseudoRemainder" << endl; if (verbose) cout << "===============end testPseudo===========" << endl; return 1; } int testingSturm(PolyNT A) { // constructor from polynomial A.makeTailCoeffNonzero(); // No reason to have zero tail coefficients int ell = A.getTrueDegree(); assert(ell > 0); // No reason to form Sturm object for degree <=0 // (Too many special cases otherwise) PolyNT * seq = new Polynomial [ell+1]; seq[0] = A; cout << "testingSturm: seq[0] = "; seq[0].mapleDump(); seq[1] = differentiate(A); cout << "testingSturm: seq[1] = "; seq[1].mapleDump(); int i; for (i=2; i <= ell; i++) { seq[i] = seq[i-2]; seq[i].pseudoRemainder(seq[i-1]); cout << "testingSturm: seq[" << i << "] = "; seq[i].mapleDump(); if (zeroP(seq[i])) break; seq[i].primPart(); // Primitive part is important to speed // up large polynomials! However, for first 2 polymials, // we DO NOT take primitive part, because we // want to use them in Newton Iteration } int len = i; return len; } // ================================================== // Main // ================================================== int main(int argc, char** argv){ // SET INTERNAL PRECISION setDefaultRelPrecision(CORE_posInfty); // This puts defAbsPrec in control int prec = 60; // Do Sturm refinement till delta // is at most 2^{-prec} if (argc >= 2) prec = atoi(argv[1]); // if user specifies setDefaultAbsPrecision(prec); bool slowTest = false; if (argc >= 3) slowTest = true; // if user specifies precision // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(prec/3); // convert prec bits into prec/3 digits cout << "------------------------------------------------------------\n"; cout << "Relative Precision is " << defRelPrec << endl; cout << "Print Digits is " << cout.precision() << endl; cout << "Iteration Stops when delta < " << BigFloat::exp2(-prec) << endl; // cout << setprecision(defPrtDgt.asLong()); // already set above. cout << "------------------------------------------------------------\n"; //////////////////////////////////////////////////////////// // Some extra polynomials //////////////////////////////////////////////////////////// // NT cs1[] = {-2, 0, 1}; // sqrt of 2 // PolyNT P0(2, cs1); // NT cs[] = {-23, 17, 0, -4, 0, 13}; // PolyNT P(5, cs); //////////////////////////////////////////////////////////// cout <<"=============================================================\n" << "TEST 1: Polynomial of degree 16 with 6 real roots\n" << "=============================================================" << endl; NT cs[] = {-113, 0, 224, 0, 200, 0, -184, 0, -98, 0, 64, 0, 8, 0, -8, 0, 1}; PolyNT P(16, cs); // Show Polynomial: cout << "Polynomial is "; P.mapleDump(); // Show its root bound: cout << " Separation bound = " << P.sepBound() << endl; // Test One Root we know: Expr root = sqrt(1+sqrt(5-3*sqrt(1+sqrt(Expr(2))))); cout << " sqrt(1 + sqrt(5 - 3*sqrt(1 + sqrt(2)))) = " << root << endl; if (P.eval(root) == 0) cout << "The preceding is a root (CORRECT!)" << endl; else cout << "The preceding is not a root (ERROR!)" << endl; // Test all roots testNewtonSturm(P, prec, 6); cout <<"=============================================================\n" << "TEST 2 : Polynomial X^2 + 1, no roots! \n" << "=============================================================" << endl; NT cs1[] = {1, 0, 1}; PolyNT P1(2, cs1); // P1 = X^2 + 1, so has no roots! testNewtonSturm(P1, prec, 0); cout <<"=============================================================\n" << "TEST 3: Legendre Polynomial 35 X^4 - 20 X^2 + 3 \n" "=============================================================" << endl; // Legendre : 4 real roots between [-1;1] NT cs2[] = {3, 0, -30, 0, 35}; PolyNT P2(4, cs2); testNewtonSturm(P2, prec, 4); // The next test will fail in NT=int or NT=long, so we omit it. #ifndef _NT_LONG #ifndef _NT_INT cout <<"=============================================================\n" << "TEST 4: Mignotte Polynomial, P(X) = X^20 - 2(100X-1)^2 \n" << "=============================================================" << endl; // Mignotte's family of polynomials are P(X) = X^n - 2(aX-1)^2 // where n>2 and a>2 are integers. // The polynomial is irreducible, and has two real roots which // are very close to 1/a. In fact, they // they are at most 2a^{-(n+2)/2} apart. // See [Yap's Book, page 173, Exercise 6.7.3] // For our example here, n=20, a=100, we see that the two roots // are very close to 1/100 = 0.01. In fact, the 2 real roots // are within the interval 0.01 +/- 10^{-22}. This can be // seen in the output. PolyNT P3(20); P3.setCoeff(20, 1); P3.setCoeff(0, -2); P3.setCoeff(1, 400); P3.setCoeff(2, -20000); // P3 = X^20 - 2(100 X-1)^2 testNewtonSturm(P3, prec, 4); // REMARK: there is another variation used in the Frisco Suite. // They define A(X)= X^n+(aX+1)^m. They used a complex value for a, // e.g., a=100i. If we use a real value a=100 // then a polynomial like X^20 + (100 X+1)^2 has no real roots. #endif #endif cout <<"=============================================================\n" << "TEST 5: Roots of Unity, P(X) = X^99 - 1 \n" << "=============================================================" << endl; PolyNT P4(99); P4.setCoeff(99, 1); P4.setCoeff(0, -1); testNewtonSturm(P4, prec, 1); cout <<"=============================================================\n" << "TEST 6: Wilkinson Polynomial of degree 6 (roots are 1,..,6)\n" << "=============================================================" << endl; NT cs5[] = {720, -1764, 1624, -735, 175, -21, 1}; PolyNT P5(6, cs5); testNewtonSturm(P5, prec, 6); cout <<"=============================================================\n" << "TEST 6a: Perturbed Wilkinson6 (add 1 to constant coeff)\n" << " NOTE: Roots are more sensitive to perturbations in higher degree coeffs\n" << "=============================================================" << endl; NT cs6[] = {721, -1764, 1624, -735, 175, -21, 1}; PolyNT P6(6, cs6); testNewtonSturm(P6, prec, 6); // The next test will fail in NT=int or NT=long, so we omit it. #ifndef _NT_LONG #ifndef _NT_INT cout <<"=============================================================\n" << "TEST 6b: Perturbed Wilkinson6 (add 1 to coeff of X^2)\n" << "=============================================================" << endl; NT cs7[] = {720, -1764, 1625, -735, 175, -21, 1}; PolyNT P7(6, cs7); testNewtonSturm(P7, prec, 2); cout <<"=============================================================\n" << "TEST 6c: Perturbed Wilkinson6 (add 1 to coeff of X^5)\n" << "=============================================================" << endl; NT cs8[] = {720, -1764, 1624, -735, 175, -20, 1}; PolyNT P8(6, cs8); testNewtonSturm(P8, prec, 2); #endif #endif cout <<"=============================================================\n" << "TEST 7: Wilkinson Polynomial of degree 10 (roots are 1,..,10)\n" << " (THIS USED TO BE SLOW, BUT NO LONGER)\n" << "=============================================================" << endl; NT cs9[] = {3628800, -10628640, 12753576, -8409500, 3416930, -902055, 157773, -18150, 1320, -55, 1}; PolyNT P9(10, cs9); SturmNT SS9(P9); BFInterval I = SS9.isolateRoot(1); cout << " The smallest root lies in the interval [" << I.first << ", " << I.second << "]" << endl; I = SS9.isolateRoot(3); cout << " The 3rd smallest root lies in the interval [" << I.first << ", " << I.second << "]" << endl; I = SS9.isolateRoot(-1); cout << " The largest root lies in the interval [" << I.first << ", " << I.second << "]" << endl; I = SS9.isolateRoot(-3); cout << " The 3rd largest root lies in the interval" << I.first << ", " << I.second << "]" << endl; I = SS9.isolateRoot(11); cout << " The 11th smallest root lies in the interval [" << I.first << ", " << I.second << "]" << endl; cout << " It is undefined, and so prints as [1,0]" << endl; I = SS9.isolateRoot(-11); cout << " The 11th largest root lies in the interval [" << I.first << ", " << I.second << "]" << endl; cout << " It is undefined, and so prints as [1,0]" << endl; //////////////////////////////////////////////////////////// // Special Cases //////////////////////////////////////////////////////////// // multiple roots cout <<"=============================================================\n" << "SPECIAL TESTS: Polynomials with multiple roots " << endl; // to be done!!! // linear polynomial cout <<"=============================================================\n" << "SPECIAL TESTS: Linear Polynomial " << endl; NT cs11[] = {-2, 1}; PolyNT P11(1, cs11); SturmNT SS11(P11); I = SS11.isolateRoot(1); cout << " The first root of X-2 is in the interval [" << I.first << ", " << I.second << "]" << endl; #ifndef _NT_LONG #ifndef _NT_INT // Polynomial with zero tail coefficient cout <<"=============================================================\n" << "SPECIAL TESTS: Polynomial with Zero Tail Coefficients" << endl ; PolyNT P12 = P6; // P6 is perturbed Wilkinson with 6 roots P12.mulXpower(7); // now tail coeff is zero, i.e., 0 is a root assert(P12.getTrueDegree() == 7+P6.getTrueDegree()); // P12 has been transformed testNewtonSturm(P12, prec, 7); // This should have ONE MORE ROOT than P6 #endif #endif // Polynomial with roots of multiplicity greater than one cout <<"=============================================================\n" << "SPECIAL TESTS: Polynomial with roots of multiplicity greater than one " << endl ; // p(x) = x^4 - 8*x^3 + 8*x^2 + 32*x + 16 //Roots are roughly -0.843 and 4.828 each of multiplicity 2 NT cs14[]={16, 32, 8, -8, 1}; PolyNT P14(4, cs14); testNewtonSturm(P14, prec, 2); //////////////////////////////////////////////////////////// // ANOTHER SPECIAL TEST: A(X)= X^3 + 3X^2 = (X+3)X^2 NT cs13[] = {0, 0, 3, 1}; PolyNT P13(3,cs13); SturmNT SS13(P13); //////////////////////////////////////////////////////////// cout <<"=============================================================\n" << " END TEST \n" << endl; #if defined _NT_INT cout << "Number type NT = int" << endl; #elif defined _NT_LONG cout << "Number type NT = long" << endl; #elif defined _NT_RAT cout << "Number type NT = BigRat" << endl; #elif defined _NT_EXP cout << "Number type NT = Expr" << endl; #elif defined _NT_BF cout << "Number type NT = BigFloat" << endl; #else cout << "Number type NT = BigInt" << endl; #endif cout <<"=============================================================" << endl; return 0; }// main core++-1.7/progs/poly/tWilk20.cpp0100644000175000001440000000603010145164412016043 0ustar joachimusers/* ************************************** File: tWilkinson.cpp Description: Usage: % tSturm [opt-prec=100] [if-more-test-desired] where [opt-prec] is the optional precision bounding the bit size of the isolating intervals. It there is another argument (if-more-test-desired), then some slow polynomial evaluations will be invoked. Author: Chee Yap, Sylvain Pion, Vikram Sharma Date: July 20, 2002 Since Core Library v1.4 $Id: tWilk20.cpp,v 1.6 2004/11/12 16:47:06 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 4 #endif #include "CORE.h" using std::cout; using std::ios; using std::endl; // ================================================== // Setup // ================================================== // typedef int NT; typedef BigInt NT; typedef Polynomial PolyNT; typedef Sturm SturmNT; // Polynomial tester: P is polynomial to be tested // -- THIS is a Kludge to get around "Poly" versus "Polynomial" // void testSturm(PolyNT &P, int prec, int n = -1) // { // testSturm(P, prec, n); // } // ================================================== // Main // ================================================== int main(int argc, char** argv){ // SET INTERNAL PRECISION setDefaultRelPrecision(CORE_posInfty); // This puts defAbsPrec in control int prec = 100; // Do Sturm refinement till delta // is at most 2^{-prec} if (argc >= 2) prec = atoi(argv[1]); // if user specifies setDefaultAbsPrecision(prec); bool slowTest = false; if (argc >= 3) slowTest = true; // if user specifies precision // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(prec/3); // convert prec bits into prec/3 digits cout << "------------------------------------------------------------\n"; cout << "Relative Precision is " << defRelPrec << endl; cout << "Print Digits is " << cout.precision() << endl; cout << "Iteration Stops when delta < " << BigFloat::exp2(-prec) << endl; // cout << setprecision(defPrtDgt.asLong()); // already set above. cout << "------------------------------------------------------------\n"; cout <<"=============================================================\n" << "TEST 6: Wilkinson Polynomial of degree 10 (roots are 1,..,10)\n" << " WARNING: VERY SLOW\n" << "=============================================================" << endl; const char* s20[] = {"2432902008176640000", "-8752948036761600000", "13803759753640704000", "-12870931245150988800", "8037811822645051776", "-3599979517947607200", "1206647803780373360", "-311333643161390640", "63030812099294896", "-10142299865511450", "1307535010540395", "-135585182899530", "11310276995381", "-756111184500", "40171771630", "-1672280820", "53327946", "-1256850", "20615", "-210", "1"}; PolyNT P20(20, s20); P20.dump("P20="); testNewtonSturm(P20, prec, 20); return 0; }// main core++-1.7/progs/poly/tWilk20deriv.cpp0100644000175000001440000000564710145164412017112 0ustar joachimusers/* ************************************** File: tWilk20deriv.cpp Description: Usage: % tWilk20deriv [opt-prec=100] where [opt-prec] is the optional precision bounding the bit size of the isolating intervals. Let P(X) be the Wilkinson Polynomial of degree 20, and Q(X) = dP/dX. This program isolates roots of Q(X). An interesting feature of Q(X) is that the root between 10 and 11 is EXACTLY 10.5. Our Sturm-Newton Refinement will detect this correctly. Author: Vikram Sharma, Chee Yap Date: July 20, 2002 Since Core Library v1.4 $Id: tWilk20deriv.cpp,v 1.6 2004/11/12 16:47:06 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 4 #endif #include "CORE/CORE.h" using namespace std; // ================================================== // Setup // ================================================== // typedef int NT; typedef BigInt NT; typedef Polynomial PolyNT; typedef Sturm SturmNT; // ================================================== // Main // ================================================== int main(int argc, char** argv){ // SET INTERNAL PRECISION setDefaultRelPrecision(CORE_posInfty); // This puts defAbsPrec in control int prec = 100; // Do Sturm refinement till delta // is at most 2^{-prec} if (argc >= 2) prec = atoi(argv[1]); // if user specifies setDefaultAbsPrecision(prec); // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(prec/3); // convert prec bits into prec/3 digits cout << "------------------------------------------------------------\n"; cout << "Relative Precision is " << defRelPrec << endl; cout << "Print Digits is " << cout.precision() << endl; cout << "Iteration Stops when delta < " << BigFloat::exp2(-prec) << endl; // cout << setprecision(defPrtDgt.asLong()); // already set above. cout << "------------------------------------------------------------\n"; cout <<"=============================================================\n" << "Isolating the roots of the derivative of the Wilkinson Polynomial of degree 20\n" << "=============================================================" << endl; char* s20[] = {"2432902008176640000", "-8752948036761600000", "13803759753640704000", "-12870931245150988800", "8037811822645051776", "-3599979517947607200", "1206647803780373360", "-311333643161390640", "63030812099294896", "-10142299865511450", "1307535010540395", "-135585182899530", "11310276995381", "-756111184500", "40171771630", "-1672280820", "53327946", "-1256850", "20615", "-210", "1"}; NT cs20[21]; for(int i=0; i<21; i++) { cs20[i] = s20[i]; } PolyNT P20(20, cs20); PolyNT P = differentiate(P20); P.dump("Differentiation of Wilk20 = "); testNewtonSturm(P, prec, 19); return 0; }// main core++-1.7/progs/poly/timeNewton.cpp0100644000175000001440000000677410130274603016755 0ustar joachimusers/* ************************************** File: timeNewton.cpp Investigates the effects of relative error in computing Newton iterates on speed of convergence. More precisely, when we compute the Newton iterate N(x) = x - f(x)/f'(x), to what relative precision should f(x)/f'(x) be computed? This precision, if unspecified, is given by the global variable defBFdivRelPrec = 30; // default value Call this the (relative) ``precision for computing Newton iterates''. Usage: % timeNewton [N = 2] [rprec = 30] [acc = 2000] where [N] is value whose square-root is to be taken [rprec] is the precision for computing Newton iterates [acc] is the precision (in number of bits) of the computation. E.g., % timeNewton 7 100 2000 Author: Chee, Vikram, Zilin Date: Sep 28, 2004 Since Core Library v1.7 $Id: timeNewton.cpp,v 1.3 2004/10/04 16:25:39 exact Exp $ ************************************** */ #include #include "CORE/Timer.h" #include "CORE/CORE.h" using namespace std; // ================================================== // Main // ================================================== // Default number type is NT=BigInt #if defined _NT_INT typedef int NT; #elif defined _NT_LON typedef long NT; #elif defined _NT_EXP typedef Expr NT; #elif defined _NT_RAT typedef BigRat NT; #elif defined _NT_BF typedef BigFloat NT; #elif defined _NT_BINT typedef BigInt NT; #else typedef BigInt NT; #endif int main(int argc, char** argv){ //============================================================ // Process Command Line Arguments //============================================================ // Initialize file names for storing results string fname1 = "outputs/sqrt"; string fname2 = "outputs/cuberoot"; // Initialize N int N; if (argc >= 2) { N = atoi(argv[1]); fname1 += argv[1]; fname2 += argv[1]; fname1 += "."; fname2 += "."; // assigned value } else { N = 2; fname1 += "2."; fname2 += "2."; // default value } // Initialize the relative precision for Newton iterates defBFdivRelPrec = 30; // 30 is system default in Core Library if (argc >= 3) defBFdivRelPrec = atoi(argv[2]); // Set Absolute Precision prec int prec; if (argc >= 4) { prec = atoi(argv[3]); // If user specifies [prec] } else { // default absolute precision prec = 2000; } // SET OUTPUT PRECISION cout.setf(ios::scientific, ios::floatfield); // choose scientific notation cout.precision(11); // default Print Digits = 11 cout << "--------------------------------------------------------\n"; cout << "Timing Test using relative iterate precision of " << defBFdivRelPrec << "\n Compute Cube Root of N=" << N << " to " << prec << " absolute bits" << endl; cout << "--------------------------------------------------------\n"; //============================================================ // Step 1: compute cuberoot(N) to prec absolute bits: //============================================================ NT cs2[] = {-2, 0, 0, 1}; // coefficients of Polynomial Sturm NP (Polynomial(3, cs2)); // Sturm object NP.seq[0].setCoeff(0, -N); // make -N the constant coefficient BigFloat del; BigFloat val; Timer t; t.start(); val = NP.newtonIterE(prec, N, del); // compute to sqrt(N) to prec absolute bits t.stop(); cout << "timing: " << t.getSeconds() << endl; return 0; }// main core++-1.7/progs/poly/tt.cpp0100644000175000001440000000221310144470574015245 0ustar joachimusers/* ************************************** **************************************/ #define CORE_LEVEL 3 #include "CORE/CORE.h" using namespace CORE; using namespace std; typedef BigInt NT; typedef Expr CoNT; //typedef BigInt CoNT; int main(int argc , char ** argv) { // Set the polynomial: // p(x) = x3 + 1 // Compute its roots. Polynomial p("x^3 + 1"); Sturm s(p); BFInterval I(-2, 2); s.dump("Sturm sequence"); const int n_roots = s.numberOfRoots(); std::vector roots (n_roots); int i; cout << "Number of roots are " << n_roots << endl; std::cout << "The roots are:" << std::endl; for (i = 0; i < n_roots; i++) { roots[i] = rootOf(p, i + 1); std::cout << " " << i + 1 << ") " << roots[i] << std::endl; } BFInterval J = s.newtonRefine(I,200); cout << setprecision(600); cout << "J = " << J.first << ", " << J.second << endl; if (Expr(J.first) == Expr(J.second)) cout << "Equal!" << endl; else cout << "Not equal!" << endl; } // ================================================== // End of tPoly // ================================================== core++-1.7/progs/poly/wein.cpp0100644000175000001440000000550710143053426015561 0ustar joachimusers/* Date: Wed, 20 Oct 2004 09:11:17 +0200 (IST) From: Ron Wein To: Zilin Du , Chee Yap cc: Andreas Fabri , , , Efraim Fogel Subject: Re: A Suspected Bug in CORE Dear Chee, Zilin, We installed the latest version of CORE here, but the same problem re-occurs. Actually, I see now that the problem is now also with the call to numberOfRoots(), as we do not get to step (3) due to the following assertion violation: CORE/BigFloat.h:214: int CORE::BigFloat::sign() const: Assertion `!(isZeroIn())' failed. If I set n_roots = 1 (and do not call numberOfRoots()), I still get the same assertion violation when calling rootOf() in step (3): */ #include "CORE/CORE.h" //typedef CORE::BigRat CfNT; typedef CORE::Expr CfNT; // The same happens when defining CORE::BigRat as CfNT ... typedef CORE::Expr CoNT; int main() { // (1) Set the polynomial: // p(x) = x^3 + 1 const int deg = 4; std::vector coeffs(deg + 1); coeffs[0] = CfNT("1/6"); coeffs[1] = CfNT("0"); coeffs[2] = CfNT("-5/6"); coeffs[3] = CfNT(0); coeffs[4] = CfNT(1); // (2) Compute its number of real roots. CORE::Polynomial p (coeffs); CORE::Sturm sturm (p); CORE::Polynomial pp("6x^4 -5 x^2 +1"); CORE::Sturm sturmm (pp); // const int n_roots = 1;//sturm.numberOfRoots(); const int n_roots = sturm.numberOfRoots(); const int nn_roots = sturmm.numberOfRoots(); std::cout << "polynomial p should have " << n_roots << " real root(s)." << std::endl; std::cout << "polynomial pp should have " << nn_roots << " real root(s)." << std::endl; // (3) Compute the roots. std::vector roots (n_roots); std::vector rroots (nn_roots); int i; std::cout << setprecision(100); std::cout << "The roots of p are:" << std::endl; for (i = 0; i < n_roots; i++) { roots[i] = rootOf(p, i + 1); std::cout << " " << i + 1 << ") " << roots[i] << std::endl; } std::cout << "The roots of pp are:" << std::endl; for (i = 0; i < nn_roots; i++) { rroots[i] = rootOf(pp, i + 1); std::cout << " " << i + 1 << ") " << rroots[i] << std::endl; } return (0); } /* By the way, I managed to pass stage (2) successfully but fail in step (3) when I used BigRat as CfNT and tried the polynomial (I was very glad to find out that I can now use rootOf() on polynomials of rational numbers as well): p(x) = x^4 - (5/6)x^2 + (1/6) Best regards, Ron > Dear Andreas, > Is this a new problem? Can you please send us a file > which reproduces the bug? > > Thanks, Chee > > Andreas Fabri wrote: > */ core++-1.7/progs/poly/inputs/0040755000175000001440000000000010147210064015426 5ustar joachimuserscore++-1.7/progs/poly/inputs/even160100644000175000001440000000117707522374211016470 0ustar joachimusers# Even Polynomial of degree 16 # # This polynomial has no odd degree terms: # # -113 + (224)*x^2 + (200)*x^4 + (-184)*x^6 + (-98)*x^8 # + (64)*x^10 + (8)*x^12 + (-8)*x^14 + (1)*x^16 Poly(16) -113 0 224 0 200 0 -184 0 -98 0 64 0 8 0 -8 0 1 # # It's Cauchy separation bound is 0.10540225151e-49 # # It has 6 real roots, as isolated using Sturm: # # Root in [-.35156250000e+1 ; -.17578125000e+1] # Root in [-.17578125000e+1 ; -.87890625000] # Root in [-.87890625000 ; 0] # Root in [0 ; .87890625000] # Root in [.87890625000 ; .17578125000e+1] # Root in [.17578125000e+1 ; .35156250000e+1] # core++-1.7/progs/poly/inputs/mignotte0100644000175000001440000000114507522374212017206 0ustar joachimusers# Mignotte described the the family of polynomials # # M_n(X) = X^n - 2(a*X -1)^2 # = X^n - 2a^2.X^2 + 4a.X - 2. # # for integers n >= 3, and a >= 3. # # These polynomials are irreducible and has two real roots close to 1/a. # Their separation are at most # # 2.a^{-(n+2)/2} # # E.g., when a=2, separation is at most 2^{-n/2}, and M_n(X) = X^n - 8X^2 + 8X -2. # # When n=3, a=3, # M_3(X) = X^3 - 18.X^2 + 12.X - 2. # and separation is at most 2^{-5}. # Poly(3) 1 -18 12 -2 # # When a=2, n=10 # M_n(X) = X^20 - 8.X^2 + 8.X - 2. # and separation is at most 2^{-5}. Poly(10) 1 0 0 0 0 0 0 0 -8 8 -2 core++-1.7/progs/poly/outputs/0040755000175000001440000000000010147210064015627 5ustar joachimuserscore++-1.7/progs/poly/outputs/.empty0100644000175000001440000000000007524554437016775 0ustar joachimuserscore++-1.7/progs/poly/outputs/wilkinson200100644000175000001440000000321707522371130017736 0ustar joachimusersCore Library Version 1.5 ======================== The Coefficients of the Wilkinson Polynomial are: c0 = 2432902008176640000, c1 = -8752948036761600000, c2 = 13803759753640704000, -12870931245150988800, 8037811822645051776, -3599979517947607200, 1206647803780373360, -311333643161390640, 63030812099294896, -10142299865511450, 1307535010540395, -135585182899530, 11310276995381, -756111184500, 40171771630, -1672280820, 53327946, -1256850, 20615, c19 = -210, c20 = 1. Here is the result of isolating the roots using Sturm::isolateRoots(..): Number of roots : 20 Root in [0 ; .14966066313e+1] Root in [.14966066313e+1 ; .29932132627e+1] Root in [.29932132627e+1 ; .37415165783e+1] Root in [.37415165783e+1 ; .44898198940e+1] Root in [.44898198940e+1 ; .59864265253e+1] Root in [.59864265253e+1 ; .67347298410e+1] Root in [.67347298410e+1 ; .74830331567e+1] Root in [.74830331567e+1 ; .89796397880e+1] Root in [.89796397880e+1 ; .97279431037e+1] Root in [.97279431037e+1 ; .10476246419e+2] Root in [.10476246419e+2 ; .11972853051e+2] Root in [.11972853051e+2 ; .12721156366e+2] Root in [.12721156366e+2 ; .13469459682e+2] Root in [.13469459682e+2 ; .14966066313e+2] Root in [.14966066313e+2 ; .15714369629e+2] Root in [.15714369629e+2 ; .16462672945e+2] Root in [.16462672945e+2 ; .17959279576e+2] Root in [.17959279576e+2 ; .18707582892e+2] Root in [.18707582892e+2 ; .19455886207e+2] Root in [.19455886207e+2 ; .20952492839e+2] core++-1.7/progs/prover/0040755000175000001440000000000010147210064014436 5ustar joachimuserscore++-1.7/progs/prover/Makefile0100644000175000001440000000366510144502435016110 0ustar joachimusers# Makefile for prover # # Core Library, $Id: Makefile,v 1.10 2004/11/10 21:16:13 exact Exp $ # Choose the VARiant library: # VAR= include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= prover_level3 MORE_TARGETS= prover_level1 default: $(TARGETS) more: $(MORE_TARGETS) test: $(TARGETS) ./prover_level3 inputs/pappus 10 moretest: $(MORE_TARGETS) $(TARGETS) test_false ./prover_level1 inputs/pappus 10 ./prover_level3 inputs/simson 2 ./prover_level1 inputs/simson 2 ./prover_level3 inputs/simsonBad 3 test_false: $(TARGETS) ./prover_level3 inputs/pappusBad 5 ./prover_level1 inputs/pappusBad 5 test_long: $(TARGETS) ./prover_level3 inputs/pappus 10 ./prover_level3 inputs/simsonBad 3 ./prover_level3 inputs/pascal 2 ./prover_level3 inputs/butterfly 2 # ONLY TRUE THEOREMS, UNDER LEVEL 3 ARE TESTED HERE: test_true: $(TARGETS) ./prover_level3 inputs/simson 2 ./prover_level3 inputs/pappus 10 ./prover_level3 inputs/butterfly 2 %_level1: %_level1.o terms_level1.o ${CXX} $(LDFLAGS) $? $(CORE_LIB) -o $@ %_level3: %_level3.o terms_level3.o ${CXX} $(LDFLAGS) $? $(CORE_LIB) -o $@ #================================================= # Rules for CORE_LEVEL 1 and CORE_LEVEL 3 #================================================= %_level1.o: %.cpp ${CXX} -c -DCORE_LEVEL=1 $(CXXFLAGS) $(CORE_INC) $< -o $@ %_level3.o: %.cpp ${CXX} -c -DCORE_LEVEL=3 $(CXXFLAGS) $(CORE_INC) $< -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/prover/README0100644000175000001440000001410207522244503015321 0ustar joachimusers************************************************************ file: README for prover author: Daniela Tulone (tulone@cs.nyu.edu) Chee Yap (yap@cs.nyu.edu) Chen Li (chenli@cs.nyu.edu) Core Library $Id: README,v 1.5 2002/08/01 14:44:19 exact Exp $ ************************************************************ Files in this directory ----------------------- README -- this file Makefile prover.cc -- main program prover2.cc -- verbose output version prover.h terms.h inputs/ -- directory with sample theorems and non-theorems What prover does ---------------- The program "prover" proves the validity of a given geometric conjecture, probabilistically. Such a conjecture has two parts: hypothesis (H) and thesis (T). (H) is represented by a system of polynomial equations in parameters (u_1, u_2, ..., u_m) and dependent variables (x_1, x_2, ..., x_n). [Terminology: parameters means "independent variables", and "variables" cover both dependent and independent variables.] The thesis (T) is a polynomial in these variables. The conjecture is true if the vanishing of (H) implies the vanishing of (T). Because the geometric conjecture is about a "zero-dimensional" ruler-and-compass construction, we can replace the dependent variables by radical expressions involving only the parameters. By definition, a "radical expression" is an algebraic expression involving variables, rational constants, the 4 arithmetic operations and square-roots. Our method of proving a theorem is to choose values for the parameters randomly in a specific S set of integers, compute numerically a set of corresponding dependent variables, and check if the thesis polynomial is satisfied by these numerical values. If the size of S is large enough, then the theory tells us that the probability of the conjecture being false and our random test failing to detect this is <0.5 (say). Connection Between This Prover and One Described in our Paper ------------------------------------------------------------- ``Randomized Zero Testing of Radical Expressions and Elementary Geometry Theorem Proving'', by D. Tulone, C. Yap and C. Li, Proc. ADG'00, Zurich Sep 25-27, 2000 (Lecture Notes in Comp.Sci. and A.I., No. 2061, Springer 2001) The above paper describes the underlying theory. The timings reported there are based on CORE 1.3. But more importantly, it used a specially modified version of the Expr class to compute a sharp upper bound on the "rational degree" of a radical expression. This ability is not found in the Expr class of the normal Core Library. Therefore, in the absence of such ability, the prover in this demo uses a crude estimate of the "rational degree", with the result that the prover here is slower than it need to be. This crude bound is also described in the paper, based only on counting the number of operations instead of taking the structure of the dag into account. In the Core 1.3, it was not feasible to verify Pascal's theorem using this crude estimage, even for c=1. In CORE 1.5 (Aug 2002), this is no longer a problem. How to run ---------- % prover N where N is the number of tests that we want to perform. This gives an error probability of at most 2^{-N}. The prover prints in the standard output the following information: -- The cardinality of the test set S -- The algebraic formulation of the theorem -- For each of the N tests, the random values chosen for the parameters and the corresponding values computed for the dependent variables. -- Whether the conjecture is true (probably) or false (surely) -- Auxilliary information related to failed examples -- when the degeneracy conditions are not met (e.g., division by 0, square-root of negative numbers, etc) Actually, "prover" is linked to "prover_level_3"; we also compile the level 1 version, "prover_level_1". Sample Input Files ------------------ Here are some examples of theorems in the inputs subdirectory: input/pappus input/simson input/pascal (slow!) The following are reducible theorems: inputs/butterfly We also include corrupted versions of these theorems (input/pappusBad, etc). The corruptions are always "minor" (single change of sign, increment of a coefficient, etc). The point is the our prover will detect this instantly. See the README file under the "inputs" subdirectory for a description of these theorems. Input File Format ----------------- Comments may be inserted in the input files: the character '#' and any following characters in the same line are discarded. The first row of an input file contains 2 integers: m, the number of parameters, n, the number of (dependent) variables. The parameters are indexed 0 to m-1, and the dependent variables are indexed m to n+m-1. We also assume that the number of polynomials in the hypothesis is equal to n. We index the hypothesis polynomials from 0 to n-1. The rest of the polynomials form the thesis and these are numbered from n and upwards. [This version does not treat non-degeneracy condition] The remaining rows in the input file define the terms of the input polynomials (each polynomial is viewed as a sum of terms). We exploit the fact that each term is constant, linear or quadratic in the variables. Each row has 5 integers, say, index coef expo var1 var2 where - index is the index of the polynomial that the term belongs to - coef is the coefficent of the term - expo is the exponent of var1 (so expo = 0, 1 or 2) - var1 is the index of one of the variables - var2 is the index of the other variable (if any). If there are no other variables, var2 = -1. Note that if var2 is not -1, then expo must be 1 (so that the exponent of var2 is also 1, implicitly) For further information please see terms.h Example: assume the parameters are u[0], u[1] and the dependent variables are x[0], x[1],... 1 1 0 2 2 0 -1 ---------> 2.u[0] 0 3 0 -1 -1 ---------> 3 0 4 1 2 -1 ---------> 4.x[0] 0 1 1 1 3 ---------> u[1].x[1] Additional Comments ------------------- We prove the conjecture over the reals. If we get complex values, we discard the example and output "ComputeConfiguration FAILED" as well as the reason (e.g. delta < 0) core++-1.7/progs/prover/prover.cpp0100644000175000001440000004175610130274251016471 0ustar joachimusers/*************************************************** file: prover2.cc -- from prover.cc, but without all the outputs to improve timing. Prover uses a randomized approach to testing if a geometric theorem about ruler-and-compass construction is true. It uses a generalization of Schwartz's lemma (generalized to radical expressions). author: Daniela Tulone (August, 1999) Since CORE Library version 1.2 $Id: prover.cpp,v 1.7 2004/10/04 16:22:01 exact Exp $ ***************************************************/ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include #include #include "CORE.h" #include "prover.h" #include "terms.h" using namespace std; /* read input from file and initialize the data structure: hypothesis system, polynomial thesis and the parameters m, n, N */ Prover::Prover(char *filename, int numb){ FILE *fp; if ((fp = fopen(filename, "r")) == NULL){ perror("cannot open input file"); exit(1); } N = numb; char* s; int read_parameters = 1; s = (char *) malloc (500); temp = -1; Term* last = NULL; while(!feof(fp)){ fgets(s, 500, fp); if (!feof(fp)){ if (read_parameters){ if (parseParameters(s)){ read_parameters = 0; if ((n > 0) || (m > 0 )){ limit = m; //Term *last = NULL; f = new Term*[n]; } else{ perror("Please check the number of parameters and dependent variables."); exit(1); } } } else last = parseString(s, last); } } fclose(fp); /* cout << "\n"; cout << "Hypotheses System: \n"; cout << "\n"; writeInput(); cout << "\n"; cout << "Polynomial Thesis: \n"; cout << "\n"; g->write(m); cout << "\n"; */ computeBound(); degrees = new int[n*3]; for (int i=0; i < n; i++){ degrees[3*i] = 0; degrees[3*i+1] = 0; degrees[3*i+2] = 0; } int mn = m + n; values = new double[mn]; resetValues(); } int Prover::parseParameters(char* s){ char* tmp; tmp = (char *) malloc (5); int i, last_char, par, var; int len = strlen(s); last_char = var = 0; par = 1; int j = 0; for (i = 0; i < len; i++){ if (s[i] == '#'){ break; } else if (s[i] != ' '){ if (!last_char) last_char = 1; tmp[j++] = s[i]; } else if (((s[i] == ' ')||(s[i] == '\0'))&&(last_char)){ tmp[j] = '\0'; if (par){ m = atoi(tmp); par = 0; var = 1; } else if (var){ n = atoi(tmp); var = 0; return 1; } tmp = NULL; tmp = (char *) malloc (20); last_char = 0; j = 0; } } return 0; } Term* Prover::parseString(char* s, Term* last){ char* tmp; tmp = (char *) malloc (20); int i, last_char, first, second, third, fourth, fifth; int index=0, coeff, expo=0, ind1=0, ind2=0; int len = strlen(s); first = 1; second = third = fourth = fifth = coeff = 0; last_char = 0; int j = 0; for (i = 0; i < len; i++){ if (s[i] == '#') break; else if (s[i] != ' '){ if (!last_char) last_char = 1; tmp[j++] = s[i]; } else if (((s[i] == ' ')||(s[i] == '\0'))&&(last_char)){ tmp[j] = '\0'; if (first){ index = atoi(tmp); first = 0; second = 1; } else if (second){ coeff = atoi(tmp); second = 0; third = 1; } else if (third){ expo = atoi(tmp); third = 0; fourth = 1; } else if (fourth){ ind1 = atoi(tmp); fourth = 0; fifth = 1; } else if (fifth){ ind2 = atoi(tmp); fifth = 0; } tmp = NULL; tmp = (char *) malloc (20); last_char = 0; j = 0; } } if (fifth){ ind2 = atoi(tmp); fifth = 0; } if (coeff == 0) return last; checkInput(coeff, expo, ind1, ind2, index, m+n); if (index != temp){ if (index < n){ f[index] = new Term(coeff, expo, ind1, ind2); last = f[index]; } else{ g = new Term(coeff, expo, ind1, ind2); last = g; } } else if (last && (index == temp)){ last->setNextTerm(new Term(coeff, expo, ind1, ind2)); last = last->getNextTerm(); } else{ perror("Please check the input file. DDDDDDDDDDDDDDDDDDDDD"); exit(1); } temp = index; return last; } Prover::~Prover(){ for (int i = 0; i < n; i++) delete[] f[i]; delete[] f; delete[] g; delete[] values; delete[] degrees; } int Prover::VerifyByExamples(){ if (initialization()){ int seed = time(0); srand(seed); int tests = 0; while(tests < N){ /* cout << "\n"; cout << "Example n."<< tests+1 << endl; */ generateExample(); if (computeConfiguration()){ if (!vanishThesis()){ return 0; } tests ++; } else{ /* cout << "The following example has been discarded \n"; */ displayVar(); } resetValues(); } return 1; } else{ cout << "The problem is not defined properly, please check the parameters" << endl; return 0; } } void Prover::checkInput(double coeff, int expo, int ind1, int ind2, int index, int i){ if ((coeff == 0) || (expo < 0) || (expo > 2) || (ind1 < -1) || (ind1 >= i) || (ind2 < -1) || (ind2 >= i)){ cout << "Error in input file: equation n. " << index; perror("Please correct your input file "); exit(3); } } void Prover::writeInput(){ for (int i= 0; i < n; i++){ cout << "h[" << i << "] = "; f[i]->write(m); } } void Prover::writeDegrees(){ cout << "\n"; cout << " Matrix Degrees \n"; for (int i = 0; i < n; i++){ cout << "Row " << i << " : " << degrees[3*i] << " " << degrees[3*i+1] << " " << degrees[3*i+2] << endl; } } int Prover::initialization(){ if (!f || !g) return 0; computeDegrees(); if ((! degrees)|| (!validMatrix())) return 0; if (bound < 1) return 0; else return 1; } void Prover::computeDegrees(){ int i; for (i = 0; i < n; i++){ Term* tmp = f[i]; int ind = 3*i+1; while (tmp){ int expo = tmp->getExpo(); if ( expo != 0){ if (tmp->singleInd()){ if ((i > 0) && tmp->indVar(i-1, m) && valLeftVar(i) && (expo > degrees[ind-1])){ degrees[ind-1] = expo; } if (tmp->indVar(i,m) && (expo > degrees[ind])){ degrees[ind] = expo; } if (i < (n-1) && tmp->indVar(i+1,m) && (expo > degrees[ind+1])){ degrees[ind+1] = expo; } } else{ if((i > 0) && tmp->indVar(i-1, m) && valLeftVar(i) && (expo > degrees[ind-1])){ degrees[ind-1] = expo; } if(tmp->indVar(i,m) && (expo > degrees[ind])){ degrees[ind] = expo; } if(i < (n-1) && tmp->indVar(i+1, m) && (expo > degrees[ind+1])){ degrees[ind+1] = expo; } } } tmp = tmp->getNextTerm(); } } } int Prover::valLeftVar(int i){ if (i < 1){ perror(" error in yhe algoritm ComputeMatrix"); exit(4); return 0; } else if (i < 2) return 1; else{ if ((degrees[3*(i-1)+1] != 0) && (degrees[3*(i-2)+2] != 0)) return 0; else return 1; } } /* The following bound is related with Schwartz's extension */ void Prover::computeBound(){ bound = (int)pow(float(8), n); // cout << "The parameters are randomly chosen in [ " << -bound << ", " << bound << " ]" << endl; } int Prover::randSign(){ int a = rand(); if ((a % 2) == 0) return 1; else return -1; } int Prover::random(){ int a = rand() * randSign(); return (a % bound); } int Prover::validMatrix(){ int i; // the degree can be at most 2 for (i = 0; i < 3*n; i++) if ((degrees[i] != 0) && (degrees[i] != 1) && (degrees[i] != 2)) return 0; // we can have at least one element non-zero 2nd column, and at most two for (i = 0; i < n; i++){ if (!(degrees[3*i] == 0) && !(degrees[3*i+1] == 0) && !(degrees[3*i+2] == 0)) return 0; if (degrees[3*i+1] == 0) return 0; } return 1; } void Prover::resetValues(){ for (int i=0; i < n+m; i++) values[i] = 0; } void Prover::generateExample(){ int i; for (i = 0; i < m; i++) values[i] = random(); } int Prover::computeConfiguration(){ int ind = 0; while (ind < n){ if ((degrees[3*ind] == 0)&&(degrees[3*ind+2] == 0)){ if (degrees[3*ind+1] == 1){ if (!solveLinearEq(f[ind], ind)) return 0; } else if (degrees[3*ind+1] == 2){ if (!solveQuadrEq(f[ind], ind)) return 0; } else{ cout << "ComputeConfiguration Error!! row " << ind << " degree " << degrees[3*ind+1] << " \n"; return 0; } ind++; limit ++; } else{ int ind2 = getOtherVar(ind); if (ind2 == -2 ){ cout << "ComputeConfig Error in degrees \n"; return 0; } else{ if (!computeMiniSystem(ind, ind2)) return 0; } ind += 2; limit += 2; } } // cout << " \n"; // displayVar(); return 1; } void Prover::displayVar(){ int i; cout << "Random Parameters: "; for (i = 0; i < m; i++) cout << values[i] << " "; cout << "\n"; cout << "Dependent Variables: "; for (i = m; i < m+n; i++) cout << values[i] << " "; cout << endl; } int Prover::getOtherVar(int ind){ if (((degrees[3*ind] != 0) && (degrees[3*ind+2] != 0)) || ((degrees[3*ind] == 0) && (degrees[3*ind+2] == 0))) return -2; else if (degrees[3*ind] == 0) return ind+1; else return ind-1; } int Prover::computeMiniSystem(int ind, int ind2){ int pivot1 = 3*ind+1; int pivot2 = 3*ind2+1; int d = ind2 - ind; if ((degrees[pivot1] == 2)&&(degrees[pivot1+d] == 2)&&(degrees[pivot2] == 2)&&(degrees[pivot2-d] == 2)){ Term* tmp; tmp = subctract(f[ind], f[ind2], ind, ind2); if (!solveQuadr(f[ind], tmp, ind, ind2)) return 0; } else if((degrees[pivot1] == 2)&&(degrees[pivot1+d] == 2)&&(degrees[pivot2] < 2)&&(degrees[pivot2-d] < 2)){ if (!solveQuadr(f[ind], f[ind2], ind, ind2)) return 0; } else if ((degrees[pivot1] < 2)&&(degrees[pivot1+d] < 2)&&(degrees[pivot2] == 2)&&(degrees[pivot2-d] == 2)){ if (!solveQuadr(f[ind2], f[ind], ind2, ind)) return 0; } else if ((degrees[pivot1] < 2)&&(degrees[pivot1+d] < 2)&&(degrees[pivot2] < 2)&&(degrees[pivot2-d] < 2)){ if (!solveKramer(f[ind], f[ind2], ind, ind2)) return 0; } else{ cout << "Error in compute MiniSystem! " << degrees[pivot1] << " " << degrees[pivot1+d] << " " << degrees[pivot2] << " " << degrees[pivot2-d] << endl; return 0; } return 1; } void Prover::getCoeffABC(Term *t1, double *a, double *b, double *c, int i, int j){ while(t1){ int ind; int expo = t1->getExpo(); double coeff = t1->getCoeff(); if (t1->indVar(i, m) && (expo == 1)){ ind = t1->getOtherInd(i, m); if (ind == -1) *a += coeff; else if (ind == -2){ perror("getCoeffABC index = -2 "); exit(2); } else if (ind < limit) *a += coeff * values[ind]; else{ perror(" getCoeffABC index to compute "); exit(2); } } else if (t1->indVar(j, m) && (expo == 1)){ ind = t1->getOtherInd(j, m); if (ind == -1) *b += coeff; else if (ind == -2){ perror(" getCoeffABC index = -2 "); exit(2); } else if (ind < limit) *b += coeff * values[ind]; else{ perror(" getCoeffABC index to compute "); exit(2); } } else if (expo == 0) *c += coeff; else if ((expo > 0)&&((t1->getInd1() < limit)&&(t1->getInd2() < limit))) *c += computeTerm(t1); t1 = t1->getNextTerm(); } } int Prover::solveKramer(Term* t1, Term* t2, int i, int j){ double a1, b1, c1, a2, b2, c2, delta; a1=b1=c1=a2=b2=c2=delta=0; getCoeffABC(t1, &a1, &b1, &c1, i, j); getCoeffABC(t2, &a2, &b2, &c2, i, j); if (c1 != 0) c1 = -c1; if (c2 != 0) c2 = -c2; delta = a1*b2 - a2*b1; if (delta !=0){ values[i+m] = (c1*b2 - b1*c2) / delta; values[j+m] = (a1*c2 - a2*c1) / delta; return 1; } /* delta = 0 */ else{ cout << "SolveKramer: Error delta = 0, lost one equation \n"; return 0; } } void Prover::getQuadrCoeff(Term* t, double *a, double *b, double *c, int i){ while(t){ int expo = t->getExpo(); double coeff = t->getCoeff(); if (t->indVar(i, m) && (expo == 2)){ *a += coeff; } else if (t->indVar(i, m) && (expo == 1)){ int ind = t->getOtherInd(i, m); if (ind == -1) *b += coeff; else if (ind == -2){ perror(" solveQuadraticEquation index = -2 "); exit(2); } else if (ind < limit) *b += coeff * values[ind]; else{ perror(" solveQuadraticEquation index to be computed "); exit(2); } } else if (expo == 0){ *c += coeff; } else if ((expo > 0)&&((t->getInd1() < limit)&&(t->getInd2() < limit))){ *c += computeTerm(t); } t = t->getNextTerm(); } } int Prover::solveQuadr(Term* t1, Term* t2, int i, int j){ double a1, b1, c1, a2, b2, c2; Term *t; a1=b1=c1=a2=b2=c2=0; getCoeffABC(t1, &a1, &b1, &c1, i, j); getCoeffABC(t2, &a2, &b2, &c2, i, j); t = new Term((pow(b2, 2) + pow(a2, 2)), 2, j+m, -1); Term *last = t; last->setNextTerm(new Term((2*b2*c2 - a1*a2*b2 + b1*pow(a2, 2)), 1, j+m, -1)); last = last->getNextTerm(); last->setNextTerm(new Term((pow(c2, 2) - a1*a2*c2 + c1*pow(a2, 2)), 0, -1, -1)); if (!solveQuadrEq(t, j)) return 0; if (!solveLinearEq(t2, i)) return 0; else return 1; } Term* Prover::subctract(Term* t1, Term* t2, int i, int j){ double a1, b1, c1, a2, b2, c2; Term* t; a1=b1=c1=a2=b2=c2=0; getCoeffABC(t1, &a1, &b1, &c1, i, j); getCoeffABC(t2, &a2, &b2, &c2, i, j); t = new Term((a1-a2), 1, i+m, -1); Term *last = t; last->setNextTerm(new Term((b1-b2), 1, j+m, -1)); last = last->getNextTerm(); last->setNextTerm(new Term((c1-c2), 0, -1, -1)); return t; } int Prover::solveQuadrEq(Term* t, int i){ double a, b, c; a= 0; b=0; c=0; getQuadrCoeff(t, &a, &b, &c, i); if ( a != 0 ){ if ((b != 0) && (c != 0)){ double delta = pow(b,2) - 4*a*c; if (delta > 0) values[i+m] = (-b + randSign() * sqrt(delta))/(2*a); else if (delta == 0) values[i+m] = -b / (2*a); else{ cout << "Quadratic Equation: delta < 0 \n"; return 0; } } else if ((b == 0) && (c != 0)){ double tmp = -c/a; if (tmp > 0) values[i+m] = randSign() * sqrt(tmp); else{ cout << "Quadratic Equation: -c/a < 0 \n"; return 0; } } else if ((b != 0)&&(c == 0)){ if (randSign() == 1) values[i+m] = 0; else values[i+m] = -b/a; } /* if a != 0, b=c=0 */ else values[i+m] = 0; } /* a = 0 */ else if ((b == 0) && (c == 0)){ cout << "Quadratic Equation: all coefficients = 0 \n"; return 0; } else if ((b == 0) && (c != 0)){ perror(" quadratic equation: ABSURD! c = 0 "); exit(3); } else if ((b!=0) && (c == 0)) values[i+m] =0; else if ((b!=0) && (c!=0)) values[i+m] = -c/b; return 1; } int Prover::solveLinearEq(Term* t, int i){ double a, b; int j; a = 0; b = 0; while (t){ if (t->indVar(i, m)){ if ((j= t->getOtherInd(i, m)) == -2 ){ perror(" solveLinearEquation index = -2"); exit(2); } else if (j != -1 ){ a += values[j] * t->getCoeff(); } else{ a = a + (t->getCoeff()); } } else{ double d = computeTerm(t); b += d; } t = t->getNextTerm(); } if (a == 0){ cout << "Linear equation: coefficient a = 0 \n"; return 0; } else values[i+m] = - b / a; return 1; } double Prover::computeTerm(Term *t){ int expo = t->getExpo(); if (expo == 0){ return t->getCoeff(); } else{ int ind1 = t->getInd1(); int ind2 = t->getInd2(); if (expo == 2) return (t->getCoeff() * pow(values[ind1], 2)); else if (ind2 != -1) return (t->getCoeff() * values[ind1] * values[ind2]); else{ return (t->getCoeff() * values[ind1]); } } } int Prover::vanishThesis(){ double tot = 0; Term *th = g; while(th){ int expo = th->getExpo(); double coeff = th->getCoeff(); int ind1 = th->getInd1(); int ind2 = th->getInd2(); if (expo == 0) tot = tot + coeff; else{ if ((expo == 2) && (ind1 < limit)) tot = tot + coeff * pow(values[ind1], 2); else if ((expo == 1) && (ind1 < limit) && (ind2 != -1) && (ind2 < limit)) tot = tot + coeff * values[ind1] * values[ind2]; else if ((expo == 1) && (ind1 < limit) && (ind2 == -1)) tot = tot + coeff * values[ind1]; else cout << "VanishThesis Error: not all variables are determined \n"; } th = th->getNextTerm(); } if (tot == 0) return 1; else{ cout << "Value of the polynomial thesis: " << tot << endl; return 0; } } int main(int argc, char *argv[]){ int numb; if (!argv[2]) numb = 0; else numb = atoi(argv[2]); if (numb < 1){ cout << "Number of tests must be > 0 \n"; exit(1); } Prover *th = new Prover(argv[1], numb); if (th->VerifyByExamples()){ double prob = 1 - pow(float(2), -numb); cout << "\n"; cout << " The geometric conjecture is TRUE with probability "<< prob <<" \n"; } else cout << " The geometric conjecture is FALSE "; cout << "\n"; return 0; } core++-1.7/progs/prover/prover.h0100644000175000001440000001015710130274252016126 0ustar joachimusers/*************************************************** file: prover.h -- include file for prover.cc author: Daniela Tulone (August, 1999) Since CORE Library version 1.2 $Id: prover.h,v 1.2 2004/10/04 16:22:02 exact Exp $ ***************************************************/ #include "terms.h" class Prover{ int n; /* number variables */ int m; /* number parameters */ int temp; Term** f; /* set of polynomials hypotheses */ Term* g; /* polynomial thesis */ int bound; /* Parameters are randomly choosen in [-bound, +bound] */ double* values; /* array of values for parameters and variables */ int limit; /* working variable, to indicate the first var to be computed */ int* degrees; /* matrix (3 x n) containing the partial degree degree[i, 0] = degree of poly ith of the hypothesis system with respect to the variable i-1 degree[i, 1] = degree of poly ith of the hypothesis system with respect to the variable i degree[i, 2] = degree of poly ith of the hypothesis system with respect to the variable i+1 */ int N; /* number of tests to do, if N examples succeed then with probability 2^(-N) the conjucture is true */ public: Prover(char *filename, int N); ~Prover(); int VerifyByExamples(); private: int parseParameters(char* s); Term* parseString(char* s, Term* last); void computeDegrees(); /* compute at the beginning degrees this array will be used by computeConfiguration and computeMiniSystem to find out which method apply to solve the system */ int random(); /* return a random integer in [-bound, bound] */ int randSign(); /* return 1 or -1 */ void computeBound(); void generateExample(); /* generate random parameters, by resetting values[0] to values[m-1] */ void resetValues(); int initialization(); /* call computeDegree and handle error checking for the input */ int computeConfiguration(); /* compute the hypothesis system by looking at degrees and calling the appropriate method */ int computeMiniSystem(int ind, int ind2); /* it compute two new variables by solving the system given by f[inf], f[ind2] */ int solveKramer(Term* t1, Term* t2, int i, int j); /* compute the variables i, j by Kramer */ int solveQuadr(Term* t1, Term* t2, int i, int j); /* compute the system by substitution where t1 is a quadratic equation and t2 a linear one */ Term* subctract(Term* t1, Term* t2, int i, int j); /* it returns the linear equation obtained by substracting two quadratic equations */ int solveQuadrEq(Term* t, int i); int solveLinearEq(Term* t, int i); int vanishThesis(); /* it checks the vanishing of the thesis by substituting parameters and variables */ void getCoeffABC(Term *t1, double *a, double *b, double *c, int i, int j); /* in an equation in i,j a is the coeff of i, b is coeff of j and c is the temine noto */ // auxiliary functions int getOtherVar(int ind); /* look in degree for an entry different from 0, if some error occurred, e.g. there is no index i -2 is returned */ double computeTerm(Term *t); /* return the computed value of term t */ void getQuadrCoeff(Term* t, double *a, double *b, double *c, int i); /* returns the coefficients for a quadratic equation */ int validMatrix(); /* validates degree */ void checkInput(double coeff, int expo, int ind1, int ind2, int index, int i); /* validates the input read from the file */ int valLeftVar(int i); /* check if this variables was computed */ // for debug purpose void writeInput(); void writeDegrees(); void displayVar(); }; core++-1.7/progs/prover/terms.cpp0100644000175000001440000000337210130274252016277 0ustar joachimusers/*************************************************** file: terms.cc -- used by prover.cc author: Daniela Tulone (August, 1999) Since CORE Library version 1.2 $Id: terms.cpp,v 1.4 2004/10/04 16:22:02 exact Exp $ ***************************************************/ #include #include "terms.h" Term::Term(){ } Term::Term(double a, int b, int c){ coeff=a; expo=b; ind1=c; ind2=-1; next=NULL; } Term::Term(double a, int b, int c, int d){ coeff=a; expo=b; ind1=c; ind2=d; next=NULL; } Term::Term(double a, int b, int c, Term *n){ coeff=a; expo=b; ind1=c; ind2=-1; next=n; } Term::Term(double a, int b, int c, int d, Term *n){ coeff=a; expo=b; ind1=c; ind2=d; next=n; } Term::Term(double a){ coeff=a; expo=0; ind1=-1; ind2=-1; next=NULL; } Term::Term(double a, Term *n){ coeff=a; expo=0; ind1=-1; ind2=-1; next=n; } void Term::write(int m){ int i = 0; Term *p = this; while(p){ i++; if ((p->expo) == 0){ std::cout << p->coeff << std::endl; } else{ if (p->ind2 == -1){ if (p->ind1 < m) std::cout << p->coeff << "u[" << p->ind1 << "," << p->expo << "] "; else std::cout << p->coeff << "x[" << p->ind1 - m<< "," << p->expo << "] "; } else{ if (p->ind1 < m) std::cout << p->coeff << "u[" << p->ind1 << "]"; else{ std::cout << p->coeff << "x[" << p->ind1 - m<< "]"; } if (p->ind2 < m) std::cout << "u[" << p->ind2 << "] "; else std::cout << "x[" << p->ind2 - m<< "] "; } } p = p-> next; } std::cout << "\n"; } /* return -2 if none of the variables is i */ int Term::getOtherInd(int i, int m){ if (ind1 == i+m) return ind2; if (ind2 == i+m) return ind1; else return -2; } core++-1.7/progs/prover/terms.h0100644000175000001440000000222010130274252015733 0ustar joachimusers/*************************************************** file: terms.h -- include file for terms.cc author: Daniela Tulone (August, 1999) Since CORE Library version 1.2 $Id: terms.h,v 1.3 2004/10/04 16:22:02 exact Exp $ ***************************************************/ #ifndef TERMS_H #define TERMS_H #ifndef CORE_LEVEL #define CORE_LEVEL 3 #endif #include "CORE.h" class Term{ double coeff; int ind1; int ind2; int expo; Term* next; public: Term(); Term(double a, int b, int c); Term(double a, int b, int c, int d); Term(double a, int b, int c, Term *n); Term(double a, int b, int c, int d, Term *n); Term(double a); Term(double a, Term *n); void write(int m); int singleInd(){ return(ind2 == -1) ? 1 : 0;} Term* getNextTerm(){return next;} void setNextTerm(Term *n ){next = n;} int getExpo(){return expo;} /* return 1 if var i is in the term, i goes 0 ... n-1 */ int indVar(int i, int m){return((ind1 == i+m)||(ind2 == i+m)) ? 1 : 0;} double getCoeff(){return coeff;} int getInd1(){return ind1;} int getInd2(){return ind2;} int getOtherInd(int i, int m); }; #endif core++-1.7/progs/prover/inputs/0040755000175000001440000000000010147210064015760 5ustar joachimuserscore++-1.7/progs/prover/inputs/README0100644000175000001440000000714707437361201016656 0ustar joachimusers************************************************************ README file, for inputs to prover CORE Library version 1.2 $Id: README,v 1.1.1.1 2002/02/28 07:55:45 exact Exp $ ************************************************************ Simson's Theorem: Let D be a point on the circumscribed circle (0) of triangle ABC. From D three perpendiculars are drawn to the three sides BC, CA and AB. Let E, F and G be the three feet, respectively. Show that E, F and G are collinear. Setup: A(0,0), B(u_1,0), C(u_2, u_3), O(x_2, x_1), D(x_3, u_4), E(x_5, x_4), F(x_7, x_6), G(x_3, 0) Therefore the hypothesis equations are: h_1 = 2 u_2 x_2 + 2 u_3 x_1 - u_3^2 - u_2^2 = 0 h_2 = 2 u_1 x_2 - u_1^2 = 0 h_3 = -x_3^2 + 2 x_2 x_3 + 2 u_4 x_1 - u_4^2 = 0 h_4 = u_3 x_5 - u_2 x_4 + u_1 x_4 - u_1 u_3 = 0 h_5 = u_2 x_5 - u_1 x_5 + u_3 x_4 - u_2 x_3 + u_1 x_3 - u_3 u_4 = 0 h_6 = u_3 x_7 - u_2 x_6 = 0 h_7 = u_2 x_7 + u_3 x_6 - u_2 x_3 - u_3 u_4 = 0 The conclusion that points E,F and G are collinear is equivalent to: x_4 x_7 - x_5 x_6 + x_3 x_6 - x_3 x_4 = 0 Pascal's Theorem: Let A, B, C, D, F and E be six points on a circle (O). Let P intersection of AB and DF, Q intersection of BC and FE and S intersection of CD and EA. Show that P, Q and S are collinear. Let A(0,0), O(u_1,0), B(x_1,u_2), C(x_2,u_3), D(x_3,u_4) F(x_4,u_5), E(x_5,u_6), P(x_7,x_6), Q(x_9,x_8) and S(x_11,x_10). Therefore the hypothesis equations are: h_1 = x_1^2 - 2 u_1 x_1 + u_1^2 = 0 h_2 = x_2^2 - 2 u_1 x_2 + u_3^2 = 0 h_3 = x_3^2 - 2 u_1 x_3 + u_4^2 = 0 h_4 = x_4^2 - 2 u_1 x_4 + u_5^2 = 0 h_5 = x_5^2 - 2 u_1 x_5 + u_6^2 = 0 h_6 = u_5 x_7 - u_4 x_7 - x_4 x_6 + x_3 x_6 + u_4 x_4 - u_5 x_3 = 0 h_7 = u_2 x_7 - x_1 x_6 = 0 h_8 = u_6 x_9 - u_5 x_9 - x_5 x_8 + x_4 x_8 + u_5 x_5 - u_6 x_4 = 0 h_9 = u_3 x_9 - u_2 x_9 - x_2 x_8 + x_1 x_8 + u_2 x_2 - u_3 x_1 = 0 h_10 = u_6 x_11 - x_5 x_10 = 0 h_11 = u_4 x_11 - u_3 x_11 - x_3 x_10 + x_2 x_10 + u_3 x_3 - u_4 x_2 = 0 The conclusion that P, Q and S are collinear is: x_8 x_11 - x_6 x_11 - x_9 x_10 + x_7 x_10 + x_6 x_9 - x_7 x_8 = 0 Butterfly Theorem: Let A, B, C, D be four points on a circle (O). E is the intersection of AC and BD. Through E draw a line perpendicular to OE, meeting AD at F and BC at G. Show that FE=GE. Let E(0,0), O(u_1,0), A(u_2,u_3), B(x_1,u_4), C(x_3,x_2), D(x_5,x_4), F(0,x_6) and G(0,x_7). Therefore the hypothesis equations are: h_1 = x_1^2 - 2 u_1 x_0 + u_3^2 - u_3^2 - u_2^2 + 2u_1 u_2 = 0 h_2 = x_3^2 - 2u_1 x_3 + x_2^2 - u_3^2 - u_2^2 + 2u_1 u_2 = 0 h_3 = -u_3 x_3 + u_2 x_2 = 0 h_4 = x_5^2 - 2u_1 x_5 + x_4^2 - u_3^2 - u_2^2 + 2u_1 u_2 = 0 h_5 = -u_4 x_5 + x_1 x_4 = 0 h_6 = -x_5 x_6 + u_2 x_6 + u_3 x_5 - u_2 x_4 = 0 h_7 = -x_3 x_7 + x_1 x_7 + u_4 x_3 - x_1 x_2 = 0 The conclusion is: g = x_7 + x_6 = 0 Pappus's Theorem: Let ABC and EFG be two lines and P be the intersection of AF and EB, Q the intersection of AG and EC and S the intersectin of BG and FC. Then P, Q and S are collnear. Let A(0,0), B(u1,0), C(u_2,0), E(u_2,u_3), F(u_4,u_5), G(x_1,u_7), P(x_3,x_2), Q(x_5,x_4), S(x_7,x_6). Therefore the hypothesis equations are: h_1 = u_5 x_1 - u_3 x_1 - u_2 u_5 - u_4 u_7 + u_3 u_4 + u_2 u_7 = 0 h_2 = u_4 x_2 - u_5 x_3 = 0 h_3 = u_2 x_2 - u_1 x_2 - u_3 x_3 + u_3 u_1 = 0 h_4 = x_1 x_4 - u_7 x_5 = 0 h_5 = u_2 x_4 - u_6 x_4 - u_3 x_5 + u_3 u_6 = 0 h_6 = u_5 x_6 - u_6 x_6 - u_5 x_7 + u_5 u_6 = 0 h_7 = x_1 x_6 - u_1 x_6 - u_7 x_7 + u_1 u_7 = 0 The conclusion is: g = x_7 x_4 - x_2 x_7 - x_3 x_4 - x_5 x_6 + x_3 x_6 + x_2 x_5 - x_2 x_5 = 0 core++-1.7/progs/prover/inputs/butterfly0100644000175000001440000000271707522353763017750 0ustar joachimusers# file: butterfly # # Butterfly Theorem: # # Let A, B, C, D be four points on a circle (O). # E is the intersection of AC and BD. Through E # draw a line perpendicular to OE, meeting AD at # F and BC at G. Show that FE=GE. # # Let E(0,0), O(u_1,0), A(u_2,u_3), B(x_1,u_4), # C(x_3,x_2), D(x_5,x_4), F(0,x_6) and G(0,x_7). # # Therefore the hypothesis equations are: # # AO = BO: # h_0 = x_1^2 - 2 u_1 x_1 + u_4^2 - u_3^2 - u_2^2 + 2u_1 u_2 = 0 # AO = CO: # h_1 = x_3^2 - 2u_1 x_3 + x_2^2 - u_3^2 - u_2^2 + 2u_1 u_2 = 0 # Collinear(A, E, C): # h_2 = -u_3 x_3 + u_2 x_2 = 0 # AO = DO: # h_3 = x_5^2 - 2u_1 x_5 + x_4^2 - u_3^2 - u_2^2 + 2u_1 u_2 = 0 # Collinear(B, E, D): # h_4 = -u_4 x_5 + x_1 x_4 = 0 # Collinear(A, F, D): # h_5 = -x_5 x_6 + u_2 x_6 + u_3 x_5 - u_2 x_4 = 0 # Collinear(B, G, C): # h_6 = -x_3 x_7 + x_1 x_7 + u_4 x_3 - x_1 x_2 = 0 # # The conclusion is: # # g = x_7 + x_6 = 0 # # 4 parameter, 7 dependent variables: 4 7 # # polynomial h_0 0 1 2 4 -1 0 -2 1 0 4 0 1 2 3 -1 0 -1 2 2 -1 0 -1 2 1 -1 0 2 1 0 1 # polynomial h_1 1 1 2 6 -1 1 -2 1 0 6 1 1 2 5 -1 1 -1 2 2 -1 1 -1 2 1 -1 1 2 1 0 1 # polynomial h_2 2 -1 1 2 6 2 1 1 1 5 # polynomial h_3 3 1 2 8 -1 3 -2 1 0 8 3 1 2 7 -1 3 -1 2 2 -1 3 -1 2 1 -1 3 2 1 0 1 # polynomial h_4 4 -1 1 3 8 4 1 1 4 7 # polynomial h_5 5 -1 1 8 9 5 1 1 1 9 5 1 1 2 8 5 -1 1 1 7 # polynomial h_6 6 -1 1 6 10 6 1 1 4 10 6 1 1 3 6 6 -1 1 4 5 # polynomial g (hypothesis) 8 1 1 10 -1 8 1 1 9 -1 core++-1.7/progs/prover/inputs/pappus0100644000175000001440000000332707437361201017225 0ustar joachimusers#file: pappus # # Pappus's Theorem: # # Let ABC and EFG be two lines and P be the intersection # of AF and EB, Q the intersection of AG and EC and S the # intersectin of BG and FC. Then P, Q and S are collnear. # # Let A(0,0), B(u1,0), C(u_2,0), E(u_2,u_3), F(u_4,u_5), # G(x_1,u_7), P(x_3,x_2), Q(x_5,x_4), S(x_7,x_6). # # Therefore the hypothesis equations are: # # h_1 = u_5 x_1 - u_3 x_1 - u_2 u_5 - u_4 u_7 + # u_3 u_4 + u_2 u_7 = 0 # h_2 = u_4 x_2 - u_5 x_3 = 0 # h_3 = u_2 x_2 - u_1 x_2 - u_3 x_3 + u_3 u_1 = 0 # h_4 = x_1 x_4 - u_7 x_5 = 0 # h_5 = u_2 x_4 - u_6 x_4 - u_3 x_5 + u_3 u_6 = 0 # h_6 = u_5 x_6 - u_6 x_6 - u_5 x_7 + u_5 u_6 = 0 # h_7 = x_1 x_6 - u_1 x_6 - u_7 x_7 + u_1 u_7 = 0 # # The conclusion is: # # g = x_7 x_4 - x_2 x_7 - x_3 x_4 - x_5 x_6 + # x_3 x_6 + x_2 x_5 - x_2 x_5 = 0 # # number of parameters = 7 # number of dependent variables = 7 7 7 # defining h_1 ... 0 1 1 4 7 # u_5 x_1 0 -1 1 2 7 # -u_3 x_1 0 -1 1 1 4 # -u_2 u_5 0 -1 1 3 6 # -u_4 u_7 0 1 1 2 3 # u_3 u_4 0 1 1 1 6 # u_2 u_7 # defining h_2 1 1 1 3 8 # u_4 x_2 1 -1 1 4 9 # -u_5 x_3 # defining h_3 2 1 1 1 8 # u_2 x_2 2 -1 1 0 8 # -u_1 x_2 2 -1 1 2 9 # -u_3 x_3 2 1 1 2 0 # u_3 u_1 # defining h_4 3 1 1 7 10 # x_1 x_4 3 -1 1 6 11 # -u_7 x_5 # defining h_5 4 1 1 1 10 # u_2 x_4 4 -1 1 5 10 # u_6 x_4 4 -1 1 2 11 # u_3 x_5 4 1 1 2 5 # u_3 u_6 # defining h_6 5 1 1 3 12 # u_4 x_6 5 -1 1 5 12 # -u_6 x_6 5 -1 1 4 13 # -u_5 x_7 5 1 1 4 5 # u_5 u_6 # defining h_7 6 1 1 7 12 # x_1 x_6 6 -1 1 0 12 # -u_1 x_6 6 -1 1 6 13 # -u_7 x_7 6 1 1 0 6 # u_1 u_7 # defining g 7 1 1 10 13 # x_4 x_7 7 -1 1 8 13 # -x_2 x_7 7 -1 1 9 10 # -x_3 x_4 7 -1 1 11 12 # -x_5 x_6 7 1 1 9 12 # x_3 x_6 7 1 1 8 11 # x_2 x_5 core++-1.7/progs/prover/inputs/pappusBad0100644000175000001440000000351107437361201017627 0ustar joachimusers#file: pappusBad # # WE DELIBERATELY MAKE A WRONG VERSION OF PAPPUS' THEOREM: # # Pappus's Theorem: # # Let ABC and EFG be two lines and P be the intersection # of AF and EB, Q the intersection of AG and EC and S the # intersectin of BG and FC. Then P, Q and S are collnear. # # Let A(0,0), B(u1,0), C(u_2,0), E(u_2,u_3), F(u_4,u_5), # G(x_1,u_7), P(x_3,x_2), Q(x_5,x_4), S(x_7,x_6). # # Therefore the hypothesis equations are: # # h_1 = u_5 x_1 - u_3 x_1 - u_2 u_5 - u_4 u_7 + # u_3 u_4 + u_2 u_7 = 0 # h_2 = u_4 x_2 - u_5 x_3 = 0 # h_3 = u_2 x_2 - u_1 x_2 - u_3 x_3 + u_3 u_1 = 0 # h_4 = x_1 x_4 - u_7 x_5 = 0 # h_5 = u_2 x_4 - u_6 x_4 - u_3 x_5 + u_3 u_6 = 0 # h_6 = u_5 x_6 - u_6 x_6 - u_5 x_7 + u_5 u_6 = 0 # h_7 = x_1 x_6 - u_1 x_6 - u_7 x_7 + u_1 u_7 = 0 # # The conclusion is: # # g = x_7 x_4 - x_2 x_7 - x_3 x_4 - x_5 x_6 + # x_3 x_6 + x_2 x_5 - x_2 x_5 = 0 # # number of parameters = 7 # number of dependent variables = 7 7 7 # defining h_1 ... 0 1 1 4 7 # u_5 x_1 0 1 1 2 7 # -u_3 x_1 (BAD COEFFICIENT: this is 1 instead of -1) 0 -1 1 1 4 # -u_2 u_5 0 -1 1 3 6 # -u_4 u_7 0 1 1 2 3 # u_3 u_4 0 1 1 1 6 # u_2 u_7 # defining h_2 1 1 1 3 8 # u_4 x_2 1 -1 1 4 9 # -u_5 x_3 # defining h_3 2 1 1 1 8 # u_2 x_2 2 -1 1 0 8 # -u_1 x_2 2 -1 1 2 9 # -u_3 x_3 2 1 1 2 0 # u_3 u_1 # defining h_4 3 1 1 7 10 # x_1 x_4 3 -1 1 6 11 # -u_7 x_5 # defining h_5 4 1 1 1 10 # u_2 x_4 4 -1 1 5 10 # u_6 x_4 4 -1 1 2 11 # u_3 x_5 4 1 1 2 5 # u_3 u_6 # defining h_6 5 1 1 3 12 # u_4 x_6 5 -1 1 5 12 # -u_6 x_6 5 -1 1 4 13 # -u_5 x_7 5 1 1 4 5 # u_5 u_6 # defining h_7 6 1 1 7 12 # x_1 x_6 6 -1 1 0 12 # -u_1 x_6 6 -1 1 6 13 # -u_7 x_7 6 1 1 0 6 # u_1 u_7 # defining g 7 1 1 10 13 # x_4 x_7 7 -1 1 8 13 # -x_2 x_7 7 -1 1 9 10 # -x_3 x_4 7 -1 1 11 12 # -x_5 x_6 7 1 1 9 12 # x_3 x_6 7 1 1 8 11 # x_2 x_5 core++-1.7/progs/prover/inputs/pascal0100644000175000001440000000365607437361201017165 0ustar joachimusers# file: pascal # # Pascal's Theorem: # # Let A, B, C, D, F and E be six points on a circle # (O). Let P intersection of AB and DF, Q intersection # of BC and FE and S intersection of CD and EA. # Show that P, Q and S are collinear. # # Let A(0,0), O(u_1,0), B(x_1,u_2), C(x_2,u_3), D(x_3,u_4) # F(x_4,u_5), E(x_5,u_6), P(x_7,x_6), Q(x_9,x_8) and S(x_11,x_10). # Therefore the hypothesis equations are: # # h_1 = x_1^2 - 2 u_1 x_1 + u_1^2 = 0 # h_2 = x_2^2 - 2 u_1 x_2 + u_3^2 = 0 # h_3 = x_3^2 - 2 u_1 x_3 + u_4^2 = 0 # h_4 = x_4^2 - 2 u_1 x_4 + u_5^2 = 0 # h_5 = x_5^2 - 2 u_1 x_5 + u_6^2 = 0 # h_6 = u_5 x_7 - u_4 x_7 - x_4 x_6 + x_3 x_6 + u_4 x_4 - u_5 x_3 = 0 # h_7 = u_2 x_7 - x_1 x_6 = 0 # h_8 = u_6 x_9 - u_5 x_9 - x_5 x_8 + x_4 x_8 + u_5 x_5 - u_6 x_4 = 0 # h_9 = u_3 x_9 - u_2 x_9 - x_2 x_8 + x_1 x_8 + u_2 x_2 - u_3 x_1 = 0 # h_10 = u_6 x_11 - x_5 x_10 = 0 # h_11 = u_4 x_11 - u_3 x_11 - x_3 x_10 + # x_2 x_10 + u_3 x_3 - u_4 x_2 = 0 # # The conclusion that P, Q and S are collinear is: # # g = x_8 x_11 - x_6 x_11 - x_9 x_10 + # x_7 x_10 + x_6 x_9 - x_7 x_8 = 0 # # 6 parameters, 11 independent variables: 6 11 # polynomial h_1 0 1 2 6 -1 0 -2 1 0 6 0 1 2 1 -1 # polynomial h_2 1 1 2 7 -1 1 -2 1 0 7 1 1 2 2 -1 # polynomial h_3 2 1 2 8 -1 2 -2 1 0 8 2 1 2 3 -1 # polynomial h_4 3 1 2 9 -1 3 -2 1 0 9 3 1 2 4 -1 # polynomial h_5 4 1 2 10 -1 4 -2 1 0 10 4 1 2 5 -1 # polynomial h_6 5 1 1 4 12 5 -1 1 3 12 5 -1 1 9 11 5 1 1 8 11 5 1 1 3 9 5 -1 1 4 8 # polynomial h_7 6 1 1 1 12 6 -1 1 6 11 # polynomial h_8 7 1 1 5 14 7 -1 1 4 14 7 -1 1 10 13 7 1 1 9 13 7 1 1 4 10 7 -1 1 5 9 # polynomial h_9 8 1 1 2 14 8 -1 1 1 14 8 -1 1 7 13 8 1 1 6 13 8 1 1 1 7 8 -1 1 2 6 # polynomial h_10 9 1 1 5 16 9 -1 1 10 15 # polynomial h_11 10 1 1 3 16 10 -1 1 2 16 10 -1 1 8 15 10 1 1 7 15 10 1 1 2 8 10 -1 1 3 7 # polynomial g 12 1 1 13 16 12 -1 1 11 16 12 -1 1 14 15 12 1 1 12 15 12 1 1 11 14 12 -1 1 12 13 core++-1.7/progs/prover/inputs/simson0100644000175000001440000000270007437361201017217 0ustar joachimusers# file: simson # # Simson's Theorem: # # Let D be a point on the circumscribed circle # (0) of triangle ABC. From D three perpendiculars # are drawn to the three sides BC, CA and AB. # Let E, F and G be the three feet, respectively. # Show that E, F and G are collinear. # # Setup: A(0,0), B(u_1,0), C(u_2, u_3), O(x_2, x_1), # D(x_3, u_4), E(x_5, x_4), F(x_7, x_6), G(x_3, 0) # Therefore the hypothesis equations are: # # h_1 = 2 u_2 x_2 + 2 u_3 x_1 - u_3^2 - u_2^2 = 0 # h_2 = 2 u_1 x_2 - u_1^2 = 0 # h_3 = -x_3^2 + 2 x_2 x_3 + 2 u_4 x_1 - u_4^2 = 0 # h_4 = u_3 x_5 - u_2 x_4 + u_1 x_4 - u_1 u_3 = 0 # h_5 = u_2 x_5 - u_1 x_5 + u_3 x_4 - u_2 x_3 + u_1 x_3 - u_3 u_4 = 0 # h_6 = u_3 x_7 - u_2 x_6 = 0 # h_7 = u_2 x_7 + u_3 x_6 - u_2 x_3 - u_3 u_4 = 0 # # The conclusion that points E,F and G are collinear # is equivalent to: # # g = x_4 x_7 - x_5 x_6 + x_3 x_6 - x_3 x_4 = 0 # # 4 parameters, 7 dependent variables: 4 7 # polynomial h_1 0 2 1 1 5 0 2 1 2 4 0 -1 2 2 -1 0 -1 2 1 -1 # polynomial h_2 1 2 1 0 5 1 -1 2 0 -1 # polynomial h_3 2 -1 2 6 -1 2 2 1 5 6 2 2 1 3 4 2 -1 2 3 -1 # polynomial h_4 3 1 1 2 8 3 -1 1 1 7 3 1 1 0 7 3 -1 1 0 2 # polynomial h_5 4 1 1 1 8 4 -1 1 0 8 4 1 1 2 7 4 -1 1 1 6 4 1 1 0 6 4 -1 1 2 3 # polynomial h_6 5 1 1 2 10 5 -1 1 1 9 # polynomial h_7 6 1 1 1 10 6 1 1 2 9 6 -1 1 1 6 6 -1 1 2 3 # polynomial g 8 1 1 7 10 8 -1 1 8 9 8 1 1 6 9 8 -1 1 6 7 core++-1.7/progs/prover/inputs/simsonBad0100644000175000001440000000313007437361201017624 0ustar joachimusers# file: simsonBad # # This is a Deliberately Wrong version of Simson's Theorem # We just change one of the mononials below. # # Simson's Theorem: # # Let D be a point on the circumscribed circle # (0) of triangle ABC. From D three perpendiculars # are drawn to the three sides BC, CA and AB. # Let E, F and G be the three feet, respectively. # Show that E, F and G are collinear. # # Setup: A(0,0), B(u_1,0), C(u_2, u_3), O(x_2, x_1), # D(x_3, u_4), E(x_5, x_4), F(x_7, x_6), G(x_3, 0) # Therefore the hypothesis equations are: # # h_1 = 2 u_2 x_2 + 2 u_3 x_1 - u_3^2 - u_2^2 = 0 # h_2 = 2 u_1 x_2 - u_1^2 = 0 # h_3 = -x_3^2 + 2 x_2 x_3 + 2 u_4 x_1 - u_4^2 = 0 # h_4 = u_3 x_5 - u_2 x_4 + u_1 x_4 - u_1 u_3 = 0 # h_5 = u_2 x_5 - u_1 x_5 + u_3 x_4 - u_2 x_3 + u_1 x_3 - u_3 u_4 = 0 # h_6 = u_3 x_7 - u_2 x_6 = 0 # h_7 = u_2 x_7 + u_3 x_6 - u_2 x_3 - u_3 u_4 = 0 # # The conclusion that points E,F and G are collinear # is equivalent to: # # g = x_4 x_7 - x_5 x_6 + x_3 x_6 - x_3 x_4 = 0 # # 4 parameters, 7 dependent variables: 4 7 # polynomial h_1 0 2 1 1 5 0 2 1 4 3 # Correct version should be (0 2 1 2 4) 0 -1 2 2 -1 0 -1 2 1 -1 # polynomial h_2 1 2 1 0 5 1 -1 2 0 -1 # polynomial h_3 2 -1 2 6 -1 2 2 1 5 6 2 2 1 3 4 2 -1 2 3 -1 # polynomial h_4 3 1 1 2 8 3 -1 1 1 7 3 1 1 0 7 3 -1 1 0 2 # polynomial h_5 4 1 1 1 8 4 -1 1 0 8 4 1 1 2 7 4 -1 1 1 6 4 1 1 0 6 4 -1 1 2 3 # polynomial h_6 5 1 1 2 10 5 -1 1 1 9 # polynomial h_7 6 1 1 1 10 6 1 1 2 9 6 -1 1 1 6 6 -1 1 2 3 # polynomial g 8 1 1 7 10 8 -1 1 8 9 8 1 1 6 9 8 -1 1 6 7 core++-1.7/progs/radical/0040755000175000001440000000000010147210064014520 5ustar joachimuserscore++-1.7/progs/radical/Makefile0100644000175000001440000000506610144502440016163 0ustar joachimusers# Makefile for Radical # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.5 2004/11/10 21:16:16 exact Exp $ #================================================= # VARIABLES #================================================= #CHOOSE THE LINKAGE LINKAGE=static LINKAGE=shared #CHOOSE THE VARIANT Core Library you need VAR=GCC31 VAR=Debug VAR= CORE_PATH=../.. include ${CORE_PATH}/progs/Make.options #================================================= # TARGET FILES #================================================= TARGETS= tRadical MORE_TARGETS= tUC tRadicalALL p=tMoreRadicals #================================================= # TARGETS #================================================= default: $(TARGETS) more: $(MORE_TARGETS) test: $(TARGETS) ./tRadical -1 moretest: $(MORE_TARGETS) ./tUC ./tRadicalRat -1 ./tRadicalBF -1 ./tRadicalExp -1 ./tRadicalInt -1 $(p) p: $(p).o $(DEPEND) ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o ${p} all: $(TARGETS) $(MORE_TARGETS) tMoreRadicals: tMoreRadicals.o tUC: tUC.o # Compiling tRadical with various number types (int, BigInt, Exp) tRadicalALL: tRadical tRadicalRat tRadicalInt tRadicalExp tRadicalBF tRadical: tRadical.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) tRadical.cpp -o tRadical.o ${CXX} $(LDFLAGS) tRadical.o $(CORE_LIB) -o tRadical tRadicalRat: tRadical.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_RAT tRadical.cpp -o tRadicalRat.o ${CXX} $(LDFLAGS) tRadicalRat.o $(CORE_LIB) -o tRadicalRat tRadicalBF: tRadical.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_BF tRadical.cpp -o tRadicalBF.o ${CXX} $(LDFLAGS) tRadicalBF.o $(CORE_LIB) -o tRadicalBF tRadicalInt: tRadical.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_INT tRadical.cpp -o tRadicalInt.o ${CXX} $(LDFLAGS) tRadicalInt.o $(CORE_LIB) -o tRadicalInt tRadicalExp: tRadical.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) -D_NT_EXP tRadical.cpp -o tRadicalExp.o ${CXX} $(LDFLAGS) tRadicalExp.o $(CORE_LIB) -o tRadicalExp #================================================= # Rules #================================================= %: %.o $(DEPEND) ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= ALL=$(TARGETS) $(MORE_TARGETS) EXEPROGS=$(ALL:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/radical/README0100644000175000001440000000145210133047534015404 0ustar joachimusers============================================================ README file for radical Description: Demonstrate the usage of radical leaf node Basic usage: Expr e = radical(n, m); where n is any of the following types: BigInt, Expr, BigRat, BigFloat, int. It will create a node whose value is the m-th root of n. This is not defined if n is negative. Author: Chee Yap, Zilin Du, Vikram Sharma, June 2003 $Id: README,v 1.5 2004/10/12 21:40:44 exact Exp $ ============================================================ Files: README -- this file Makefile -- Type "make p=xxx" to compile the file xxx.cpp tRadical.cpp -- test radical(NT, m) tUC.cpp -- test "small" expression from Uniformity Conjecture of Richardson. The examples come from Simon Langley. --Zilin June 18, 2003 core++-1.7/progs/radical/tRadical.cpp0100644000175000001440000000730310133306726016755 0ustar joachimusers/************************************************************* * File: tRadical.cpp * Purpose: * Verify that the basic functions of radical(n,m) which * constructs the m-th root of n is working. * * Usage: * > ./tRadical [n=3] [m=3] [prec=40] * * where the default values are shown above. * If n<0, then we do a battery of self-tests and * verify that the result is correct. * * Restriction/Bugs: * n must be an natural number (BigInt or int) * m must be >= 1 * * If m is too big, this test will be really slow. * Currently, * > ./tRadical 123 30 * is reasonably "real time" but * > ./tRadical 123 40 * takes about 2 minutes on a Pentium 1.4 GHz laptop. * Time is somewhat less sensitive to large n. * * Author: Chee Yap, Vikram Sharma * Date: May 22, 2003 * * Since Core Library version 1.6 *************************************************************/ #include "CORE/CORE.h" using namespace CORE; using namespace std; // Default number type is NT=BigInt #if defined _NT_INT typedef int NT; #elif defined _NT_LON typedef long NT; #elif defined _NT_EXP typedef Expr NT; #elif defined _NT_RAT typedef BigRat NT; #elif defined _NT_BF typedef BigFloat NT; #elif defined _NT_BIGINT typedef BigInt NT; #else typedef BigInt NT; #endif //template Expr::Expr(const Polynomial& p, int n); //template ConstPolyRep; int main(int argc , char ** argv) { int outputPrec; int eps; NT n = 3; if (argc >= 2) { n = atoi(argv[1]); } int m = 3; if (argc >= 3) { m = atoi(argv[2]); } outputPrec = 40; // default output precision if (argc >= 4) { outputPrec = atoi(argv[3]); } eps = (int)(outputPrec*log(10.0)/log(2.0)); cerr << "outputPrec = " << outputPrec << ", eps = " << eps << endl; setDefaultOutputDigits(outputPrec); if (n >= 0) { Expr mthrootn = radical(n,m); Expr value = 1; cout << m << "th root of "<< n << " is " << mthrootn << endl; Expr p = power(mthrootn, m); cout << "The " << m << "-th power of " << mthrootn << " is " << endl; cout << " P = " << p << endl; if(p == Expr(n)) cout << "CORRECT! P is equal to " << n << endl; else cout << "ERROR! P is NOT equal to " << n << endl; } else { // if n < 0, do the automatic test Expr r, rr; if ((radical(NT(1), 1000) == 1) && (radical(NT(1), 1) ==1)) cout << "CORRECT! for radical(1,k), k=1, 1000" << endl; else cout << "ERROR! for radical(1,k), k=1, 1000" << endl; if ((radical(NT(2), 1) == 2) && (radical(NT(12345), 1) == 12345)) cout << "CORRECT! for radical(m,1), m=2, 12345" << endl; else cout << "ERROR! for radical(m,1), m=2, 12345" << endl; for (int i=1; i<11; i++) { r = radical(NT(2), i); rr = radical(NT(789), i); if ((power(r,i) != 2) || (power(rr,i) != 789)){ cout << "ERROR! for radical(m,i), (m=2,789), i = " << i << endl; } else { cout << "CORRECT! for radical(m,i), (m=2,789), i = " << i << endl; } } for (int i=1000; i<1011; i++) { r = radical(NT(i), 7); rr = radical(NT(i), 20); if ((power(r,7) != i) || (power(rr,20) != i)){ cout << "ERROR! for radical(i,k), (k=7,20), i = " << i << endl; } else { cout << "CORRECT! for radical(i,k), (k=7,20), i = " << i << endl; } } #ifdef _NT_BF BigFloat bf(283243346, 0, -4); BigFloat bf2(1234, 0, -5); for (int i=0; i<100; i++) { bf += bf2; Expr e = radical(bf, 2); Expr p = power(e, 2); cout << "bf=" << bf << endl; cout << "e=" << e << endl; cout << "p=" << p << endl; if (Expr(bf) == p) { cout << "CORRECT!" << endl; } else { cout << "ERROR!" << endl; } } #endif } } core++-1.7/progs/radical/tUC.cpp0100644000175000001440000000254610130274132015721 0ustar joachimusers/************************************************************* * File: tUC.cpp * Purpose: * Verify some small expression from the website: * http://www.simon-langley.net/UC/ * * Usage: * > ./tUC [prec=40] * * where the default values are shown above. * * Author: Chee Yap, Zilin Du * Date: May 22, 2003 * * Since Core Library version 1.6 *************************************************************/ #include "CORE/CORE.h" using namespace CORE; using namespace std; typedef BigInt NT; int main(int argc , char ** argv) { int outputPrec; int eps; outputPrec = 40; // default output precision if (argc >= 2) { outputPrec = atoi(argv[1]); } cout << "Testing some small expressions\n" << "==============================" << endl; eps = (int)(outputPrec*log(10.0)/log(2.0)); cerr << "outputPrec = " << outputPrec << ", eps = " << eps << endl; setDefaultOutputDigits(outputPrec); Expr e1 = radical(NT(2), 8) - Expr("494/453"); cout << "2^{1/8}-494/453 \n = " << e1 << endl; Expr e2 = radical(NT(10), 8) - Expr("4/3"); cout << "10^{1/8}-4/3 \n = " << e2 << endl; Expr e3 = radical(NT(176), 2) + radical(NT(195), 2) + Expr(45) \ - radical(NT(190), 2) - radical(NT(398), 2) - radical(NT(1482), 2); cout << "sqrt(176)+sqrt(195)+45-sqrt(190)-sqrt(398)-sqrt(1482) \n = " << e3 << endl; } core++-1.7/progs/sumOfSqrts/0040755000175000001440000000000010147210064015247 5ustar joachimuserscore++-1.7/progs/sumOfSqrts/Makefile0100644000175000001440000000213710144502443016711 0ustar joachimusers# Makefile for graham # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.10 2004/11/10 21:16:19 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= graham MORETARGETS= smallsum orourke all: $(TARGETS) test: $(TARGETS) ./graham smalltest: ./orourke ./smallsum graham: graham.o smallsum: smallsum.o orourke: orourke.o sum: sum.o t: t.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/sumOfSqrts/README0100644000175000001440000000063010130300502016110 0ustar joachimusersfile: README file for sumOfSqrts Since CORE Library Version 1.2, August 1999 This directory contains 1) graham.cpp This compares two sums of 10 square roots each, from Ron Graham. The sums are equal up to 36 digits. 2) orourke.cpp This compares small sums of square roots, taken from O'Rourke. 3) smallsum.cpp This is a technique for generating very small sum of square roots which we discovered. core++-1.7/progs/sumOfSqrts/graham.cpp0100644000175000001440000000323707667672050017240 0ustar joachimusers/* ************************************** File: graham.cc Purpose: To illustrate Graham's example, where two sums of squareroots are equal for 37 decimal digits after the decimal point. Each sum has 9 square-roots. Usage: % graham CORE Library Version 1.2 $Id: graham.cpp,v 1.6 2003/06/05 16:47:36 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE.h" int main(int argc, char** argv) { int relprec; if (argc > 1) relprec = atoi(argv[1]); else relprec = 100; setDefaultRelPrecision(relprec); // relative precision in bits std::cout.precision(10+(relprec)/3); // print precision in digits long e1 = 1000001; long e2 = 1000025; long e3 = 1000031; long e4 = 1000084; long e5 = 1000087; long e6 = 1000134; long e7 = 1000158; long e8 = 1000182; long e9 = 1000198; double e = sqrt(e1) + sqrt(e2) + (sqrt(e3) + sqrt(e4)) + ((sqrt(e5) + sqrt(e6)) + (sqrt(e7) + sqrt(e8))) + sqrt(e9); long f1 = 1000002; long f2 = 1000018; long f3 = 1000042; long f4 = 1000066; long f5 = 1000113; long f6 = 1000116; long f7 = 1000169; long f8 = 1000175; long f9 = 1000199; double f = sqrt(f1) + sqrt(f2) + (sqrt(f3) + sqrt(f4)) + ((sqrt(f5) + sqrt(f6)) + (sqrt(f7) + sqrt(f8))) + sqrt(f9); std::cout << "Graham's Example (comparing 2 sums of 10 square roots\n"; std::cout << " e : " << e << std::endl; std::cout << " f : " << f << std::endl; std::cout << " e == f ? " << (e == f ? " yes (INCORRECT!)" : " no (CORRECT)") << std::endl; std::cout << " e - f = " << e-f << std::endl; std::cout << std::flush; return 0; } core++-1.7/progs/sumOfSqrts/orourke.cpp0100644000175000001440000000470010130300502017424 0ustar joachimusers/* ************************************** File: orourke.cc Purpose: To illustrate the difference between incremental evaluation and non-incremental evaluation of expressions. We use two examples from O'Rourke: e = sqrt(10) + sqrt(11) - sqrt(5) - sqrt(18) = 0.0001937859047052015 f = sqrt(5) + sqrt(6) + sqrt(18) - sqrt(4) - sqrt(12) -sqrt(12) = -0.0000048228732563160 These two sums are known to give the minimum value of r(20,2) and r(20,3), respectively. In general, r(n,k) is the minimum achieved by the difference of two sums of k square roots, where the operands of the squareroots are at most n. Usage: % orourke Since CORE Library Version 1.2 $Id: orourke.cpp,v 1.6 2004/10/04 16:58:42 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include #include "CORE.h" int main() { clock_t starttime, endtime; int n = 10; setDefaultRelPrecision(100); std::cout.precision(20); setIncrementalEvalFlag(true); std::cout << "Orourke's Example: incremental evaluation \n"; double e = sqrt((double)10) + sqrt((double)11) - sqrt((double)5) - sqrt((double)18); double f = sqrt((double)5) + sqrt((double)6) + sqrt((double)18) - sqrt((double)4) - sqrt((double)12) -sqrt((double)12); std::cout << " sqrt(10) + sqrt(11) - sqrt(5) - sqrt(18) : " << e << std::endl; std::cout << " sqrt(5) + sqrt(6) + sqrt(18) - sqrt(4) - sqrt(12) -sqrt(12) : " << f << std::endl; starttime = clock(); for (int i = 0; i 1) d = atoi(argv[1]); else d=20; if (argc > 2) x = atoi(argv[2]); else x = 17; if (argc > 3) relprec = atoi(argv[3]); else relprec = 100; setDefaultRelPrecision(relprec); // relative precision in bits cout.precision(10+(relprec)/3); // print precision in digits for (int k=1; k<=d; k++) { double delta = sqrt(double(x+k)); BigInt binomial = 1; for (int i=1 ; i<=k; i++) { binomial = - (binomial * (k-i+1))/i; delta += binomial * sqrt(double(x+k-i)); } cout << "delta(" << k << ", " << x << ") = " << delta << endl; } return 0; } core++-1.7/progs/testFilter/0040755000175000001440000000000010147210064015246 5ustar joachimuserscore++-1.7/progs/testFilter/Makefile0100644000175000001440000000536610145425610016720 0ustar joachimusers# Makefile for testFilter # # Core Library, $Id: Makefile,v 1.11 2004/11/13 15:43:04 exact Exp $ VAR= include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= testFilter testmatrix MORE_TARGETS= testFilter morematrix TIME_TARGETS=timeFilter timeFilter1 p=tt default: $(TARGETS) test: $(TARGETS) ./testFilter inputs/200x3x10matrices ./testFilter inputs/200x4x20matrices ./testFilter inputs/200x5x30matrices moretest: $(MORE_TARGETS) ./testFilter inputs/1000x2x10matrices ./testFilter inputs/1000x3x10matrices ./testFilter inputs/1000x4x10matrices ./testFilter inputs/500x5x10matrices ./testFilter inputs/500x6x10matrices ./testFilter inputs/500x7x10matrices ./testFilter inputs/500x8x10matrices debug: ./tt inputs/200x3x10matrices bigtest: $(TARGETS) bigmatrix ./testFilter inputs/200x10x100matrices ./testFilter inputs/200x20x100matrices time${v}: timeFilter${v} ./timeFilter${v} inputs/1000x2x10matrices ./timeFilter${v} inputs/1000x3x10matrices ./timeFilter${v} inputs/1000x4x10matrices ./timeFilter${v} inputs/500x5x10matrices ./timeFilter${v} inputs/500x6x10matrices ./timeFilter${v} inputs/500x7x10matrices ./timeFilter${v} inputs/500x8x10matrices testmatrix: createMatrices ./createMatrices inputs/200x3x10matrices 200 3 10 ./createMatrices inputs/200x4x20matrices 200 4 20 ./createMatrices inputs/200x5x30matrices 200 5 30 morematrix: createMatrices ./createMatrices inputs/1000x2x10matrices 1000 2 10 ./createMatrices inputs/1000x3x10matrices 1000 3 10 ./createMatrices inputs/1000x4x10matrices 1000 4 10 ./createMatrices inputs/500x5x10matrices 500 5 10 ./createMatrices inputs/500x6x10matrices 500 6 10 ./createMatrices inputs/500x7x10matrices 500 7 10 ./createMatrices inputs/500x8x10matrices 500 8 10 bigmatrix: createMatrices ./createMatrices inputs/200x10x100matrices 200 10 100 ./createMatrices inputs/200x20x100matrices 200 20 100 testFilter: testFilter.o timeFilter: timeFilter.o timeFilter1: timeFilter1.o createMatrices: createMatrices.o p ${p}: ${p}.o ${CXX} $(LDFLAGS) ${p}.o $(CORE_LIB) -o ${p} #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/testFilter/README0100644000175000001440000000145510130271053016125 0ustar joachimusersCore Library README for testFilter ===================== Various sample programs that test the effectiveness of the BFS filter we implemented. We took other test programs in under ${CORE_PATH}/progs such as "gaussian" and "chull". testFilter.cc -- testing the correctness of filter timeFilter.cc -- timing with filter on and off, for matrices with rational entries. Based on gaussian.cc. timeFilter1.cc -- variant of testFilter.cc for matrices with integer entries. inputs/ -- subdirectory for input matrices createMatrices.cc -- to create random matrices (See Makefile for how to run this) results.txt -- some test results and timings For details about the timing results, see README file under the "inputs" subdirectory here. -- Chee Yap and Zilin Du (Oct, 2001) core++-1.7/progs/testFilter/bench_filters_results.txt0100644000175000001440000000461107526743112022412 0ustar joachimusersTimings for 10^6 calls to : bench_filter(0.123456789, 0.987654321) ------------------------- void bench_filter(const NT &x, const NT &y) { NT e = (sqrt(x) + sqrt(y)) + sqrt(x + y + NT(2)*sqrt(x*y)); assert(e != 0); } CORE::Expr : ./bench 1000000 114.27s user 0.18s system 100% cpu 1:54.44 total leda_real (4.2) : ./bench 1000000 3.60s user 0.01s system 100% cpu 3.603 total CGAL::Lazy_exact_nt : ./bench 1000000 3.22s user 0.02s system 99% cpu 3.241 total CGAL::Lazy_exact_nt : ./bench 1000000 3.34s user 0.01s system 99% cpu 3.352 total double : ./bench 1000000 0.33s user 0.01s system 100% cpu 0.337 total ========================================================== Timings for 10^4 calls to : bench_root_bounds(0.123456789, 0.987654321) ------------------------- void bench_root_bounds(const NT &x, const NT &y) { NT e = (sqrt(x) + sqrt(y)) - sqrt(x + y + NT(2)*sqrt(x*y)); assert(e == 0); } CORE::Expr : ./bench 10000 33.39s user 0.05s system 99% cpu 33.468 total leda_real (4.2) : ./bench 10000 54.08s user 0.12s system 99% cpu 54.245 total CGAL::Lazy_exact_nt : ./bench 10000 34.82s user 0.07s system 99% cpu 34.895 total CGAL::Lazy_exact_nt : ./bench 10000 54.58s user 0.08s system 99% cpu 54.703 total ========================================================== bench_root_bounds(123456789, 987654321); // 9 digits integers CORE::Expr : ./bench 10000 40.85s user 0.03s system 99% cpu 40.885 total leda_real : ./bench 10000 12.37s user 0.02s system 99% cpu 12.411 total ========================================================== bench_root_bounds(1234, 9876); // 4 digits integers CORE::Expr : ./bench 10000 16.12s user 0.02s system 99% cpu 16.150 total leda_real : ./bench 10000 8.19s user 0.03s system 99% cpu 8.228 total ========================================================== bench_root_bounds(123456789.0 / (1<<30), 987654321.0 / (1<<30)); CORE::Expr : ./bench 10000 58.82s user 0.03s system 99% cpu 58.856 total leda_real : ./bench 10000 52.41s user 0.04s system 99% cpu 52.459 total ========================================================== bench_root_bounds((123456789.0 / (1<<30))/ (1<<30), (987654321.0 / (1<<30))/ (1<<30)); // integer shifted CORE::Expr : ./bench 10000 65.83s user 0.05s system 99% cpu 1:05.90 total leda_real : ./bench 10000 51.68s user 0.06s system 99% cpu 51.742 total core++-1.7/progs/testFilter/createMatrices.cpp0100644000175000001440000000406410130271053020703 0ustar joachimusers/* ************************************** File: createMatrices.cpp Purpose: To generate random matrices for testing. Each entry is given as a pair of integers. The outfile format has the following format: line 1: N = number of matrices line 2: d = dimension of matrices Subsequent lines has a pair of integers. These pairs represent a single entry, and the entries are listed in row-major order. Usage: % createMatrices fname N d b where fname = output file name N = the number of matrices d = dimension of the matrices b = bit length of entries Since CORE Library 1.4 $Id: createMatrices.cpp,v 1.6 2004/10/04 15:54:19 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include #include #include "CORE.h" int main( int argc, char *argv[] ) { int matrices; int dim; int bitLen; char filename[256]; if (argc != 5) { std::cout << "Usage: createMatrices " << " " << std::endl; exit(1); } strcpy(filename, argv[1]); matrices = atoi(argv[2]); dim = atoi(argv[3]); bitLen = atoi(argv[4]); std::ofstream ofs(filename); if ( !ofs ) { std::cout << "Cannot open the output file!" << std::endl; exit(1); } std::cout << "Generate " << matrices << " random matrices..." << std::endl; // write the total number of randomly generated matrices ofs << matrices << std::endl; // write the dimension of the matrix ofs << dim << std::endl; ofs << std::endl; // write the matrices BigInt x, y; BigInt BASE1 = 1; BASE1 <<= (bitLen - 1); BigInt BASE2 = 1; BASE2 <<= bitLen; unsigned int seed1 = (unsigned int) (time(NULL) % UINT_MAX); srand(seed1); for (int k=0; k< matrices; k++) { for (int i=0; i ./createMatrices inputs/1000x3x10matrices 1000 3 10 Generate 1000 random matrices... Done. > ./testFilter inputs/1000x3x10matrices CORRECT! Total USER time spent w/ filter : 0.54 seconds Total USER time spent w/o filter : 1.8 seconds Speedup: 70% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TEST 2: This is equivalent to "make test" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% =========================================================== MATRIX w/filter w/o filter % speedup ======== ======== ========== ========= 200x3x10 0.15 seconds 0.3 seconds 50% 200x4x20 0.23 1.14 79% 200x5x30 0.4 2.95 86% =========================================================== %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TEST 3: This is equivalent to "make moretest" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% =========================================================== MATRIX w/filter w/o filter % speedup ======== ======== ========== ========= 1000x2x10 0.23 seconds 0.54 seconds 57% 1000x3x10 0.57 1.81 68% 1000x4x10 1.06 5.61 81% 500x5x10 1.19 6.62 82% 500x6x10 9.05 14.17 36% 500x7x10 25.49 28.32 9% 500x8x10 38.79 42.19 8% =========================================================== %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TEST 4: Using more bits %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% =========================================================== MATRIX w/filter w/o filter % speedup ======== ======== ========== ========= 200x10x100 40.49 seconds 40.75 seconds 0% 200x20x100 558.76 565.84 1% =========================================================== core++-1.7/progs/testFilter/testFilter.cpp0100644000175000001440000001216310130271053020074 0ustar joachimusers/* ******************************************************************** File: testFilter.cpp Purpose: This program is an adaptation of gaussian.cc to test the effectiveness of our implementation of the BFS filter. Please see the README file in $(CORE_PATH)/progs/gaussian for details about the original program. Usage: % testFilter where is the name of an ascii file containing matrices, each of dimension . The first two integers in in are and . The remaining entries contains the entries of each of the matrices in the usual row major order. In particular, the program "createMatrices" produce such input files. A sample input file named "inputs/1000x4matrices" may be found in this directory. Since CORE Library Version 1.4 $Id: testFilter.cpp,v 1.11 2004/10/04 15:54:19 exact Exp $ ******************************************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include #include #include "CORE.h" using namespace std; class Matrix { private: int n; double* _rep; public: Matrix(int d) : n(d) { _rep = new double [n*n]; } Matrix(int d, double M[]); Matrix(const Matrix&); const Matrix& operator=(const Matrix&); ~Matrix() { delete [] _rep; } const double& operator()(int r, int c) const { return _rep[r * n + c]; } double& operator()(int r, int c) { return _rep[r * n + c]; } double determinant(int k) const; friend ostream& operator<<(ostream&, const Matrix&); }; Matrix::Matrix(int d, double M[]) : n(d) { int i, j; _rep = new double [n*n]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M[i * n + j]; } Matrix::Matrix(const Matrix& M) : n(M.n) { int i, j; _rep = new double [n*n]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M._rep[i * n + j]; } const Matrix& Matrix::operator=(const Matrix& M) { int i, j; if (n != M.n) { delete [] _rep; n = M.n; _rep = new double [n*n]; } for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M._rep[i * n + j]; return *this; } // This is the pivoting version of Gaussian elimination: // double Matrix::determinant(int ID) const { Matrix A = *this; double det; int * permutation = new int[n]; int swap_counter = 0; int i, j, k; // init permutation for (i = 0; i < n; i++) permutation[i]=i; // main loop for (i = 0; i < n-1; i++) { // pivot test, want (A(i,i) != 0); int pivot = i; while (pivot < n && A(i, permutation[pivot]) == 0) pivot++; // check if determinant is 0: if (pivot == n) { delete[] permutation; return 0; } // check if permutation needs update: if (pivot != i) { swap(permutation[i], permutation[pivot]); swap_counter++; } for (j = i + 1; j < n; j++) for (k = i + 1; k < n; k++) { A(j,permutation[k]) -= A(j,permutation[i]) * A(i,permutation[k])/A(i,permutation[i]); } } det = 1.0; for (i = 0; i < n; i++) det *= A(i,permutation[i]); if ((swap_counter & 1) != 0) det = -det; delete[] permutation; return det; } ostream& operator<<(ostream& o, const Matrix& M) { int i, j; for (i = 0; i < M.n; i++) { for (j = 0; j < M.n; j++) { o << M(i, j) << " "; } o << endl; } return o; } void testing(char* filename) { machine_long u1=0, u2=0, total1=0, total2=0; int number_of_matrices; int dim = 0; ifstream ifs(filename); if ( !ifs ) { cout << "Cannot open the input file!" << endl; exit(1); } ifs >> number_of_matrices; ifs >> dim; double x, y; double* A = new double[dim*dim]; double* B = new double[dim*dim]; int sign1, sign2; int count_errors = 0; // count_errors= number of different signs for (int k=0; k< number_of_matrices; k++) { for (int i=0; i> x; ifs >> y; A[i] = x/y; B[i] = x/y; } Matrix m1(dim, A); Matrix m2(dim, B); setFpFilterFlag(true); u1 = clock(); sign1 = (m1.determinant(k)).sign(); u2 = clock(); total1 += (u2 - u1); setFpFilterFlag(false); u1 = clock(); sign2 = (m2.determinant(k)).sign(); u2 = clock(); total2 += (u2 - u1); if (sign1 != sign2) { count_errors ++; cout << "ID = " << k << endl; } } ifs.close(); if (count_errors > 0) cout << "INCORRECT! " << count_errors << " error(s) found." << endl; else cout << "CORRECT!" << endl; cout << "Total USER time spent w/ filter : " << \ ((float)total1) / CLOCKS_PER_SEC << " seconds" << endl; cout << "Total USER time spent w/o filter : " << \ ((float)total2) / CLOCKS_PER_SEC << " seconds" << endl; cout << "Speedup: " << (float)((total2-total1)*100)/total2 << "%" << endl; return ; } int main( int argc, char *argv[] ) { char filename[256]; if (argc != 2) { cout << "Usage: testFilter " << endl; exit(1); } strcpy(filename, argv[1]); testing(filename); return 0; } core++-1.7/progs/testFilter/timeFilter.cpp0100644000175000001440000001103110130271054020045 0ustar joachimusers/* ******************************************************************** File: timeFilter.cc Purpose: This program is an adaptation of gaussian.cc to test the effectiveness of our implementation of the BFS filter. Please see the README file in $(CORE_PATH)/progs/gaussian for details about the original program. Usage: % timeFilter where is the name of an ascii file containing matrices, each of dimension . The first two integers in in are and . The remaining entries contains the entries of each of the matrices in the usual row major order. In particular, the program "createMatrices" produce such input files. A sample input file named "inputs/1000x4matrices" may be found in this directory. Since CORE Library Version 1.4 $Id: timeFilter.cpp,v 1.6 2004/10/04 15:54:20 exact Exp $ ******************************************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include #include #include "CORE.h" class Matrix { private: int n; double* _rep; public: Matrix(int d) : n(d) { _rep = new double [n*n]; } Matrix(int d, double M[]); Matrix(const Matrix&); const Matrix& operator=(const Matrix&); ~Matrix() { delete [] _rep; } const double& operator()(int r, int c) const { return _rep[r * n + c]; } double& operator()(int r, int c) { return _rep[r * n + c]; } double determinant() const; friend std::ostream& operator<<(std::ostream&, const Matrix&); }; Matrix::Matrix(int d, double M[]) : n(d) { int i, j; _rep = new double [n*n]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M[i * n + j]; } Matrix::Matrix(const Matrix& M) : n(M.n) { int i, j; _rep = new double [n*n]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M._rep[i * n + j]; } const Matrix& Matrix::operator=(const Matrix& M) { int i, j; if (n != M.n) { delete [] _rep; n = M.n; _rep = new double [n*n]; } for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M._rep[i * n + j]; return *this; } double Matrix::determinant() const { Matrix A = *this; double det; int i, j, k; for (i = 0; i < n; i++) { // This is the non-pivoting version of // Gaussian elimination: // assert(A(i,i) != 0); for (j = i + 1; j < n; j++) for (k = i + 1; k < n; k++) { A(j,k) -= A(j,i)*A(i,k)/A(i,i); } } det = 1.0; for (i = 0; i < n; i++) det *= A(i,i); return det; } std::ostream& operator<<(std::ostream& o, const Matrix& M) { int i, j; for (i = 0; i < M.n; i++) { for (j = 0; j < M.n; j++) { o << M(i, j) << " "; } o << std::endl; } return o; } int timing(char* filename, bool filterFlag) { machine_long u1=0, u2=0, total=0; int number_of_matrices; int dim; std::ifstream ifs(filename); if ( !ifs ) { std::cout << "Cannot open the input file!" << std::endl; exit(1); } ifs >> number_of_matrices; ifs >> dim; double x, y; double e; double* A = new double[dim*dim]; int sign; int count[3] = {0, 0, 0}; // count[0]= number of negative determinants, etc // do test with filter flag setFpFilterFlag(filterFlag); for (int k=0; k< number_of_matrices; k++) { //std::cout << "k=" << k << ": "; for (int i=0; i> x; ifs >> y; //std::cout << "x=" << x << ", y=" << y << std::endl; A[i] = x/y; } // assign A to the matrix Matrix m(dim, A); u1 = clock(); sign = (m.determinant()).sign(); u2 = clock(); total += (u2 - u1); count[1 + sign]++; // how many determinants of each sign is produced } ifs.close(); std::cout << " Number of (-, 0, +) determinants = (" << count[0] << ", " << count[1] << ", " << count[2] << ")" << std::endl; return total; } int main( int argc, char *argv[] ) { char filename[256]; int total1, total2; if (argc != 2) { std::cout << "Usage: timeFilter " << std::endl; exit(1); } strcpy(filename, argv[1]); total1 = timing(filename, true); total2 = timing(filename, false); std::cout << "Total USER time spent w/ filter : " << \ ((float)total1) / CLOCKS_PER_SEC << " seconds" << std::endl; std::cout << "Total USER time spent w/o filter : " << \ ((float)total2) / CLOCKS_PER_SEC << " seconds" << std::endl; std::cout << "Speedup: " << (total2-total1)*100/total2 << "%" << std::endl; return 0; } core++-1.7/progs/testFilter/timeFilter1.cpp0100644000175000001440000001106410130271054020134 0ustar joachimusers/* ******************************************************************** File: timeFilter.cc Purpose: This program is an adaptation of gaussian.cc to test the effectiveness of our implementation of the BFS filter. Please see the README file in $(CORE_PATH)/progs/gaussian for details about the original program. Usage: % timeFilter where is the name of an ascii file containing matrices, each of dimension . The first two integers in in are and . The remaining entries contains the entries of each of the matrices in the usual row major order. In particular, the program "createMatrices" produce such input files. A sample input file named "inputs/1000x4matrices" may be found in this directory. Since CORE Library Version 1.4 $Id: timeFilter1.cpp,v 1.6 2004/10/04 15:54:20 exact Exp $ ******************************************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include #include #include "CORE.h" class Matrix { private: int n; double* _rep; public: Matrix(int d) : n(d) { _rep = new double [n*n]; } Matrix(int d, double M[]); Matrix(const Matrix&); const Matrix& operator=(const Matrix&); ~Matrix() { delete [] _rep; } const double& operator()(int r, int c) const { return _rep[r * n + c]; } double& operator()(int r, int c) { return _rep[r * n + c]; } double determinant() const; friend std::ostream& operator<<(std::ostream&, const Matrix&); }; Matrix::Matrix(int d, double M[]) : n(d) { int i, j; _rep = new double [n*n]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M[i * n + j]; } Matrix::Matrix(const Matrix& M) : n(M.n) { int i, j; _rep = new double [n*n]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M._rep[i * n + j]; } const Matrix& Matrix::operator=(const Matrix& M) { int i, j; if (n != M.n) { delete [] _rep; n = M.n; _rep = new double [n*n]; } for (i = 0; i < n; i++) for (j = 0; j < n; j++) _rep[i * n + j] = M._rep[i * n + j]; return *this; } double Matrix::determinant() const { Matrix A = *this; double det; int i, j, k; for (i = 0; i < n; i++) { // This is the non-pivoting version of // Gaussian elimination: // assert(A(i,i) != 0); for (j = i + 1; j < n; j++) for (k = i + 1; k < n; k++) { A(j,k) -= A(j,i)*A(i,k)/A(i,i); } } det = 1.0; for (i = 0; i < n; i++) det *= A(i,i); return det; } std::ostream& operator<<(std::ostream& o, const Matrix& M) { int i, j; for (i = 0; i < M.n; i++) { for (j = 0; j < M.n; j++) { o << M(i, j) << " "; } o << std::endl; } return o; } int timing(char* filename, bool filterFlag) { machine_long u1=0, u2=0, total=0; int number_of_matrices; int dim; std::ifstream ifs(filename); if ( !ifs ) { std::cout << "Cannot open the input file!" << std::endl; exit(1); } ifs >> number_of_matrices; ifs >> dim; double x, y; double e; double* A = new double[dim*dim]; int sign; int count[3] = {0, 0, 0}; // count[0]= number of negative determinants, etc // do test with filter flag setFpFilterFlag(filterFlag); for (int k=0; k< number_of_matrices; k++) { //std::cout << "k=" << k << ": "; for (int i=0; i> x; ifs >> y; //std::cout << "x=" << x << ", y=" << y << std::endl; A[i] = x; // we only take numerator. } // assign A to the matrix Matrix m(dim, A); u1 = clock(); sign = (m.determinant()).sign(); u2 = clock(); total += (u2 - u1); count[1 + sign]++; // how many determinants of each sign is produced } ifs.close(); std::cout << " Number of (-, 0, +) determinants = (" << count[0] << ", " << count[1] << ", " << count[2] << ")" << std::endl; return total; } int main( int argc, char *argv[] ) { char filename[256]; int total1, total2; if (argc != 2) { std::cout << "Usage: timeFilter " << std::endl; exit(1); } strcpy(filename, argv[1]); total1 = timing(filename, true); total2 = timing(filename, false); std::cout << "Total USER time spent w/ filter : " << \ ((float)total1) / CLOCKS_PER_SEC << " seconds" << std::endl; std::cout << "Total USER time spent w/o filter : " << \ ((float)total2) / CLOCKS_PER_SEC << " seconds" << std::endl; std::cout << "Speedup: " << (total2-total1)*100/total2 << "%" << std::endl; return 0; } core++-1.7/progs/testFilter/inputs/0040755000175000001440000000000010147210064016570 5ustar joachimuserscore++-1.7/progs/testFilter/inputs/README0100644000175000001440000000211007437361201017447 0ustar joachimusersREADME FILE: Randomly Generated Matrices & Timing Results ############################################################ 1. Input files. The input files in this directory contains randomly generated square matrices. Each file contains NNN matrices, each of dimension DDD. If NNN=1000 and DDD=4, then the file is named 1000x4matrices Here are some of the files: 1000x2matrices 1000x3matrices 1000x4matrices 500x5matrices 500x6matrices 2. How are the matrices generated? The entrices of all matrices are generated by the following formula: int L = 10; BigInt BASE1 = 1; BASE1 <<= (L-1); BigInt BASE2 = 2; BASE2 <<= L; double x = BASE1 + randomize(BASE1); double y = BASE2 + randomize(BASE2); "entry of matrix" = x/y; 3. Timing results (time in seconds) INPUT FILE w/ filter (sec) w/o filter(sec) Speedup (%) ============== =============== =============== =========== 500x6matrices 28.65 37.77 24.15% 500x5matrices 10.15 20.23 49.83% 1000x4matrices 9.94 17.55 43.36% 1000x3matrices 3.8 6.35 40.16% 1000x2matrices 1.31 2.03 35.47% core++-1.7/progs/testIO/0040755000175000001440000000000010147210064014330 5ustar joachimuserscore++-1.7/progs/testIO/Makefile0100644000175000001440000000237410144502446016000 0ustar joachimusers# Makefile for testIO # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.11 2004/11/10 21:16:22 exact Exp $ include ../Make.options #================================================= # variables #================================================= verbose= verbose=1 #================================================= # Define target files (put all your files here) #================================================= TARGETS= testIO MORETARGETS= testSqrt default: $(TARGETS) all: $(TARGETS) $(MORETARGETS) test: $(TARGETS) ./testIO moretest: $(MORETARGETS) ./testSqrt 997 10 $(verbose) testIO: testIO.o testSqrt: testSqrt.o sqrt: sqrt.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/testIO/README0100644000175000001440000000273207735757025015237 0ustar joachimusersFile: README for testIO Directory Core Library $Id: README,v 1.3 2003/09/29 07:24:05 exact Exp $ ============================================================================= SYNOPSIS: This program tests the output routines in Core Library. These test are very important for our library, in view of our emphasis on significance arithmetic in our Core Accuracy model. We cannot afford to have unpredictable numerical I/O properties! There are two programs: (1) testIO.ccp: illustrates basic I/O features -- significance arithmetic (internally) as well as "significance output" (no printed digit is wrong except the last digit can be off by 1). For this purpose, it must be remembered that 1.999 is an acceptable output for any number in the range [1.998,2.000]. -- how to set default precision e.g., setDefaultPrecision(160, CORE_INFTY) -- how to set output (or print) precision e.g., setDefaultPrintDigits(6) -- how default precision and output precision interact in outputs -- the 2 modes for output: scientific vs. positional notation (2) testSqrt.cpp: illustrates the behavior of Expr::doubleValue() -- the method Expr::doubleValue() converts an Expr to the reasonably machine double value. When the output precision of cout is set to 14, you will not see any difference between our computed value and the IEEE value. ============================================================================= core++-1.7/progs/testIO/testIO.cpp0100644000175000001440000002607110130270573016251 0ustar joachimusers/* ************************************************ File: testIO.cpp Purpose: To test the numerical output routines. These are considered very important functions in our library, as the integrity of the internal computation cannot be verified unless we can exactly control the input and output of numbers. Usage: % testIO Author: Chee Yap (yap@cs.nyu.edu) Since Core Library 1.4 $Id: testIO.cpp,v 1.8 2004/10/04 15:51:23 exact Exp $ ************************************************ */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE.h" int main( int argc, char *argv[] ) { // CORE_init(8); // This method is recommended in all CORE programs. // The parameter 8 sets the std::cout precision to 8. setDefaultOutputDigits(8); double one = 1.0; double three = 3.0; double one_third = one / three; std::cout << "OUTPUT FOR THE Expr VALUE 1.0/3.0\n"; std::cout << " computed to relative precision 120: \n" ; setDefaultPrecision(120, CORE_posInfty); std::cout << " (1) Output In Positional Notation\n"; std::cout << " Default std::cout precision (=8): " << one_third << std::endl; std::cout << " Cout precision 12: " << std::setprecision(12) << one_third << std::endl; std::cout << " Cout precision 36: " << std::setprecision(36) << one_third << std::endl; std::cout << " Cout precision 37: " << std::setprecision(37) << one_third << std::endl; std::cout << " Cout precision 38: " << std::setprecision(38) << one_third << std::endl; std::cout << " Cout precision 39: " << std::setprecision(39) << one_third << std::endl; std::cout << " Cout precision 40: " << std::setprecision(40) << one_third << std::endl; std::cout << " Cout precision 41: " << std::setprecision(41) << one_third << std::endl; std::cout << " Cout precision 42: " << std::setprecision(42) << one_third << std::endl; std::cout << " Cout precision 43: " << std::setprecision(43) << one_third << std::endl; std::cout << " Cout precision 44: " << std::setprecision(44) << one_third << std::endl; std::cout << " Cout precision 46: " << std::setprecision(46) << one_third << std::endl; std::cout << " Cout precision 48: " << std::setprecision(48) << one_third << std::endl; std::cout << " N.B. 120 bits = 36.123 digits. Above, we have asked to see \n"; std::cout << " more and more bits of the computed value. The output will indeed \n"; std::cout << " show more and more bits, until all significant bits are used up.\n"; std::cout << " This should happen AFTER 37 digits but hopefully before 48 digits\n"; std::cout << " (2) Output In Scientific Notation\n"; // presently scientific manipulator is not supported by g++ std::cout << std::setprecision(10); std::cout.setf(std::ios::scientific, std::ios::floatfield); std::cout << " Default Cout precision:" << one_third << std::endl; std::cout << " Cout precision 12: " << std::setprecision(12) << one_third << std::endl; std::cout << " Cout precision 24: " << std::setprecision(24) << one_third << std::endl; std::cout << " Cout precision 25: " << std::setprecision(25) << one_third << std::endl; std::cout << " Cout precision 36: " << std::setprecision(36) << one_third << std::endl; std::cout << " Cout precision 48: " << std::setprecision(48) << one_third << std::endl; std::cout.setf(std::ios::fixed, std::ios::floatfield); std::cout << std::setprecision(10); std::cout << " (3) Default Print Digits (a Core library parameter)\n"; std::cout.precision(6); std::cout << "Output precision: " << std::cout.precision() << ", precision [r=67, a=INFTY]" << std::endl; std::cout << " one_third = " << one_third << std::endl << std::endl; std::cout.precision(20); std::cout << "Output precision: " << std::cout.precision() << ", precision [r=67, a=INFTY]" << std::endl; std::cout << " one_third = " << one_third << std::endl << std::endl; std::cout.precision(30); std::cout << "The precision is not sufficient for 30 decimal digits!" << std::endl; std::cout << "Output precision: " << std::cout.precision() << ", precision [r=67, a=INFTY]" << std::endl; std::cout << "one_third = " << one_third << std::endl << std::endl; std::cout << "Set the precision to [r=100, a=INFTY] to get it right: " << std::endl; setDefaultPrecision(100, CORE_posInfty); std::cout << "Output precision: " << std::cout.precision() << ", precision [r=100, a=INFTY]" << std::endl; std::cout << "one_third = " << one_third << std::endl << std::endl; // test rounding and etc... setDefaultPrecision(54, CORE_posInfty); std::cout.precision(16); std::cout << "Precisions: [54, INFTY] (simulating machine double precision) \n" << " This print out 16 digits..." << std::endl; std::cout.precision(10); double e0 = 0.01234; double e1 = 0.00000000012345; double e2 = 0.0000000001234567890123; double e3 = 1.2; double e4 = 123.456; double e5 = 123456789; double e6 = 123456789.0123456; // debugging: double e7 = BigFloat("1234567890123.456"); double e8 = 1234567890123456.0; double e9 = 0.023; double e10 = 123456789.50001; double e11 = 123456789.49999; double e12 = 199999999.50001; double e13 = 999999999.50001; double ne0 = -.01234; double ne1 = -0.00000000012345; double ne2 = -0.0000000001234567890123; double ne3 = -1.2; double ne4 = -123.456; double ne5 = -123456789; double ne6 = -123456789.0123456; double ne7 = -1234567890123.456; double ne8 = -1234567890123456.0; double ne9 = -0.023; std::cout << " e0 ( 0.01234 ) : " << e0 << std::endl; std::cout << " e1 ( 0.00000000012345 ) : " << e1 << std::endl; std::cout << " e2 ( 0.0000000001234567890123 ) : " << e2 << std::endl; std::cout << " e3 ( 1.2 ) : " << e3 << std::endl; std::cout << " e4 ( 123.456 ) : " << e4 << std::endl; std::cout << " e5 ( 123456789 ) : " << e5 << std::endl; std::cout << " e6 ( 123456789.0123456 ) : " << e6 << std::endl; std::cout << " e7 ( 1234567890123.456 ) : " << e7 << std::endl; std::cout << " e8 ( 1234567890123456.0 ) : " << e8 << std::endl; std::cout << " e9 ( 0.023 ) : " << e9 << std::endl; #if CORE_LEVEL == 1 std::cout << " e9 ( 0.023 ) : " << std::setprecision(30) < 4 * CORE_EPS * e (2) WARNING: |machine sqrt(i) - X | > 0 (but not an error) (3) CORRECT: |machine sqrt(i) - X | = 0 Here, 2 * CORE_EPS = 2^{-52} = 2.22045e-16 is the relative error. This value is also known as the machine epsilon. Why did we use 4 * CORE_EPS = 4.44089e-16? Because the machine arithmetic may introduce an error of 2 * CORE_EPS, and our doubleValue() may introduce an error of 2 * CORE_EPS. RESULTS: In a test of sqrt(i) (for i=2,...,1200), the worst relative error is achieved at i=66, 257, 1028. (i.e., just above powers of 2, as expected). The largest relative error achieved is 4.43224e-16. For i around 16,000, the largest relative error is achieved at sqrt(16,385) with 4.44075e-16. So our 4*CORE_EPS bound is essentially tight. BUG/FEATURE: -- doubleValue() does not check for overflow or underflows. -- Expr::doubleValue() can result in error -- this will be fixed. -- It is possible to tighten Core Library's doubleValue() to that we avoid all WARNINGS altogether. Perhaps we should do this. Author: Chee Yap (yap@cs.nyu.edu) Date: Sept 28, 2003. Revised, Mar 19, 2004. Since Core Library Version 1.6 $Id: testSqrt.cpp,v 1.7 2004/10/04 15:51:23 exact Exp $ ************************************************ */ //# define CORE_DEBUG #ifndef CORE_LEVEL # define CORE_LEVEL 4 #endif #include "CORE/Expr.h" using namespace std; using namespace CORE; Expr test(double n, bool showFlag){ Expr e = sqrt(Expr(n)); // this value is exact! double d = e.doubleValue(); // this value is what we want to check double dd = sqrt(n); // this value is the IEEE approximation std::string s = e.toString(); //using default Output Precision Expr relerr(0.0); if (showFlag) { cout << endl; cout << "===================== SETPRECISION(15) ==================\n"; cout << setprecision(15); cout << " Expr: sqrt(" << n << ") = " << e << endl; cout << " doubleVal: sqrt(" << n << ") = " << d << endl; cout << " Machine: sqrt(" << n << ") = " << dd << endl; cout << " STRING OUTPUT = " << s << endl; cout << "===================== SETPRECISION(14) ==================\n"; cout << setprecision(14); cout << " Expr: sqrt(" << n << ") = " << e << endl; cout << " doubleVal: sqrt(" << n << ") = " << d << endl; cout << " Machine: sqrt(" << n << ") = " << dd << endl; cout << " ======= NOTE: the last three output should agree =====\n"; cout << "===================== SELF-VALIDATION ===================\n"; } /* **************** DO SELF-VALIDATION ********* */ if (d != dd) { relerr = core_abs(Expr(d) - Expr(dd))/e; if ( (relerr > 4*Expr(CORE_EPS)) && showFlag ) { cout<<" ERROR: | doubleVal - MachineVal | = " << relerr << " > 4 * CORE_EPS " << endl; } else if (showFlag) cout<< " WARNING: | doubleVal - MachineVal | = " << relerr << endl; } else if (showFlag) cout << " CORRECT: doubleVal = MachineVal !! " << endl; return relerr; // this ought to be bounded by 4*CORE_EPS } int main(int argc, char** argv) { // DEFAULT ARGUMENTS double n = 2.0; int k = 0; bool showFlag = false; // USER SUPPLIED ARGUMENTS if (argc > 1) n = atoi(argv[1]); if (argc > 2) k =atoi(argv[2]); if (argc > 3) showFlag = true; // DO THE TEST Expr maxError(0.0), curError; double worsti = 0; if (k == 0) test(n, showFlag); else for (double i=n; i ErrBound" << endl; else cout<< " CORRECT! RelErr <= ErrBound" << endl; } return 0; } core++-1.7/progs/testIdent/0040755000175000001440000000000010147210064015064 5ustar joachimuserscore++-1.7/progs/testIdent/Makefile0100644000175000001440000000215410144502451016524 0ustar joachimusers# Makefile for testIdent # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.7 2004/11/10 21:16:25 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= TARGETS= testIdent MORETARGETS= testBound all: $(TARGETS) test: $(TARGETS) ./testIdent moretest: $(TARGETS) $(MORETARGETS) ./testBound ./testIdent 1 ./testBound 1 testIdent: testIdent.o testBound: testBound.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/testIdent/README0100644000175000001440000000115107722017103015743 0ustar joachimusersFile: README for testIdent Core Library, $Id: README,v 1.2 2003/08/24 02:09:07 exact Exp $ ============================================================================= SYNOPSIS: testIdent.ccp includes a set of identity tests involving various basic arithmetic opertaions. Most of them are adapted from a similar test program in the LiDIA distribution. testBound.cpp -- further tests TO DO: Not all CORE functions are exercised here! testIdent is basically for Level 3 Accuracy. Ought to extend to all the other levels. ============================================================================= core++-1.7/progs/testIdent/testBound.cpp0100644000175000001440000000441510130270466017544 0ustar joachimusers/* ************************************************ File: testBound.ccp Purpose: To test functions based on inequalities. Currently, we test the following functions in Expr class: ceil, floor, ceilLg, floorLg Ultimately, should extend to other number types as well. Usage: % testBound Author: Chee Yap Since Core Library 1.7 $Id: testBound.cpp,v 1.2 2004/10/04 15:50:14 exact Exp $ ************************************************ */ #define CORE_LEVEL 4 #include "CORE.h" using namespace std; // THESE ARE NOT DEFINED BY CORE: // already in gmp: #define ABS(x) ((x) >= 0 ? (x) : -(x)) #define MIN(l,o) ((l) < (o) ? (l) : (o)) #define MAX(h,i) ((h) > (i) ? (h) : (i)) // boundTest: // Note that ceil and floor return BigInts // But ceilLg and floorLg return long void boundTest(const Expr& a) { assert(a <= ceil(a)); assert(-a <= ceil(-a)); assert(a >= floor(a)); assert(-a >= floor(-a)); int e; if (a > 0) { e = ceilLg(a); // we assume int and long are equal!! assert(Expr(BigFloat::exp2(e)) >= a); e = floorLg(a); // we assume int and long are equal!! cout << "floorLg(a) = " << e << endl; assert(Expr(BigFloat::exp2(e)) <= a); } } int main(int argc, char* argv[]) { cout << " ====================== Start Bound Test ===================\n"; // Boundary Tests: cout << " -- testing 0" << endl; boundTest(Expr(0)); cout << " -- testing 1" << endl; boundTest(Expr(1)); cout << " -- testing -1" << endl; boundTest(Expr(-1)); cout << " -- testing 0.5" << endl; boundTest(Expr(0.5)); // Some Tests: cout << " -- testing 9876543210" << endl; boundTest(Expr("9876543210")); cout << " -- testing 12321.9876" << endl; boundTest(Expr("12321.9876")); cout << " -- testing 98765/43210" << endl; boundTest(Expr("98765/4321")); // bug! test fails: #ifdef DEBUG cout << " -- testing 9876/543210" << endl; boundTest(Expr("9876/54321")); #endif // if more tests wanted: if (argc == 1) cout << " -- For more test, call testBound with any argument" << endl; else { cout << " -- testing loop" << endl; for (int i=2; i<20; i++) boundTest(Expr(i)); } cout << " ====================== End Bound Test =====================\n"; return 0; } core++-1.7/progs/testIdent/testIdent.cpp0100644000175000001440000000712710130270466017543 0ustar joachimusers/* ************************************************ File: testIdent.ccp Purpose: To test some basic identities in the Core Library This suite of tests is taken from LiDIA distribution. Usage: % testIdent COMMENT: The tests are currently mostly based on the four arithmetic operators and sqrt. Should extend of all of CORE functions. Should also test boundary conditions. Since Core Library 1.3 $Id: testIdent.cpp,v 1.6 2004/10/04 15:50:14 exact Exp $ ************************************************ */ #define CORE_LEVEL 3 #include "CORE/CORE.h" // THESE ARE NOT DEFINED BY CORE: // already in gmp: #define ABS(x) ((x) >= 0 ? (x) : -(x)) #define MIN(l,o) ((l) < (o) ? (l) : (o)) #define MAX(h,i) ((h) > (i) ? (h) : (i)) // identitytest(a, b, c): // Added conditional tests, to allow a and b to be zero. // --Chee 8/2003 void identitytest(const double& a, const double& b, const double& c) { double addab = a + b; // all these definitions help to double mulab = a * b; // speed up the test a little double addbc = b + c; double mulbc = b * c; double subab = a - b; double divab = 0; if (b != 0) divab = a / b; assert( -(-a) == a); assert( (addab) == (b + a)); assert( (a + (-b)) == (subab)); assert( (a + (-b)) == (b - a + 2*a - 2*b)); assert( (mulab) == (b * a)); assert( (a * (-b)) == -(a * b)); if (b != 0) assert( (a / (-b)) == -(divab)); assert( (subab) == -(b - a)); assert( (a + (addbc)) == ((addab) + c)); assert( (a + (addbc)) == ((a + c) + b)); assert( (a * (mulbc)) == ((mulab) * c)); assert( (a * (mulbc)) == ((c * a) * b)); assert( (a * (addbc)) == ((mulab) + (a * c))); assert( ((subab) + b) == a); assert( ((addab) - b) == a); if (a != 0) assert( ((mulab) / b) == a); if (a != 0) assert( ((mulab) / a) == b); if (mulab != 0) assert( ((divab) / a) == (1/b)); // sqrts: double e = sqrt(a*a - (2*a*b) + b*b) - fabs(subab); assert(e == 0); // THE FOLLOWING HAVE NO ANALOGUE IN CORE LIBRARY: // double d; // negate(d, a); assert( -(d) == a); // add(d, b, a); assert( (a + b) == d); // subtract(d, a , b); assert( (a + (-b)) == d); // negate(d, b); assert( (a + d) == (b - a+2*a - 2*b)); // d.assign(a); d.multiply_by_2(); assert( (a + a) == d); // multiply(d, a, b); assert( d == (b * a)); // d.assign(b); d.negate(); multiply(d, a, d); assert( d == -(a * b)); // divide(d, a, b); assert( (a / (-b)) == -d); // add(d, b, c); multiply(d, a, d); assert(d == ((a * b) + (a * c))); // d = b; d.invert(); assert( ((a / b) / a) == d); } int main(int argc, char* argv[]) { double a, b, c; a = BigRat(100001,2000023); b = BigRat(7,999999); c = BigRat(3999,51145); identitytest(a,b,c); std::cout << "Finished First Identity Test \n"; a = rand(); b = rand(); c = rand(); std::cout << "Random test on (a,b,c)=("<< a << ", " << b << ", " << c << ")\n" ; identitytest(a,b,c); std::cout << "Finished Random Identity Test \n"; if (argc == 1) { std::cout << ">> To further exercise the program, rerun testIdenty\n" << "by giving it some (any) argument e.g. testIdent 1 \n"; exit(0); // we do not run the SLOW tests // below unless there is an argument } std::cout << "Entering loop \n"; // NOTE: if i, j are declared to be doubles, we have problem! for (double i=0; i<13 ; i++) for (double j=100; j > 0; j -= 10) { std::cout << "(i,j) = (" << i << "," << j << ")\n"; a = i/j; b = sqrt(i) / sqrt(101+j); if (i == 0) c = 1999; else c = (i + 1999) / (i*j); identitytest(a,b,c); } return 0; } core++-1.7/progs/tests/0040755000175000001440000000000010147210064014263 5ustar joachimuserscore++-1.7/progs/tests/Makefile0100644000175000001440000000245610144502456015735 0ustar joachimusers# Core Library, $Id: Makefile,v 1.15 2004/11/10 21:16:30 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= p= floorLg p= zero p= wein_expr_3 TARGETS= MORETARGETS= floor_ceil bench #CXXFLAGS+= -pg all: $(TARGETS) p ${p}: ${p}.cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) ${p}.cpp -o ${p}.o ${CXX} $(LDFLAGS) ${p}.o $(CORE_LIB) -o ${p} test: $(TARGETS) moretest: $(MORETARGETS) ./floor_ceil ./bench floor_ceil: floor_ceil.o floorLg: floorLg.o length: length.o invalid: invalid.o bench: bench.o wein: wein_expr_3.o bench1: bench1.o tBigFloat: tBigFloat.o tt: tt.o itoa: itoa.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) core++-1.7/progs/tests/README0100644000175000001440000000064607656300423015160 0ustar joachimusersFile: README for tests Core Library, $Id: README,v 1.2 2003/05/07 21:56:35 exact Exp $ ============================================================================= SYNOPSIS: floor_ceil.cpp includes some tests for the functions "BigInt floor(Expr)" and "BigInt ceil(Expr)". invalid.cpp tests the behavior of CORE on invalid inputs ============================================================================= core++-1.7/progs/tests/bench.cpp0100644000175000001440000000423610130270303016042 0ustar joachimusers/* ************************************************ File: bench.cpp Purpose: Bench Usage: % bench [number of iterations] Author: Sylvain Pion, August 2002. Since Core Library 1.5 $Id: bench.cpp,v 1.6 2004/10/04 15:48:19 exact Exp $ ************************************************ */ #include #include #define CORE_LEVEL 4 #include "CORE.h" // Verifies that 0 == (sqrt(x)+sqrt(y))-sqrt(x+y-2*sqrt(x*y)) void bench_1(const Expr &x, const Expr &y) { Expr e = (sqrt(x) + sqrt(y)) - sqrt(x + y + 2*sqrt(x*y)); sign(e); // force to evaluate assert(e == 0); // Expr e = (sqrt(x) + sqrt(y)) + sqrt(x + y + 2*sqrt(x*y)); // assert(e != 0); // Print the root bound of e std::cerr << "root bound = " << e.Rep()->computeBound() << std::endl; } void bench_2(const Expr &x, const Expr &y) { Expr c = (sqrt(x) - sqrt(y)) / (x - y); Expr e = c-c; sign(e); // force to evaluate assert(e == 0); // Print the root bound of e std::cerr << "root bound = " << e.Rep()->computeBound() << std::endl; } void experiment_1(int loops) { for (int i=0; i #include #define CORE_LEVEL 4 #include "CORE.h" using namespace std; // Verifies if floor(e) and ceil(e) are equal to the expected values f and c. bool floor_ceil_test(const CORE::Expr & e, const CORE::BigInt & f, const CORE::BigInt & c) { bool result = (CORE::floor(e) == f) && (CORE::ceil(e) == c); if (!result) { cerr << "ERROR :" << endl; cerr << " Expression " << e << " was expecting :" << endl; cerr << " floor " << f << " but got instead : " << CORE::floor(e) << endl; cerr << " ceil " << c << " but got instead : " << CORE::ceil(e) << endl; } return result; } // Same as above, but also tests that : // floor(-e) == -ceil(e) and ceil(-e) == -floor(e). bool floor_ceil_test_2(const CORE::Expr & e, const CORE::BigInt & f, const CORE::BigInt & c) { return floor_ceil_test(e, f, c) && floor_ceil_test(-e, -c, -f); } int main() { bool OK = true; for (int i=0; i<10; i++) { // Integrals. OK = OK && floor_ceil_test_2(i, i, i); // Integrals but constructed from doubles. OK = OK && floor_ceil_test_2(1.0*i, i, i); // Large integrals to check for possible overflow bugs. CORE::BigInt bi = 1000000*CORE::BigInt(1000000)*CORE::BigInt(1000000); OK = OK && floor_ceil_test_2(CORE::Expr(bi), bi, bi); // Square roots of integrals (some of which are perfect squares...). double d = sqrt(1.0*i); CORE::Expr e = sqrt(CORE::Expr(i)); OK = OK && floor_ceil_test_2(e, (long) floor(d), (long) ceil(d)); // More could be added... } if (!OK) { cerr << "There was at least one ERROR!!" << endl; return -1; } cout << "CORRECT!! floor() and ceil() tested successfully" << endl; return 0; } core++-1.7/progs/tests/invalid.cpp0100644000175000001440000000404610130270303016410 0ustar joachimusers/* ************************************************ File: invalid.cpp Purpose: To test invalid input behavior This program was originally from Stefan Funke and Pion. In Core 1.5, when we construct an Expr (see Expr e below) from an invalid double (either infinite or NaN), the system will get into an infinite loop. We extended the program to test other invalid values: 1) constructing a leaf value from an invalid machine double 2) constructing a leaf value from an invalid machine float 3) dividing by zero -- the CORE code was done earlier by Pion 4) sqrt of a negative number, 5) constructing a leaf value from an invalid Algebraic Number Although the default behavior of Core is to abort when an invalid expression is constructed, you can turn off this automatic abortion by setting a flag Usage: % invalid Author: Chee and Zilin. Date: May 2003. Since Core Library Version 1.6 $Id: invalid.cpp,v 1.4 2004/10/04 15:48:19 exact Exp $ ************************************************ */ #define CORE_LEVEL 4 #include "CORE.h" using namespace std; int main(int argc, char **argv) { AbortFlag = false; // turn off automatic abortion on invalid expression double zero = 0.0; double infty = 1.0/zero; double NaN = 0.0/zero; float fzero = 0.0; float finfty = 1.0/fzero; float fNaN = 0.0/fzero; Expr e(infty); cout << "Invalid flag for double Infinity: " << InvalidFlag << endl; Expr f(NaN); cout << "Invalid flag for double NaN: " << InvalidFlag << endl; Expr g(finfty); cout << "Invalid flag for float Infinity: "<< InvalidFlag << endl; Expr h(fNaN); cout << "Invalid flag for float NaN: " << InvalidFlag << endl; Expr i = Expr(1.1); i /= Expr(0); cout << "Invalid flag for Dividing by Zero: " << InvalidFlag << endl; Expr j = Expr(1.1)/(Expr(4) - Expr(4)); cout << "Invalid flag for Dividing by Zero: " << InvalidFlag << endl; Expr k = sqrt(Expr(-1)); cout << "Invalid flag for Squareroot of a negative number: " << InvalidFlag << endl; return 0; } core++-1.7/progs/tests/tBigFloat.cpp0100755000175000001440000000671210130270303016642 0ustar joachimusers/* ************************************** File: tBigFloat.cpp Description: BigFloat has some unusual functions isDivisible, gcd, div_exact, etc which are needed to make Polynomial compatible with Polynomial. This is a test of these functions. These functions do not normally make sense for BigFloats, especially when a BigFloat is viewed as approximation. But we can define them sensibly when the BigFloat is exact (no error), in which case, they are just generalizations of the same concepts for rational numbers. I.e., we can define gcd(x,y), isDivisible(x,y) when x,y are rational numbers (see Yap's book). Usage: > tBigFloat Author: Chee Yap Date: July 20, 2004 Since Core Library Version 1.7 $Id: tBigFloat.cpp,v 1.3 2004/10/04 15:48:19 exact Exp $ ************************************** */ #ifndef CORE_LEVEL # define CORE_LEVEL 4 #endif #include "CORE/CORE.h" #include "CORE/poly/Curves.h" using namespace std; typedef BigInt NT; typedef Polynomial PolyNT; typedef std::vector VecNT; typedef std::vector > VecPoly; // ========================================================= // MAIN // ========================================================= int main(int argc, char* argv[]) { // GET INPUT ARGUMENTS int curveNo = 0; // which curve to display if (argc>1) curveNo = atoi(argv[1]); // SET INTERNAL PRECISION setDefaultAbsPrecision(CORE_posInfty); // puts defAbsPrec in control int prec = 100; setDefaultRelPrecision(prec); // put defRelPrec in control cout << setprecision(6); // output precision (6 digits) double x=2.4; double y=1.2; cout << "2.4 / 1.2 = " << x/y << endl; // output 2 BigFloat b( 35,0, -4); BigFloat c( 49,0, 3); BigFloat d( 7,0, 5); BigFloat e( 49,0, 1); // this is 49*2^{14}=802816 BigFloat f( 16,0, -1); BigFloat g( 10,0,0); BigFloat h( 1,0, 1); // this is 2^{14}=16384 /* output: BF(35,0,-4) = b =4.85723e-16 BF(49,0,3) = c =2.15504e+14 BF(7,0,5) = d =8.26414e+21 BF(49,0,1) = e =8.02816e+5 BF(16,0,-1) = f =0.00098 BF(10,0,0) = g =10. BF(1,0,1) = h =16384. e*g =8.02816e+6 gcd(b,c) = 9.71445e-17 gcd(d,c) = 3.07863e+13 gcd(b,d) = 9.71445e-17 gcd(e,d) = 1.14688e+5 e/h = 49. */ cout << "BF(35,0,-4) = b =" << b << endl; cout << "BF(49,0,3) = c =" << c << endl; cout << "BF(7,0,5) = d =" << d << endl; cout << "BF(49,0,1) = e =" << e << endl; // output here should be 802816 = 8.02816e5 // but Core prints 8.02816e6 !!! cout << "BF(16,0,-1) = f =" << f << endl; cout << "BF(10,0,0) = g =" << g << endl; cout << "BF(1,0,1) = h =" << h << endl; if (isDivisible(b,c)) cout << "b | c" << endl; else cout << "b not divide c" < BigFloat exp2(-" << i << ") : " << setprecision(6) << BigFloat::exp2(-i) << endl; } message(" EXACT BigFloat exp2(-8) "); BigFloat bf = BigFloat::exp2(-8); for (int i = 0; i<13 ; i++) { cout << " => setprecision(" << i << ") : " << setprecision(i) << bf << endl; } message(" IN-EXACT BigFloat exp2(-8) "); bf.makeInexact(); for (int i = 0; i<13 ; i++) { cout << " => setprecision(" << i << ") : " << setprecision(i) << bf << endl; } message(" More tests at SETPRECISION(15), Computed at Relation Prec(6)"); setDefaultAbsPrecision(CORE_INFTY); setDefaultRelPrecision(6); cout << setprecision(15); Expr s = sqrt(Expr(2)); cout << " s = sqrt(Expr(2)) : " << s << endl; BigFloat sb = s.BigFloatValue(); cout << " sb = s.getBigFloat() : " << sb << endl; cout << " ==> Next you will see some junk digits: " << endl; sb.makeExact(); cout << " eb = sb.makeExact() : " << sb << endl; cout << " eb/2 : " << sb/2 << endl; cout << " eb.div2() : " << sb.div2() << endl; cout << " ==> Next, ib/2 is not exact in some sense \n" << " but ib.div2() is exact in what sense?: " << endl; sb.makeInexact(); cout << " ib = eb.makeInexact(): " << sb << endl; cout << " ib/2 : " << sb/2 << endl; cout << " ib.div2() : " << sb.div2() << endl; return 0; } core++-1.7/progs/tutorial/IO_prec.cpp0100644000175000001440000000453210130300505017001 0ustar joachimusers/* ************************************************ File: IO_prec.cpp Purpose: Usage: % output_prec Author: Chee Yap Date: May 2004. Since Core Library Version 1.7 $Id: IO_prec.cpp,v 1.3 2004/10/04 16:58:45 exact Exp $ ************************************************ */ #define CORE_LEVEL 4 #include "CORE.h" using namespace std; void headline(string m) { cout << " =========================================================\n"; cout << m << endl; cout << " =========================================================" << endl; } // bit2digits( eps ) // This function is useful for converting number of bits of // precision into the corresponding number of digits of precision. // Caveat: This function is approximate! Up to +/- 1 ? int bits2digits(int eps = 54) { return (int) (eps * log(2.0)/log(10.0)); } int main(int argc, char **argv) { headline(" SETPRECISION(6)"); for (int i = 0; i<9 ; i++) { cout << " => BigFloat exp2(-" << i << ") : " << setprecision(6) << BigFloat::exp2(-i) << endl; } headline(" EXACT BigFloat exp2(-8) "); BigFloat bf = BigFloat::exp2(-8); for (int i = 0; i<13 ; i++) { cout << " => setprecision(" << i << ") : " << setprecision(i) << bf << endl; } headline(" IN-EXACT BigFloat exp2(-8) "); bf.makeInexact(); for (int i = 0; i<13 ; i++) { cout << " => setprecision(" << i << ") : " << setprecision(i) << bf << endl; } headline(" More tests at SETPRECISION(15), Computed at Relation Prec(6)"); setDefaultAbsPrecision(CORE_INFTY); setDefaultRelPrecision(6); cout << setprecision(15); Expr s = sqrt(Expr(2)); cout << " s = sqrt(Expr(2)) : " << s << endl; BigFloat sb = s.BigFloatValue(); cout << " sb = s.getBigFloat() : " << sb << endl; cout << " ==> Next you will see some junk digits: " << endl; sb.makeExact(); cout << " eb = sb.makeExact() : " << sb << endl; cout << " eb/2 : " << sb/2 << endl; cout << " eb.div2() : " << sb.div2() << endl; cout << " ==> Next, ib/2 is not exact in some sense \n" << " but ib.div2() is exact in what sense?: " << endl; sb.makeInexact(); cout << " ib = eb.makeInexact(): " << sb << endl; cout << " ib/2 : " << sb/2 << endl; cout << " ib.div2() : " << sb.div2() << endl; return 0; } core++-1.7/progs/tutorial/Makefile0100644000175000001440000000360410144502456016432 0ustar joachimusers# Makefile for tutorial # # (template Makefile for simple targets) # # Core Library, $Id: Makefile,v 1.16 2004/11/10 21:16:30 exact Exp $ include ../Make.options #================================================= # Define target files (put all your files here) #================================================= p=simple p=io p=delaunay p=BF_output p=one p=output_prec p=IO_prec TARGETS= delaunay io MORE_TARGETS= prog1 prog2 prog3 prog4 prog5 prog6 prog7 prog8 prog9 \ prog10 prog11 prog12 \ BF_output one simple default: $(TARGETS) test: $(TARGETS) ./delaunay 7 ./io progs: $(MORE_TARGETS) ./prog1 ./prog2 ./prog3 ./prog4 ./prog5 ./prog6 ./prog7 ./prog8 ./prog9 ./prog10 ./prog11 ./prog12 ./BF_output ./simple ./one p: $(p).cpp ${CXX} -c $(CXXFLAGS) $(CORE_INC) ${p}.cpp -o ${p}.o ${CXX} $(LDFLAGS) ${p}.o $(CORE_LIB) -o ${p} time: $(TARGETS) simple: simple.o Prog1: Prog1.o io: io.o delaunay: delaunay.o prog1: prog1.o prog2: prog2.o prog3: prog3.o prog4: prog4.o prog5: prog5.o prog6: prog6.o prog7: prog7.o prog8: prog8.o prog9: prog9.o prog10: prog10.o prog10: prog11.o prog10: prog12.o BF_output: BF_output.o output_prec: output_prec.o IO_prec: IO_prec.o one: one.o #================================================= # Rules #================================================= %: %.o ${CXX} $(LDFLAGS) $< $(CORE_LIB) -o $@ .cpp.o: ${CXX} -c $(CXXFLAGS) $(CORE_INC) $< -o $@ #================================================= # Clean object files #================================================= clean: -@test -z "*.o" || rm -f *.o #================================================= # Remove executable files #================================================= EXEPROGS=$(TARGETS:=$(EXETYPE)) MORE_EXEPROGS=$(MORE_TARGETS:=$(EXETYPE)) veryclean: clean -@test -z "$(EXEPROGS)" || rm -f $(EXEPROGS) -@test -z "$(MORE_EXEPROGS)" || rm -f $(MORE_EXEPROGS) core++-1.7/progs/tutorial/README0100644000175000001440000000131610130300505015632 0ustar joachimusersFile: README for tutorial Since Core Library v1.5 $Id: README,v 1.5 2004/10/04 16:58:45 exact Exp $ ============================================================================= SYNOPSIS: This directory is a repository for the examples used in the Core Library Tutorial document. Files: README -- this file Makefile -- do "make test" to compile and run all programs simple.cpp -- first program prog*.cpp -- miscellaneous programs in tutorial io.cpp -- Basic Numerical I/O BF_output.cpp -- Basic Properties of BigFloat I/O (including exactness, and other useful methods) delaunay.cpp -- Naive Delaunay Triangulation Program To Do: We ought to make ALL these programs self-validating. core++-1.7/progs/tutorial/delaunay.cpp0100644000175000001440000000560310130270020017261 0ustar joachimusers/* ************************************************ File: delaunay.cpp Purpose: Simple Delaunay Triangulation of N points on a circle. This program is adapted from O'Rourke's book "Computational Geometry in C" (Cambridge Univ.Press, 1994). At CORE_LEVEL 3, these points lie EXACTLY on a circle. Hence every possible triangle will be considered a Delaunay triangle. With N points, you must see {N \choose 3} triangles. Usage: % delaunay [N] If the optional argument N is not given, you will be prompted. Author: Chee Yap Since Core Library Version 1.5 $Id: delaunay.cpp,v 1.4 2004/10/04 15:45:20 exact Exp $ ************************************************ */ #include "CORE/CORE.h" int main(int argc, char** argv) { double x[1000],y[1000],z[1000];/* input points x y,z=x^2+y^2 */ int n; /* number of input points */ double xn, yn, zn; /* outward vector normal to (i,j,k) */ int flag; /* true if m above (i,j,k) */ int F = 0; /* # of lower faces */ // define the rotation angle to generate points double sintheta = 5; sintheta /= 13; double costheta = 12; costheta /= 13; // check if argument N is specified in command line printf("debug: argc = %d \n", argc); if (argc >= 2) { n = atoi(argv[1]); } else { printf("Please input the number of points on the circle: "); scanf("%d", &n); } x[0] = 65; y[0] = 0; z[0] = x[0] * x[0] + y[0] * y[0]; for (int i = 1; i < n; i++ ) { x[i] = x[i-1]*costheta - y[i-1]*sintheta; // compute x-coordinate y[i] = x[i-1]*sintheta + y[i-1]*costheta; // compute y-coordinate z[i] = x[i] * x[i] + y[i] * y[i]; // compute z-coordinate } for (int i = 0; i < n - 2; i++ ) for (int j = i + 1; j < n; j++ ) for (int k = i + 1; k < n; k++ ) if ( j != k ) { // For each triple (i,j,k), compute normal to triangle (i,j,k). xn = (y[j]-y[i])*(z[k]-z[i]) - (y[k]-y[i])*(z[j]-z[i]); yn = (x[k]-x[i])*(z[j]-z[i]) - (x[j]-x[i])*(z[k]-z[i]); zn = (x[j]-x[i])*(y[k]-y[i]) - (x[k]-x[i])*(y[j]-y[i]); if ( (flag = (zn < 0) )) // Only examine faces on bottom of paraboloid for (int m = 0; m < n; m++) /* For each other point m, check if m is above (i,j,k). */ flag = flag && ((x[m]-x[i])*xn + (y[m]-y[i])*yn + (z[m]-z[i])*zn <= 0); if (flag) { printf("lower face indices: %d, %d, %d\n", i, j, k); F++; } } printf("A total of %d lower faces found.\n", F); int CorrectNo = (n*(n-1)*(n-2))/6; if (F == CorrectNo) printf("CORRECT! The number of lower faces is equal to {%d choose 3} = %d\n", n, F); else printf("ERROR! The number of lower faces is not equal to {%d choose 3} = %d\n", n, CorrectNo); return 0; }//main core++-1.7/progs/tutorial/io.cpp0100644000175000001440000001507310130270020016070 0ustar joachimusers/* ************************************************ File: io.cpp Purpose: IO examples from Tutorial. These illustrate the interaction between three kinds of precision parameters: (1) the precision for evaluation of expressions, controlled by setDefaultPrecision(rel,abs) (2) the precision of output, controlled by setDefaultOutputDigits(n, os). This basically calls the std::setprecision(digits) of std::ostreams.setprecision(n). (3) the precision for reading inputs, controlled by setDefaultInputDigits(n) In addition, there is the choice between scientific and positional format for output. Usage: % io Since Core Library 1.7 $Id: io.cpp,v 1.5 2004/10/04 15:45:20 exact Exp $ ************************************************ */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif #include "CORE/CORE.h" int main( int argc, char *argv[] ) { // This is the default setting: // setDefaultPrecision(60, INFTY); double X("-1234.567890"); std::cout << " Let X=1234.567890\n"; std::cout << " Default Printout of X : \n " << X << std::endl; std::cout << " Printout of X after setprecision(10) : \n " << std::setprecision(10) << X << "\n -- so `output width' (=10 here) counts the decimal point\n"; std::cout << " Printout of X after setprecision(6): \n " << std::setprecision(6) << X << "\n -- so the default width is 6" << std::endl; setScientificFormat(); std::cout << " Printout of X after setScientificFormat(): \n " << X << "\n -- the width remains set at 6 \n" << " -- but decimal point in Scientific width is not counted! \n" << " -- Note the rounding of the last digit\n"; std::cout << " Printout of X after setprecision(10) : \n " << std::setprecision(10) << X << std::endl; std::cout << " Printout of X after setprecision(11) : \n " << std::setprecision(11) << X << "\n -- an artificial zero digit is printed" << std::endl; std::cout << " Printout of X after setprecision(12) : \n " << std::setprecision(12) << X << "\n -- another artificial zero digit!" << std::endl; std::cout << " Printout of X after setprecision(100) : \n " << std::setprecision(100) << X << "\n -- Should print correctly" << std::endl; std::cout << " Printout of X after setprecision(200) : \n " << std::setprecision(200) << X << "\n -- Should see print out errors!" << std::endl; std::cout << " FIX: set defInputDigits to INFTY before reading X \n"; defInputDigits = CORE_INFTY; setDefaultPrecision(CORE_INFTY,800); // X = double("1234.567890"); X="-1234.567890"; std::cout << " printout X after setprecision(20) : \n " << std::setprecision(20) << X << std::endl; std::cout << " Try Again: printout X after setprecision(200) : \n " << std::setprecision(200) << X << "\n -- Should see no printout errors!" << std::endl; setPositionalFormat(); std::cout << " Printout of X after setPositionalFormat(): \n " << X << std::endl; std::cout << " Printout of X after setprecision(11): \n " << std::setprecision(11) << X << "\n -- only one extra zero printed, as expected" << std::endl; std::cout << " Printout of X after setprecision(5): \n " << std::setprecision(5) << X << "\n -- rounding to a 4-digit integer" << std::endl; std::cout << " Printout of X after setprecision(4): \n " << std::setprecision(4) << X << "\n -- we are forced to go to scientific format" << std::endl; std::cout << "\n To see what happens if X were not exact, we next set Y = 1/3.\n" << " Here Y is an expression\n" << " We evaluate Y relative precision 53 (15.9 digits) \n" << " by calling setDefaultPrecision(53,CORE_INFTY). \n"; double one = 1; double three = 3; double Y = one / three; setDefaultPrecision(53, CORE_INFTY); std::cout << " Output In Positional Format\n"; std::cout << " Cout precision 12: " << std::setprecision(12) << Y << std::endl; std::cout << " Cout precision 15: " << std::setprecision(15) << Y << std::endl; std::cout << " Cout precision 16: " << std::setprecision(16) << Y << std::endl; std::cout << " -- no guarantee that you will see more digits!" << std::endl; std::cout << " Cout precision 17: " << std::setprecision(17) << Y << std::endl; std::cout << " -- you may see more because CORE has exceeded the requirements!" << std::endl; std::cout << " Cout precision 18: " << std::setprecision(18) << Y << std::endl; std::cout << " Cout precision 19: " << std::setprecision(19) << Y << std::endl; std::cout << " Cout precision 20: " << std::setprecision(20) << Y << std::endl; std::cout << " Cout precision 21: " << std::setprecision(21) << Y << std::endl; std::cout << " Cout precision 22: " << std::setprecision(22) << Y << std::endl; std::cout << " Cout precision 23: " << std::setprecision(23) << Y << std::endl; std::cout << " Cout precision 24: " << std::setprecision(24) << Y << std::endl; std::cout << " Cout precision 25: " << std::setprecision(25) << Y << std::endl; std::cout << " Cout precision 26: " << std::setprecision(26) << Y << std::endl; std::cout << " Cout precision 27: " << std::setprecision(27) << Y << std::endl; std::cout << " Cout precision 28: " << std::setprecision(28) << Y << std::endl; std::cout << " Cout precision 29: " << std::setprecision(29) << Y << std::endl; std::cout << " Cout precision 30: " << std::setprecision(30) << Y << std::endl; std::cout << " Cout precision 31: " << std::setprecision(31) << Y << std::endl; std::cout << "THE NUMBER OF OUTPUT DIGITS SHOULD STOP SOMEWHAT BEFORE 31 \n" << "SINCE CORE EXCEEDS THE REQUESTED PRECISION BY A FACTOR of 2\n" ; std::cout << "To unsure that you really see 31 DIGITS, we must compute to \n" << "102 relative bits of precision: by calling Y.approx(103, CORE_INFTY) \n"; Y.approx(103, CORE_INFTY); std::cout << " Cout precision 31: " << std::setprecision(31) << Y << std::endl; std::cout << " Cout precision 36: " << std::setprecision(36) << Y << std::endl; std::cout << " Cout precision 41: " << std::setprecision(41) << Y << std::endl; std::cout << " Cout precision 46: " << std::setprecision(46) << Y << std::endl; std::cout << " Cout precision 51: " << std::setprecision(51) << Y << std::endl; std::cout << "Now, we do Y.approx(123, CORE_INFTY) \n"; Y.approx(123, CORE_INFTY); std::cout << " Cout precision 51: " << std::setprecision(51) << Y << std::endl; } core++-1.7/progs/tutorial/one.cpp0100644000175000001440000001140610130270021016237 0ustar joachimusers/************************************************************* * Purpose: * How many ways can we print the number 1? * From the output below, we see basically three: * (a) 1. * (b) 1.000000 (6 output digits) * (c) 1.000000e+00 (6 output digits) * How do we explain the different formats? * (a) Internally, it is a BigRat or BigInt * (b) Internally, it is a BigFloat * (c) Internally, it is a BigFloat * The difference between (b) and (c) is whether we * choose the Positional or Scientific formats. * We can set the output digits, which is 6 here. * The difference between (a) and (b) is invariably * whether we use string input or use a number literal. * * Author: Chee Yap * * Since Core Library 1.7 * Date: Aug 2, 2004 * ************************************************************/ #define CORE_LEVEL 3 #include "CORE/CORE.h" using namespace std; int main(int argc, char argv[]) { cout << "How many ways to print the number one?" << endl; cout << "-- Let me count the ways ..." << endl; cout << ">>>>>>>>>>>>>> cout << setprecision(6);" << endl; cout << setprecision(6); cout << ">>>>>>>>>>>>>> setPositionalFormat();" << endl; setPositionalFormat(); cout << ">>>>>>>>>>>>>> setDefaultInputDigits(CORE_INFTY);" << endl; setDefaultInputDigits(CORE_INFTY); cout << "1.0 prints as " << 1.0 << endl; cout << "BigFloat(1.0) prints as " << BigFloat(1.0) << endl; cout << "BigFloat(\"1.0\") prints as " << BigFloat("1.0") << endl; cout << "Expr(1.0) prints as " << Expr(1.0) << endl; cout << "Expr(\"1.0\") prints as " << Expr("1.0") << endl; cout << "Expr(1/1) prints as " << Expr(1/1) << endl; cout << "Expr(\"1/1\") prints as " << Expr("1/1") << endl; cout << "sqrt(Expr(\"1.0\")) prints as " << sqrt(Expr("1.0")) << endl; cout << ">>>>>>>>>>>>>> setScientificFormat();" << endl; setScientificFormat(); setDefaultInputDigits(2); cout << "1.0 prints as " << 1.0 << endl; cout << "BigFloat(1.0) prints as " << BigFloat(1.0) << endl; cout << "BigFloat(\"1.0\") prints as " << BigFloat("1.0") << endl; cout << "Expr(1.0) prints as " << Expr(1.0) << endl; cout << "Expr(\"1.0\") prints as " << Expr("1.0") << endl; cout << "Expr(1/1) prints as " << Expr(1/1) << endl; cout << "Expr(\"1/1\") prints as " << Expr("1/1") << endl; cout << "sqrt(Expr(\"1.0\")) prints as " << sqrt(Expr("1.0")) << endl; cout << ">>>>>>>>>>>>>> MORE TESTS" << endl; cout << "Is BigFloat(1.0) exact? " << BigFloat(1.0).isExact() << endl; cout << "Is BigFloat(\"1.0\") exact? " << BigFloat("1.0").isExact() << endl; cout << "Is Expr(1/1) equal to 1? " << (Expr(1/1) == 1 ? true : false) << endl; cout << "Is Expr(\"1/1\") equal to 1? " << (Expr("1/1") == 1 ? true : false) << endl; return 0; } /* *************************************************** * Here is the output for Core 1.7: * *************************************************** How many ways to print the number one? -- Let me count the ways ... >>>>>>>>>>>>>> cout << setprecision(6); >>>>>>>>>>>>>> setPositionalFormat(); >>>>>>>>>>>>>> setDefaultInputDigits(CORE_INFTY); 1.0 prints as 1.000000 BigFloat(1.0) prints as 1.00000 BigFloat("1.0") prints as 1. Expr(1.0) prints as 1.000000 Expr("1.0") prints as 1. Expr(1/1) prints as 1.000000 Expr("1/1") prints as 1. sqrt(Expr("1.0")) prints as 1. >>>>>>>>>>>>>> setScientificFormat(); 1.0 prints as 1.000000e+00 BigFloat(1.0) prints as 1.00000 BigFloat("1.0") prints as 1. Expr(1.0) prints as 1.000000e+00 Expr("1.0") prints as 1. Expr(1/1) prints as 1.000000e+00 Expr("1/1") prints as 1. sqrt(Expr("1.0")) prints as 1. >>>>>>>>>>>>>> MORE TESTS Is BigFloat(1.0) exact? 1 Is BigFloat("1.0") exact? 1 Is Expr(1/1) equal to 1? 1 Is Expr("1/1") equal to 1? 1 * *************************************************** * Note: there is a minor bug in what our BigFloat understands by * "6 digits" of output precision (this will be fixed in future). * This number is the one less than for the other cases. * There also seems to be 2 extra white spaces in front of BigFloat * output! * ***************************************************/ core++-1.7/progs/tutorial/output_prec.cpp0100644000175000001440000000676010130270021020036 0ustar joachimusers/* ************************************************ File: output_prec.cpp Purpose: Suppose a user says "I want to see 100 absolute (or relative) digits in all my output". What should he do? This is hardly obvious. There are the 4 steps: (1) Convert digits to bits (i.e., how many bits is 100 digits?) (2) Set the default input precisions (3) Set the default (computing) precisions (4) Set the default output precisions This is non-trivial if you want absolute precision. (1) We can get this roughly (see "bits2digits" function below) (2) We probably should set the input precision to "infty" (3) This should be OK (4) Using setprecision(N) basically gives N relative digits. So if you want absolute precision, this is tough. Hence, we provide here a function "guaranteedOutput(N)" which ensures all the printed output is correct to N digits. Usage: % IO_prec Author: Chee Yap Date: May 2004. Since Core Library Version 1.7 $Id: output_prec.cpp,v 1.2 2004/10/04 15:45:21 exact Exp $ ************************************************ */ #define CORE_LEVEL 4 #include "CORE.h" using namespace std; void headline(string m) { cout << " =========================================================\n"; cout << m << endl; cout << " =========================================================" << endl; } // bit2digits( eps ) // This function is useful for converting number of bits of // precision into the corresponding number of digits of precision. // Caveat: This function is approximate! Up to +/- 1 ? int bits2digits(int eps = 54) { return (int) (eps * log(2.0)/log(10.0)); } int main(int argc, char **argv) { headline("How to Set 100 Digits of Output Precision"); // Translates eps (in bits) to outputPrec (in digits) cout << "54 bits of precision gives " << bits2digits(54) << " digits" << endl; cout << "100 bits of precision gives " << bits2digits(100) << " digits" << endl; cout << "1000 bits of precision gives " << bits2digits(1000) << " digits" << endl; /* message(" SETPRECISION(6)"); for (int i = 0; i<9 ; i++) { cout << " => BigFloat exp2(-" << i << ") : " << setprecision(6) << BigFloat::exp2(-i) << endl; } message(" EXACT BigFloat exp2(-8) "); BigFloat bf = BigFloat::exp2(-8); for (int i = 0; i<13 ; i++) { cout << " => setprecision(" << i << ") : " << setprecision(i) << bf << endl; } message(" IN-EXACT BigFloat exp2(-8) "); bf.makeInexact(); for (int i = 0; i<13 ; i++) { cout << " => setprecision(" << i << ") : " << setprecision(i) << bf << endl; } message(" More tests at SETPRECISION(15), Computed at Relation Prec(6)"); setDefaultAbsPrecision(CORE_INFTY); setDefaultRelPrecision(6); cout << setprecision(15); Expr s = sqrt(Expr(2)); cout << " s = sqrt(Expr(2)) : " << s << endl; BigFloat sb = s.BigFloatValue(); cout << " sb = s.getBigFloat() : " << sb << endl; cout << " ==> Next you will see some junk digits: " << endl; sb.makeExact(); cout << " eb = sb.makeExact() : " << sb << endl; cout << " eb/2 : " << sb/2 << endl; cout << " eb.div2() : " << sb.div2() << endl; cout << " ==> Next, ib/2 is not exact in some sense \n" << " but ib.div2() is exact in what sense?: " << endl; sb.makeInexact(); cout << " ib = eb.makeInexact(): " << sb << endl; cout << " ib/2 : " << sb/2 << endl; cout << " ib.div2() : " << sb.div2() << endl; */ return 0; } core++-1.7/progs/tutorial/prog1.cpp0100644000175000001440000000220110130270021016477 0ustar joachimusers/* ************************************************ File: prog1 Purpose: To show the setting of output format which can be either positional or scientific, and the manipulation of output precision. Usage: % prog1 Author: Vikram Sharma Since Core Library Version 1.6 $Id: prog1.cpp,v 1.3 2004/10/04 15:45:21 exact Exp $ ************************************************ */ #include "CORE.h" using namespace CORE; using namespace std; typedef BigInt NT; //template Expr::Expr(const Polynomial& p, int n); //template ConstPolyRep; int main(int argc , char ** argv) { Expr e1 = 12.34; // constructor from C++ literals Expr e = "1234.567890"; // constructor from string // The precision for reading inputs is controlled by \definput // This value is initialized to be 16 (digits). cout << e << endl; // prints 1234.57 as the output precision defaults to 6. cout << setprecision(10) << e << endl; // prints 1234.567890 cout << setprecision(11) << e << endl; // prints 1234.5678900 setScientificFormat(); cout << setprecision(6) << e << endl; // prints 1.23457e+3 } core++-1.7/progs/tutorial/prog10.cpp0100644000175000001440000000141210130267324016576 0ustar joachimusers/* ************************************************ File: prog9 Purpose: Exact comparison among objects of Expr class. Usage: % prog9 Author: Vikram Sharma Since Core Library Version 1.6 $Id: prog10.cpp,v 1.2 2004/10/04 15:40:04 exact Exp $ ************************************************ */ #include "CORE.h" using namespace CORE; using namespace std; int main(int argc , char ** argv) { Expr e[2]; Expr f[2]; e[0] = 10.0; e[1] = 11.0; f[0] = 5.0; f[1] = 18.0; Expr ee = sqrt(e[0])+sqrt(e[1]); Expr ff = sqrt(f[0])+sqrt(f[1]); if (ee>ff) cout << "CORRECT! sr(10)+sr(11) > sr(5)+sr(18)" << endl; else cout << "ERROR! sr(10)+sr(11) <= sr(5)+sr(18)" << endl; // prints: $sr(10)+sr(11) > sr(5)+sr(18)$ } core++-1.7/progs/tutorial/prog11.cpp0100644000175000001440000000477410130267324016615 0ustar joachimusers/* ************************************************ File: delaunay.cc Purpose: Simple Delaunay Triangulation of N points on a circle. This program is adapted from O'Rourke's book "Computational Geometry in C" (Cambridge Univ.Press, 1994). At CORE_LEVEL 3, these points lie EXACTLY on a circle. Hence every possible triangle will be considered a Delaunay triangle. With N points, you must see {N \choose 3} triangles. Usage: % delaunay [N] If the optional argument N is not given, you will be prompted. Author: Chee Yap Since Core Library Version 1.6 $Id: prog11.cpp,v 1.2 2004/10/04 15:40:04 exact Exp $ ************************************************ */ #define CORE_LEVEL 3 #include "CORE.h" using namespace CORE; using namespace std; int main(int argc , char ** argv) { double x[1000],y[1000],z[1000];/* input points x y,z=x^2+y^2 */ int n; /* number of input points */ double xn, yn, zn; /* outward vector normal to (i,j,k) */ int flag; /* true if m above (i,j,k) */ int F = 0; /* # of lower faces */ // define the rotation angle to generate points double sintheta = 5; sintheta /= 13; double costheta = 12; costheta /= 13; printf("Please input the number of points on the circle: "); scanf("%d", &n); x[0] = 65; y[0] = 0; z[0] = x[0] * x[0] + y[0] * y[0]; for (int i = 1; i < n; i++ ) { x[i] = x[i-1]*costheta - y[i-1]*sintheta; // compute x-coordinate y[i] = x[i-1]*sintheta + y[i-1]*costheta; // compute y-coordinate z[i] = x[i] * x[i] + y[i] * y[i]; // compute z-coordinate } for (int i = 0; i < n - 2; i++ ) for (int j = i + 1; j < n; j++ ) for (int k = i + 1; k < n; k++ ) if ( j != k ) { // For each triple (i,j,k), compute normal to triangle (i,j,k). xn = (y[j]-y[i])*(z[k]-z[i]) - (y[k]-y[i])*(z[j]-z[i]); yn = (x[k]-x[i])*(z[j]-z[i]) - (x[j]-x[i])*(z[k]-z[i]); zn = (x[j]-x[i])*(y[k]-y[i]) - (x[k]-x[i])*(y[j]-y[i]); if ( flag = (zn < 0) ) // Only examine faces on bottom of paraboloid for (int m = 0; m < n; m++) /* For each other point m, check if m is above (i,j,k). */ flag = flag && ((x[m]-x[i])*xn + (y[m]-y[i])*yn + (z[m]-z[i])*zn <= 0); if (flag) { printf("lower face indices: %d, %d, %d\n", i, j, k); F++; } } printf("A total of %d lower faces found.\n", F); } core++-1.7/progs/tutorial/prog12.cpp0100644000175000001440000000354210130267324016606 0ustar joachimusers/* ************************************************ File: prog12 Purpose: Showing the effects of shared subexpressions. See Section 8 (Efficiency Issues) in Tutorial. We compare the expressions E1 = sqrt(x) + sqrt(y) E2 = sqrt(x + y + 2 sqrt(xy)) for various values of x and y. If the program (prog12) is given any arguments at all, it will do the comparison with shared subexpressions; otherwise not. Usage: % time prog12 1 -- shows timing for shared subexpressions % time prog12 -- shows timing for non-shared subexpressions Results: % time prog12 1 Shared Subexpressions: Number of errors = 0 real 0m0.382s user 0m0.390s sys 0m0.000s % time prog12 Non-shared Subexpressions: Number of errors = 0 real 0m0.437s user 0m0.450s sys 0m0.010s This shows a >10% speedup. The improvement can made more dramatic by sharing more subexpressions. Author: Chee Yap (March 2004) Since Core Library Version 1.7 $Id: prog12.cpp,v 1.2 2004/10/04 15:40:04 exact Exp $ ************************************************ */ #include "CORE.h" using namespace CORE; using namespace std; int main(int argc , char ** argv) { double x, y, sqrtx, sqrty, E1, E2; int err = 0; if (argc >1) { for (int i = 1000; i<1200; i++) { x = 2*i; y = i^2; sqrtx = sqrt(x); sqrty = sqrt(y); E1 = sqrtx + sqrty; E2 = sqrt(x + y + 2*sqrtx * sqrty); if (E1 != E2) {err++; cout << "ERROR!" << endl;} } cout << "Shared Subexpressions: Number of errors = " << err << endl; } else { for (int i = 1000; i<1200; i++) { x = 2*i; y = i^2; E1 = sqrt(x) + sqrt(y); E2 = sqrt(x + y + 2*sqrt(x * y)); if (E1 != E2) {err++; cout << "ERROR!" << endl;} } cout << "Non-shared Subexpressions: Number of errors = " << err << endl; } return 0; } core++-1.7/progs/tutorial/prog2.cpp0100644000175000001440000000161410130267324016523 0ustar joachimusers/* ************************************************ File: prog2 Purpose: An example program showing the comparison between algebraically identical expressions sqrt(x) + sqrt(y) and sqrt(x + y + 2*sqrt(xy)) Usage: % prog2 Author: Chee Yap, Vikram Sharma Since Core Library Version 1.6 $Id: prog2.cpp,v 1.3 2004/10/04 15:40:04 exact Exp $ ************************************************ */ #include "CORE.h" using namespace CORE; using namespace std; int main(int argc , char ** argv) { setDefaultInputDigits(CORE_INFTY); double x = "12345/6789"; // rational format double y = "1234567890.0987654321";// approximate format double e = sqrt(x) + sqrt(y); double f = sqrt(x + y + 2 * sqrt(x*y)); std::cout << "e == f ? " << ((e == f) ? "yes (CORRECT!)" : "no (ERROR!)" ) << std::endl; } core++-1.7/progs/tutorial/prog3.cpp0100644000175000001440000000170310130267324016523 0ustar joachimusers/* ************************************************ File: prog3 Purpose: Interaction of different I/O parameters, namely defRelprec, defAbsprec, defInputDigits and stream output precision. Usage: % prog3 Author: Chee Yap, Vikram Sharma Since Core Library Version 1.6 $Id: prog3.cpp,v 1.3 2004/10/04 15:40:04 exact Exp $ ************************************************ */ #include "CORE.h" using namespace CORE; using namespace std; typedef BigInt NT; //template Expr::Expr(const Polynomial& p, int n); //template ConstPolyRep; int main(int argc , char ** argv) { setScientificFormat(); setDefaultInputDigits(2); // defInputDigits = 2 Expr X = "1234.567890"; cout << setprecision(6) << X << endl; // prints .123457e+4 cout << setprecision(10) << X << endl; // prints .1234567871e+4 cout << setprecision(100) << X << endl; // prints .123456787109375000e+4 } core++-1.7/progs/tutorial/prog4.cpp0100644000175000001440000000223010130267324016520 0ustar joachimusers/* ************************************************ File: prog4 Purpose: Interaction of different I/O parameters, namely defRelprec, defAbsprec, defInputDigits and stream output precision. Usage: % prog4 Author: Chee Yap, Vikram Sharma Since Core Library Version 1.6 $Id: prog4.cpp,v 1.3 2004/10/04 15:40:04 exact Exp $ ************************************************ */ #include "CORE.h" using namespace CORE; using namespace std; typedef BigInt NT; //template Expr::Expr(const Polynomial& p, int n); //template ConstPolyRep; int main(int argc , char ** argv) { setScientificFormat(); setDefaultInputDigits(CORE_INFTY); Expr X = "1234.567890"; // exact input cout << setprecision(6) << X << endl; // prints 1234.57 cout << setprecision(10) << X << endl; // prints 1234.567890 cout << setprecision(100) << X << endl; // prints 1234.5678899 X.approx(CORE_INFTY, 333); // enough for 100 digits. cout << setprecision(100) << X << endl; // prints 100 digits: 1234.56789000000000000000000000000000000000 // 0000000000000000000000000000000000000000000000000000000000 } core++-1.7/progs/tutorial/prog5.cpp0100644000175000001440000000303610130267325016527 0ustar joachimusers/* ************************************************ File: prog5 Purpose: Illustrating the introduction of algebraic numbers Usage: % prog5 Author: Chee Yap, Vikram Sharma Since Core Library Version 1.6 $Id: prog5.cpp,v 1.5 2004/10/04 15:40:05 exact Exp $ ************************************************ */ #include "CORE.h" using namespace CORE; using namespace std; typedef BigInt NT; typedef Polynomial PolyNT; int main(int argc , char ** argv) { NT coeffs[] = {-1, -1, 1}; // so coeffs[i] is the coefficient of X^i PolyNT P(2, coeffs); // so P = X^2 - X - 1 Expr phi1 = rootOf(P, 2); // phi1 is the 2nd smallest root of P cout << "Let P(X) = X^2-X-1 " << endl; cout << "The second smallest root of P(X) is phi1 = rootOf(P,2) = " << phi1 << endl; BFInterval I(-1, 0); // I is the interval [-1, 0] Expr phi2 = rootOf(P, I); // phi2 is the unique negative root of P cout << "phi2 = rootOf(P,[-1,0]) = " << phi2 << endl; if (phi1 + phi2 == 1) cout << "CORRECT! phi1 + phi2 = 1" << endl; else cout << "ERROR! phi1 + phi2 != 1" << endl; Expr goldenRatio = (1 + radical(5,2))/2; // another way to specify phi cout << "golden ratio = (1 + sqrt(5))/2 = " << goldenRatio << endl; if (phi1 == goldenRatio) cout << "CORRECT! phi1 = goldenRatio" << endl; else cout << "ERROR! phi1 != goldenRatio" << endl; if (phi1 *phi1 - phi1 - 1 == 0) cout << "CORRECT! phi1^2 - phi1 - 1 = 0" << endl; else cout << "ERROR! phi1^2 - phi1 - 1 != 0" << endl; } core++-1.7/progs/tutorial/prog6.cpp0100644000175000001440000000241010130267325016523 0ustar joachimusers/* ************************************************ File: prog5 Purpose: Effect of different ways of initializing on the value of the variable being initialized, i.e, exact or approximate initialization. Usage: % prog5 Author: Chee Yap, Vikram Sharma Since Core Library Version 1.6 $Id: prog6.cpp,v 1.3 2004/10/04 15:40:05 exact Exp $ ************************************************ */ #include "CORE.h" using namespace CORE; using namespace std; int main(int argc , char ** argv) { double a = 1.0/3; // the value of a is an approximation to 1/3 double b = 1.3; // the value of b is also approximate // To input the exact value of 1/3, do this instead: double c = BigRat(1, 3); // sure way to get exact value of 1/3 double d = "1/3"; // sure way to get exact value of 1/3 double e = "1.3"; // the global defInputDigits should be // +\infty in order for e to be exact. if(3*a != 1) cout << "a = " << a << ", 3 * a != 1: since a is a machine double it is an approximation to 1/3" << endl; if(3*c == 1) cout << "c = " << c << ", 3 * c == 1: since c is a BigRat it is precisely 1/3" << endl; if(3*d == 1) cout << "d = " << d << ", 3 * d == 1: since d is precisely 1/3" << endl; } core++-1.7/progs/tutorial/prog7.cpp0100644000175000001440000000170010130267325016525 0ustar joachimusers/* ************************************************ File: prog6 Purpose: Interplay between ostream precision and the composite precision on BigFloat numbers. Usage: % prog6 Author: Chee Yap, Vikram Sharma Since Core Library Version 1.6 $Id: prog7.cpp,v 1.3 2004/10/04 15:40:05 exact Exp $ ************************************************ */ #include "CORE.h" using namespace CORE; using namespace std; int main(int argc , char ** argv) { double q = BigRat(1, 3); setDefaultAbsPrecision(67); // about 20 digits cout << "q = " << setprecision(10) << q << ", in 10 digits" << endl; // output: q = 0.33333333, in 10 digits cout.precision(30); // or use setDefaultOutputDigits(30, cout), // default to output 30 digits. cout << "q = " << q << ", after setting Default Output to 30 digits" << endl; // output: q = 0.33333333333333333333, in positional notation. } core++-1.7/progs/tutorial/prog8.cpp0100644000175000001440000000275310130267325016537 0ustar joachimusers/* ************************************************ File: prog7 Purpose: Automatic conversion from RealInt to RealBigInt in case of overflow while operating with RealInts. However the conversion is not done for int's (signed or unsigned) Usage: % prog7 Author: Chee Yap, Vikram Sharma Since Core Library Version 1.6 $Id: prog8.cpp,v 1.4 2004/10/04 15:40:05 exact Exp $ ************************************************ */ #include "CORE.h" using namespace CORE; using namespace std; int main(int argc , char ** argv) { Real X, Y, Z; unsigned int x, y, z; int xx, yy, zz; X = 1; // X is of type RealInt x = 1; // x is unsigned int xx = 1; // xx is int Y = 4294967295; // $ 2^{32}-1 $, RealInt // Compiler may give a warning here, but OK! y = 4294967295; // $ 2^{32}-1 $, uint // Compiler may give a warning here, but OK! yy = 2147483647; // $ 2^{31}-1 $, int Z = X + Y; z = x + y; zz = xx + yy; cout.precision(30); cout << "RealInt Z = X + Y, unsigned int z = x + y, int zz = xx + yy :" << endl; cout << "(X, Y, Z) = (" << X << ", " << Y << ", " << Z << ")" << endl; cout << "(x, y, z) = (" << x << ", " << y << ", " << z << ")" << endl; cout << " Overflow in the unsigned int addition!" << endl; cout << "(xx, yy, zz) = (" << xx << ", " << yy << ", " << zz << ")" << endl; cout << " Overflow in the signed int addition!" << endl; } core++-1.7/progs/tutorial/prog9.cpp0100644000175000001440000000240010130267325016525 0ustar joachimusers/* ************************************************ File: prog8 Purpose: Ouput of Different Level 2 numbers. Note the approximation of BigRat to BigFloat when 'B' is initialized with R. Usage: % prog8 Author: Chee Yap, Vikram Sharma Since Core Library Version 1.6 $Id: prog9.cpp,v 1.3 2004/10/04 15:40:05 exact Exp $ ************************************************ */ #include "CORE.h" using namespace CORE; using namespace std; int main(int argc , char ** argv) { setDefaultRelPrecision(10); setDefaultAbsPrecision(CORE_INFTY); BigRat R(1, 3); BigFloat B(R); BigInt I = 1234567890; cout.precision(20); // set output precision to 8 Real Q = R; Real X = B; Real Z = I; cout << R << endl; // prints: 1/3 cout << Q << endl; if (Q*3 == 1) cout << "Q = 1/3" << endl; else cout << "Q != 1/3" << endl; // prints: 0.3333333 cout << X << endl; // prints: 0.3333333 cout << Z << endl; // prints: 1.2345679e+9 defInputDigits = CORE_INFTY; Real QQ = R; cout << QQ << endl; Real QQQ(R); cout << QQQ << endl; // prints? // Expr e = "1/3"; cout << "Expr e = 1/3: prints " << e << endl; if (3*e == 1) cout << "e = 1/3" << endl; else cout << "e != 1/3" << endl; } core++-1.7/progs/tutorial/simple.cpp0100644000175000001440000000170110130267325016761 0ustar joachimusers/* ************************************************ File: simple.cpp Purpose: Simple Program from Tutorial Usage: % simple Since Core Library 1.7 $Id: simple.cpp,v 1.4 2004/10/04 15:40:05 exact Exp $ ************************************************ */ #ifndef CORE_LEVEL # define CORE_LEVEL 3 #endif // this must appear after the standard headers: #include "CORE/CORE.h" using namespace std; int main() { setDefaultInputDigits(CORE_INFTY); // precision for reading inputs double x = "12345/6789"; // rational format double y = "1234567890.0987654321"; // approximate format double e = sqrt(x) + sqrt(y); double f = sqrt(x + y + 2 * sqrt(x*y)); cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "e = sqrt(x) + sqrt(y)" << endl; cout << "f = sqrt(x + y + 2*sqrt(x*y))" << endl; cout << "e == f ? " << ((e == f) ? "yes (CORRECT!)" : "no (ERROR!)" ) << endl; } core++-1.7/src/0040755000175000001440000000000010147210064012556 5ustar joachimuserscore++-1.7/src/BigFloat.cpp0100644000175000001440000010625610135030020014745 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: BigFloat.cpp * Synopsis: * BigFloat numbers with error bounds * * EXACTNESS PROPERTY: * ================== * for BigFloats that are exact (i.e., error=0), * addition/subtraction and multiplication return the * exact result (i.e., error=0). We also introduce the operation * div2(), which simply divides a BigFloat by 2, * but this again preserves exactness. Such exactness * properties are used in our Newton iteration/Sturm Sequences. * * Written by * Chee Yap * Chen Li * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/src/BigFloat.cpp,v $ * $Revision: 1.57 $ $Date: 2004/10/18 21:05:20 $ ***************************************************************************/ #include #if defined (__BORLANDC__) #include #endif #include #include CORE_BEGIN_NAMESPACE //////////////////////////////////////////////////////////// // Misc Helper Functions //////////////////////////////////////////////////////////// BigInt FiveTo(unsigned long exp) { if (exp == 0) return BigInt(1); else if (exp == 1) return BigInt(5); else { BigInt x = FiveTo(exp / 2); x = x * x; if (exp & 1) x *= 5; return x; } } //////////////////////////////////////////////////////////// // class BigFloat //////////////////////////////////////////////////////////// // STATIC BIGFLOAT CONSTANTS // ZERO const BigFloat& BigFloat::getZero() { static BigFloat Zero(0); return Zero; } // ONE const BigFloat& BigFloat::getOne() { static BigFloat One(1); return One; } // A special constructor for BigFloat from Expr // -- this method is somewhat of an anomaly (we normally do not expect // BigFloats to know about Expr). BigFloat::BigFloat(const Expr& E, const extLong& r, const extLong& a) : RCBigFloat(new BigFloatRep()) { *this = E.approx(r, a).BigFloatValue(); // lazy implementaion, any other way? } //////////////////////////////////////////////////////////// // class BigFloatRep //////////////////////////////////////////////////////////// BigFloatRep::BigFloatRep(double d) : m(0), err(0), exp(0) { if (d != 0.0) { int isNegative = 0; if (d < 0.0) { isNegative = 1; d = - d; } int binExp; double f = frexp(d, &binExp); exp = chunkFloor(binExp); long s = binExp - bits(exp); long stop = 0; double intPart; // convert f into a BigInt while (f != 0.0 && stop < DBL_MAX_CHUNK) { f = ldexp(f, (int)CHUNK_BIT); f = modf(f, &intPart); m <<= CHUNK_BIT; m += (long)intPart; exp--; stop++; } #ifdef CORE_DEBUG assert (s >= 0); #endif if (s) m <<= s; if (isNegative) negate(m); } }//BigFloatRep constructor // approximation void BigFloatRep::trunc(const BigInt& I, const extLong& r, const extLong& a) { if (sign(I)) { long tr = chunkFloor((- r + bitLength(I)).asLong()); long ta = chunkFloor(- a.asLong()); long t; if (r.isInfty() || a.isTiny()) t = ta; else if (a.isInfty()) t = tr; else t = ta < tr ? tr : ta; if (t > 0) { // BigInt remainder; m = chunkShift(I, - t); err = 1; exp = t; } else { // t <= 0 m = I; err = 0; exp = 0; } } else {// I == 0 m = 0; err = 0; exp = 0; } } void BigFloatRep :: truncM(const BigFloatRep& B, const extLong& r, const extLong& a) { if (sign(B.m)) { long tr = chunkFloor((- 1 - r + bitLength(B.m)).asLong()); long ta = chunkFloor(- 1 - a.asLong()) - B.exp; long t; if (r.isInfty() || a.isTiny()) t = ta; else if (a.isInfty()) t = tr; else t = ta < tr ? tr : ta; if (t >= chunkCeil(clLg(B.err))) { m = chunkShift(B.m, - t); err = 2; exp = B.exp + t; } else // t < chunkCeil(clLg(B.err)) core_error(std::string("BigFloat error: truncM called with stricter") + "precision than current error.", __FILE__, __LINE__, true); } else {// B.m == 0 long t = chunkFloor(- a.asLong()) - B.exp; if (t >= chunkCeil(clLg(B.err))) { m = 0; err = 1; exp = B.exp + t; } else // t < chunkCeil(clLg(B.err)) core_error(std::string("BigFloat error: truncM called with stricter") + "precision than current error.", __FILE__, __LINE__, true); } } void BigFloatRep::approx(const BigFloatRep& B, const extLong& r, const extLong& a) { if (B.err) { if (1 + clLg(B.err) <= bitLength(B.m)) truncM(B, r + 1, a); else // 1 + clLg(B.err) > lg(B.m) truncM(B, CORE_posInfty, a); } else {// B.err == 0 trunc(B.m, r, a - bits(B.exp)); exp += B.exp; } // Call normalization globally -- IP 10/9/98 normal(); } void BigFloatRep::div(const BigInt& N, const BigInt& D, const extLong& r, const extLong& a) { if (sign(D)) { if (sign(N)) { long tr = chunkFloor((- r + bitLength(N) - bitLength(D) - 1).asLong()); long ta = chunkFloor(- a.asLong()); if (r.isInfty() || a.isTiny()) exp = ta; else if (a.isInfty()) exp = tr; else exp = ta < tr ? tr : ta; BigInt remainder; // divide(chunkShift(N, - exp), D, m, remainder); div_rem(m, remainder, chunkShift(N, - exp), D); if (exp <= 0 && sign(remainder) == 0) err = 0; else err = 1; } else {// N == 0 m = 0; err = 0; exp = 0; } } else // D == 0 core_error( "BigFloat error: zero divisor.", __FILE__, __LINE__, true); // Call normalization globally -- IP 10/9/98 normal(); }//div // error-normalization void BigFloatRep::normal() { long le = flrLg(err); if (le >= CHUNK_BIT + 2) { long f = chunkFloor(--le); long bits_f = bits(f); #ifdef CORE_DEBUG assert (bits_f >= 0); #endif m >>= bits_f; err >>= bits_f; err += 2; exp += f; } if (err == 0) eliminateTrailingZeroes(); } // bigNormal(err) // convert a bigInt error value (=err) into an error that fits into // a long number. This is done by // by increasing the exponent, and corresponding decrease // in the bit lengths of the mantissa and error. // void BigFloatRep::bigNormal(BigInt& bigErr) { long le = bitLength(bigErr); if (le < CHUNK_BIT + 2) { err = ulongValue(bigErr); } else { long f = chunkFloor(--le); long bits_f = bits(f); #ifdef CORE_DEBUG assert(bits_f >= 0); #endif m >>= bits_f; bigErr >>= bits_f; err = ulongValue(bigErr) + 2; // you need to add "2" because "1" comes // from truncation error in the mantissa, and another // "1" comes from the truncation error in the bigErr. exp += f; } if (err == 0) eliminateTrailingZeroes(); } // arithmetics void BigFloatRep::add(const BigFloatRep& x, const BigFloatRep& y) { long expDiff = x.exp - y.exp; if (expDiff > 0) {// x.exp > y.exp if (!x.err) { m = chunkShift(x.m, expDiff) + y.m; err = y.err; exp = y.exp; } else {// x.err > 0 m = x.m + chunkShift(y.m, - expDiff); err = x.err + 5; exp = x.exp; // normal(); } } else if (!expDiff) {// x.exp == y.exp m = x.m + y.m; err = x.err + y.err; exp = x.exp; // normal(); } else {// x.exp < y.exp if (!y.err) { m = x.m + chunkShift(y.m, - expDiff); err = x.err; exp = x.exp; } else {// y.err > 0 m = chunkShift(x.m, expDiff) + y.m; err = y.err + 5; exp = y.exp; // normal(); } } // Call normalization globally -- IP 10/9/98 normal(); } void BigFloatRep::sub(const BigFloatRep& x, const BigFloatRep& y) { long expDiff = x.exp - y.exp; if (expDiff > 0) {// x.exp > y.exp if (!x.err) { m = chunkShift(x.m, expDiff) - y.m; err = y.err; exp = y.exp; } else {// x.err > 0 m = x.m - chunkShift(y.m, - expDiff); err = x.err + 5; exp = x.exp; // normal(); } } else if (!expDiff) { m = x.m - y.m; err = x.err + y.err; exp = x.exp; // normal(); } else { // x.exp < y.exp if (!y.err) { m = x.m - chunkShift(y.m, - expDiff); err = x.err; exp = x.exp; } else {// y.err > 0 m = chunkShift(x.m, expDiff) - y.m; err = y.err + 5; exp = y.exp; // normal(); } } // Call normalization globally -- IP 10/9/98 normal(); } void BigFloatRep::mul(const BigFloatRep& x, const BigFloatRep& y) { m = x.m * y.m; exp = x.exp + y.exp; // compute error (new code, much faster. Zilin Du, Nov 2003) if (x.err == 0 && y.err == 0) { err = 0; eliminateTrailingZeroes(); } else { BigInt bigErr(0); if (y.err != 0) bigErr += abs(x.m)*y.err; if (x.err != 0) bigErr += abs(y.m)*x.err; if (x.err !=0 && y.err != 0) bigErr += x.err*y.err; bigNormal(bigErr); } } // BigFloat div2 will half the value of x, exactly with NO error // REMARK: should generalize this to dividing by any power of 2 // We need this in our use of BigFloats to maintain isolation // intervals (e.g., in Sturm sequences) --Chee/Vikram 4/2003 // void BigFloatRep :: div2(const BigFloatRep& x) { if (isEven(x.m)) { m = (x.m >> 1); exp = x.exp ; } else { m = (x.m << static_cast(CHUNK_BIT-1)); exp = x.exp -1; } } // Converts a BigFloat interval into one BigFloat with almost same error bound void BigFloatRep::centerize(const BigFloatRep& a, const BigFloatRep& b) { if ((a.m == b.m) && (a.err == b.err) && (a.exp == b.exp)) { m = a.m; err = a.err; exp = a.exp; return; } BigFloatRep r; r.sub(a, b); r.div2(r); //setup mantissa and exponent, but not error bits add(a, b); div2(*this); // error bits = ceil ( B^{-exp}*|a-b|/2 ) // bug fixed: possible overflow on converting // Zilin & Vikram, 08/24/04 // err = 1 + longValue(chunkShift(r.m, r.exp - exp)); BigInt E = chunkShift(r.m, r.exp - exp); bigNormal(E); } // BigFloat Division, computing x/y: // Unlike +,-,*, this one takes a relative precision bound R // Note that R is only used when x and y are error-free! // (This remark means that we may be less efficient than we could be) // // Assert( R>0 && R< CORE_Infty ) // void BigFloatRep :: div(const BigFloatRep& x, const BigFloatRep& y, const extLong& R) { if (!y.isZeroIn()) { // y.m > y.err, so we are not dividing by 0 if (!x.err && !y.err) { if (R < 0 || R.isInfty()) //Oct 9, 2002: fixed major bug! [Zilin/Chee] div(x.m, y.m, defBFdivRelPrec, CORE_posInfty); else div(x.m, y.m, R, CORE_posInfty); exp += x.exp - y.exp; // chen: adjust exp. } else {// x.err > 0 or y.err > 0 BigInt bigErr, errRemainder; if (x.isZeroIn()) { // x.m <= x.err m = 0; exp = x.exp - y.exp; div_rem(bigErr, errRemainder, abs(x.m) + static_cast(x.err), abs(y.m) - static_cast(y.err)); } else { // x.m > x.err long lx = bitLength(x.m); long ly = bitLength(y.m); long r; if (!x.err) // x.err == 0 and y.err > 0 r = ly + 2; else if(!y.err) // x.err > 0 and y.err == 0 r = lx + 2; else // x.err > 0 and y.err > 0 r = lx < ly ? lx + 2: ly + 2; long t = chunkFloor(- r + lx - ly - 1); BigInt remainder; div_rem(m, remainder, chunkShift(x.m, - t), y.m); exp = t + x.exp - y.exp; long delta = ((t > 0) ? 2 : 0); // Chen Li: 9/9/99 // here again, it use ">>" operator with a negative // right operand. So the result is not well defined. // Erroneous code: // divide(abs(remainder) + (static_cast(x.err) >> bits(t)) // + delta + static_cast(y.err) * abs(m), // abs(y.m) - static_cast(y.err), // bigErr, // errRemainder); // New code: BigInt errx_over_Bexp = x.err; long bits_Bexp = bits(t); if (bits_Bexp >= 0) { errx_over_Bexp >>= bits_Bexp; } else { errx_over_Bexp <<= (-bits_Bexp); } // divide(abs(remainder) + errx_over_Bexp // + delta + static_cast(y.err) * abs(m), // abs(y.m) - static_cast(y.err), // bigErr, // errRemainder); div_rem(bigErr, errRemainder, abs(remainder) + errx_over_Bexp + delta + static_cast(y.err) * abs(m), abs(y.m) - static_cast(y.err)); } if (sign(errRemainder)) ++bigErr; bigNormal(bigErr); } } else {// y.m <= y.err core_error("BigFloat error: possible zero divisor.", __FILE__, __LINE__, true); } // Call normalization globally -- IP 10/9/98 // normal(); -- Chen: after calling bigNormal, this call is redundant. }// BigFloatRep::div // squareroot for BigInt argument, without initial approximation // sqrt(x,a) computes sqrt of x to absolute precision a. // -- this is where Newton is applied // -- this is called by BigFloatRep::sqrt(BigFloat, extLong) void BigFloatRep::sqrt(const BigInt& x, const extLong& a) { sqrt(x, a, BigFloat(x, 0, 0)); } // sqrt(BigInt x, extLong a) , without initial approx // sqrt(x,a,A) where // x = bigInt whose sqrt is to be computed // a = absolute precision bound // A = initial approximation in BigFloat // -- this is where Newton is applied // -- it is called by BigFloatRep::sqrt(BigFloatRep, extLong, BigFloat) void BigFloatRep::sqrt(const BigInt& x, const extLong& a, const BigFloat& A) { if (sign(x) == 0) { m = 0; err = 0; exp = 0; } else if (x == 1) { m = 1; err = 0; exp = 0; } else {// main case // here is where we use the initial approximation m = A.m(); err = 0; exp = A.exp(); BigFloatRep q, z; extLong aa; // need this to make sure that in case the // initial approximation A is less than sqrt(x) // then Newton iteration will still proceed at // least one step. bool firstTime = true; for (;;) { aa = a - bits(exp); q.div(x, m, CORE_posInfty, aa); q.err = 0; q.exp -= exp; z.sub(*this, q); // this=current approximation, so z = this - q /*if (sign(z.m) <= 0 || z.MSB() < - a) // justification: see Koji's break; // thesis (p. 28) which states // that we can exit when // " (*this) <= q + 2**(-a)" */ // The preceding code is replaced by what follows: if (z.MSB() < -a) break; if (sign(z.m) <= 0) { if (firstTime) firstTime = false; else break; } z.add(*this, q); // Chen Li: a bug fixed here. // m = z.m >> 1; // err = 0; // exp = z.exp; if ((z.m > 1) && isEven(z.m)) { m = z.m >> 1; // exact division by 2 err = 0; exp = z.exp; } else { // need to shift left before division by 2 m = chunkShift(z.m, 1) >> 1; err = 0; exp = z.exp - 1; }//else }//for }//else } // sqrt of BigInt, with initial approx // MAIN ENTRY INTO SQRT FUNCTION (BIGFLOAT ARGUMENT, WITHOUT INITIAL APPROX) void BigFloatRep::sqrt(const BigFloatRep& x, const extLong& a) { sqrt(x, a, BigFloat(x.m, 0, x.exp)); } //sqrt(BigFloat, extLong a) // MAIN ENTRY INTO SQRT FUNCTION (BIGFLOAT ARGUMENT WITH INITIAL APPROXIMATION) void BigFloatRep::sqrt(const BigFloatRep& x, const extLong& a, const BigFloat& A) { // This computes the sqrt of x to absolute precision a, starting with // the initial approximation A if (sign(x.m) >= 0) { // x.m >= 0 int delta = x.exp & 1; // delta=0 if x.exp is even, otherwise delta=1 if (x.isZeroIn()) { // x.m <= x.err m = 0; if (!x.err) err = 0; else { // x.err > 0 err = (long)(:: sqrt((double)x.err)); err++; err <<= 1; if (delta) err <<= HALF_CHUNK_BIT; } exp = x.exp >> 1; normal(); } else { long aExp = A.exp() - (x.exp >> 1); BigFloat AA( chunkShift(A.m(), delta), 0, aExp); if (!x.err) { // x.m > x.err = 0 (ERROR FREE CASE) BigFloatRep z; extLong ppp; if (a.isInfty()) //Oct 9, 2002: fixed major bug! [Zilin/Chee] ppp = defBFsqrtAbsPrec; else ppp = a + EXTLONG_ONE; extLong absp = ppp + bits(x.exp >> 1); z.sqrt(chunkShift(x.m, delta), absp, AA); // call sqrt(BigInt, a, AA) long p = (absp + bits(z.exp)).asLong(); // Next, normalize the error: if (p <= 0) { m = z.m; // Chen Li: a bug fixed // BigInt bigErr = 1 << (-p); BigInt bigErr(1); bigErr = bigErr << static_cast(-p); exp = z.exp + (x.exp >> 1); bigNormal(bigErr); } else { // p > 0 m = chunkShift(z.m, chunkCeil(p)); long r = CHUNK_BIT - 1 - (p + CHUNK_BIT - 1) % CHUNK_BIT; #ifdef CORE_DEBUG assert(r >= 0); #endif err = 1 >> r; exp = - chunkCeil(ppp.asLong()); normal(); } } else { // x.m > x.err > 0 (mantissa has error) BigFloatRep z; extLong absp=-flrLg(x.err)+bitLength(x.m)-(bits(delta) >> 1)+EXTLONG_FOUR; z.sqrt(chunkShift(x.m, delta), absp, AA); long qqq = - 1 + (bitLength(x.m) >> 1) - delta * HALF_CHUNK_BIT; long qq = qqq - clLg(x.err); long q = qq + bits(z.exp); if (q <= 0) { m = z.m; long qqqq = - qqq - bits(z.exp); // Chen Li (09/08/99), a bug fixed here: // BigInt bigErr = x.err << - qqqq; // when (-qqqq) is negative, the result is not correct. // how "<<" and ">>" process negative second operand is // not well defined. Seems it just take it as a unsigned // integer and extract the last few bits. // x.err is a long number which easily overflows. // From page 22 of Koji's paper, I think the exponent is // wrong here. So I rewrote it as: BigInt bigErr = x.err; if (qqqq >= 0) { bigErr <<= qqqq; } else { bigErr >>= (-qqqq); ++bigErr; // we need to keep its ceiling. } exp = z.exp + (x.exp >> 1); bigNormal(bigErr); } else { // q > 0 m = chunkShift(z.m, chunkCeil(q)); long r = CHUNK_BIT - 1 - (q + CHUNK_BIT - 1) % CHUNK_BIT; #ifdef CORE_DEBUG assert(r >= 0); #endif err = 1 >> r; exp = (x.exp >> 1) - chunkCeil(qq); normal(); } } // end of case with error in mantissa }//else } else core_error("BigFloat error: squareroot called with negative operand.", __FILE__, __LINE__, true); } //sqrt with initial approximation // compareMExp(x) // returns 1 if *this > x // 0 if *this = x, // -1 if *this < x, // // Main comparison method for BigFloat // This is called by BigFloat::compare() // BE CAREFUL: The error bits are ignored! // Need another version if we want to take care of error bits int BigFloatRep :: compareMExp(const BigFloatRep& x) const { int st = sign(m); int sx = sign(x.m); if (st > sx) return 1; else if (st == 0 && sx == 0) return 0; else if (st < sx) return - 1; else { // need to compare m && exp long expDiff = exp - x.exp; if (expDiff > 0) // exp > x.exp return cmp(chunkShift(m, expDiff), x.m); else if (!expDiff) return cmp(m, x.m); else // exp < x.exp return cmp(m, chunkShift(x.m, - expDiff)); } } // 3/6/2000: // This is a private function used by BigFloatRep::operator<< // to get the exact value // of floor(log10(M * 2^ e)) where E is an initial guess. // We will return the correct E which satisfies // 10^E <= M * 2^e < 10^{E+1} // But we convert this into // mm <= M < 10.mm long BigFloatRep :: adjustE( long E, BigInt M, long ee) const { if (M<0) M=-M; BigInt mm(1); if (ee > 0) M = (M<(ee)); else mm = (mm << static_cast(-ee)); if (E > 0) mm *= (FiveTo(E)<< static_cast(E)); else M *= (FiveTo(-E) << static_cast(-E)); if (M < mm) { do { E--; M *= 10; } while (M < mm); } else if (M >= 10*mm) { mm *= 10; do { E++; mm *= 10; } while (M >= mm); } return E; } BigFloatRep::DecimalOutput BigFloatRep::toDecimal(unsigned int width, bool Scientific) const { BigFloatRep::DecimalOutput decOut; // to be returned if (err > 0) { decOut.isExact = false; } else { // err == 0 decOut.isExact = true; } if (err > 0 && err >= abs(m)) { // if err is larger than mantissa, sign and significant values // can not be determined. core_error("BigFloat error: Error is too big!", __FILE__, __LINE__, false); decOut.rep = "0.0e0"; // error is too big decOut.isScientific = false; decOut.noSignificant = 0; decOut.errorCode = 1; // sign of this number is unknown return decOut; } decOut.sign = sign(m); decOut.errorCode = 0; BigInt M(m); // temporary mantissa long lm = bitLength(M); // binary length of mantissa long e2 = bits(exp); // binary shift length represented by exponent long le = clLg(err); // binary length of err if (le == -1) le = 0; long L10 = 0; if (M != 0) { L10 = (long)::floor((lm + e2) / lgTenM); L10 = adjustE(L10, m, e2); // L10: floor[log10(M 2^(e2))], M != 0 } else { L10 = 0; } // Convention: in the positional format, when the output is // the following string of 8 characters: // (d0, d1, d2, d3, ".", d4, d5, d6, d7) // then the decimal point is said to be in the 4th position. // E.g., (d0, ".", d1, d2) has the decimal point in the 1st position. // The value of L10 says that the decimal point of output should be at // the (L10 + 1)st position. This is // true regardingless of whether M = 0 or not. For zero, we output // {0.0*} so L10=0. In general, the |value| is less than 10 // if and only if L10 is 0 and the // decimal point is in the 1st place. Note that L10 is defined even if // the output is an integer (in which case it does not physically appear // but conceptually terminates the sequence of digits). // First, get the decimal representaion of (m * B^(exp)). if (e2 < 0) { M *= FiveTo(-e2); // M = x * 10^(-e2) } else if (e2 > 0) { M <<= e2; // M = x * 2^(e2) } std::string decRep = M.get_str(); // Determine the "significant part" of this string, i.e. the part which // is guaranteed to be correct in the presence of error, // except that the last digit which might be subject to +/- 1. if (err != 0) { // valid = number of significant digits unsigned long valid = floorlg10(m) - (long)::floor(log10(float(err))); if (decRep.length() > valid) { decRep.erase(valid); } } // All the digits in decM are correct, except the last one might // subject to an error +/- 1. if ((decRep[0] == '+') || (decRep[0] == '-')) { decRep.erase(0, 1); } // Second, make choice between positional representation // and scientific notation. Use scientific notation when: // 0) if scientific notation flag is on // 1) err * B^exp >= 1, the error contribute to the integral part. // 2) (1 + L10) >= width, there is not have enough places to hold the // positional representation, not including decimal point. // 3) The distance between the first significant digit and decimal // point is too large for the width limit. This is equivalent to // Either ((L10 >= 0 and (L10 + 1) > width)) // Or ((L10 < 0) and (-L10 + 1) > width). if (Scientific || ((err > 0) && (le + e2) >= 0) || // if err*B^exp >= 1 ((L10 >= 0) && (L10 + 1 >= (long)width )) || ((L10 < 0) && (-L10 + 1 > (long)width ))) { // use scientific notation decRep = round(decRep, L10, width); decOut.noSignificant = width; decRep.insert(1, "."); if (L10 != 0) { decRep += 'e'; if (L10 > 0) { decRep += '+'; } else { // L10 < 0 decRep += '-'; } char eBuf[48]; // enought to hold long number L10 int ne = 0; if ((ne = sprintf(eBuf, "%ld", labs(L10))) >= 0) { eBuf[ne] = '\0'; } else { //perror("BigFloat.cpp: Problem in outputing the exponent!"); core_error("BigFloat error: Problem in outputing the exponent", __FILE__, __LINE__, true); } decRep += eBuf; decOut.isScientific = true; } } else { // use conventional positional notation. if (L10 >= 0) { // x >= 1 or x == 0 and L10 + 1 <= width // round when necessary if (decRep.length() > width ) { decRep = round(decRep, L10, width ); if (decRep.length() > width ) { // overflow happens! use scientific notation return toDecimal(width, true); } } decOut.noSignificant = decRep.length(); if (L10 + 1 < (long)width ) { decRep.insert(L10 + 1, "."); } else { // L10 + 1 == width // do nothing } } else { // L10 < 0, 0 < x < 1 // (-L10) leading zeroes, including one to the left of decimal dot // need to be added in beginning. decRep = std::string(-L10, '0') + decRep; // then round when necessary if (decRep.length() > width ) { decRep = round(decRep, L10, width ); // cannot overflow since there are L10 leading zeroes. } decOut.noSignificant = decRep.length() - (-L10); decRep.insert(1, "."); } decOut.isScientific = false; } #ifdef CORE_DEBUG assert(decOut.noSignificant >= 0); #endif decOut.rep = decRep; return decOut; }//toDecimal std::string BigFloatRep::round(std::string inRep, long& L10, unsigned int width) const { // round inRep so that the length would not exceed width. if (inRep.length() <= width) return inRep; int i = width; // < length bool carry = false; if ((inRep[i] >= '5') && (inRep[i] <= '9')) { carry = true; i--; while ((i >= 0) && carry) { if (carry) { inRep[i] ++; if (inRep[i] > '9') { inRep[i] = '0'; carry = true; } else { carry = false; } } i-- ; } if ((i < 0) && carry) { // overflow inRep.insert(inRep.begin(), '1'); L10 ++; width ++; } } return inRep.substr(0, width); }//round(string,width) // This function fromString(str, prec) is similar to the // constructor Real(char * str, extLong prec) // See the file Real.cc for the differences void BigFloatRep :: fromString(const char *str, const extLong & prec ) { // NOTE: prec defaults to defBigFloatInputDigits (see BigFloat.h) // check that prec is not INFTY if (prec.isInfty()) core_error("BigFloat error: infinite precision not allowed", __FILE__, __LINE__, true); const char *e = strchr(str, 'e'); int dot = 0; long e10 = 0; if (e != NULL) e10 = atol(e+1); // e10 is decimal precision of the input string // i.e., input is A/10^{e10}. else { e = str + strlen(str); #ifdef CORE_DEBUG assert(*e == '\0'); #endif } const char *p = str; if (*p == '-' || *p == '+') p++; m = 0; exp = 0; for (; p < e; p++) { if (*p == '.') { dot = 1; continue; } m = m * 10 + (*p - '0'); if (dot) e10--; } BigInt one = 1; long t = (e10 < 0) ? -e10 : e10; BigInt ten = FiveTo(t) * (one << static_cast(t)); // HERE IS WHERE WE USE THE SYSTEM CONSTANT // defBigFloatInputDigits // Note: this constant is rather similar to defInputDigits which // is used by Real and Expr for controlling // input accuracy. The difference is that defInputDigits can // be CORE_INFTY, but defBigFloatInputDigits must be finite. if (e10 < 0) div(m, ten, CORE_posInfty, 4 * prec); else m *= ten; if (*str == '-') m = -m; }//BigFloatRep::fromString std::istream& BigFloatRep :: operator >>(std::istream& i) { int size = 20; char *str = new char[size]; char *p = str; char c; int d = 0, e = 0, s = 0; // d=1 means dot is found // e=1 means 'e' or 'E' is found // int done = 0; // Chen Li: fixed a bug, the original statement is // for (i.get(c); c == ' '; i.get(c)); // use isspace instead of testing c == ' ', since it must also // skip tab, catridge/return, etc. // Change to: // int status; do { c = i.get(); } while (isspace(c)); /* loop if met end-of-file, or char read in is white-space. */ // Chen Li, "if (c == EOF)" is unsafe since c is of char type and // EOF is of int tyep with a negative value -1 if (i.eof()) { i.clear(std::ios::eofbit | std::ios::failbit); return i; } // the current content in "c" should be the first non-whitespace char if (c == '-' || c == '+') { *p++ = c; i.get(c); } for (; isdigit(c) || (!d && c=='.') || (!e && ((c=='e') || (c=='E'))) || (!s && (c=='-' || c=='+')); i.get(c)) { if (!e && (c == '-' || c == '+')) break; // Chen Li: put one more rule to prohibite input like // xxxx.xxxe+xxx.xxx: if (e && (c == '.')) break; if (p - str == size) { char *t = str; str = new char[size*2]; memcpy(str, t, size); delete [] t; p = str + size; size *= 2; } #ifdef CORE_DEBUG assert((p-str) < size); #endif *p++ = c; if (c == '.') d = 1; // Chen Li: fix a bug -- the sign of exponent can not happen before // the character "e" appears! It must follow the "e' actually. // if (e || c == '-' || c == '+') s = 1; if (e) s = 1; if ((c == 'e') || (c=='E')) e = 1; } // chenli: make sure that the p is still in the range if (p - str >= size) { int len = p - str; char *t = str; str = new char[len + 1]; memcpy(str, t, len); delete [] t; p = str + len; } #ifdef CORE_DEBUG assert(p - str < size); #endif *p = '\0'; i.putback(c); fromString(str); delete [] str; return i; }//operator >> // BigFloatRep::toDouble() // converts the BigFloat to a machine double // This is a dangerous function as the method // is silent when it does not fit into a machine double! // ToDo: fix this by return a machine NaN, +/- Infinity, +/- 0, // when appropriate. // Return NaN when error is larger than mantissa // Return +/- Infinity if BigFloat is too big // Return +/- 0 if BigFloat is too small #ifdef _MSC_VER #pragma warning(disable: 4723) #endif double BigFloatRep :: toDouble() const { if (m == 0) return (sign(m) * 0.0); long e2 = bits(exp); long le = clLg(err); // if err=0, le will be -1 if (le == -1) le = 0; BigInt M = m >> static_cast(le);// remove error bits in mantissa // Below, we want to return NaN by computing 0.0/0.0. // To avoid compiler warnings about divide by zero, we do this: double foolCompilerZero; foolCompilerZero = 0.0; // COMMENT: we should directly store the // special IEEE values NaN, +/-Infinity, +/-0 in the code!! if (M == 0) return ( 0.0/foolCompilerZero ) ; // return NaN e2 += le; // adjust exponent corresponding to error bits int len = bitLength(M) - 53; // this is positive if M is too large if (len > 0) { M >>= len; e2 += len; } double tt = doubleValue(M); int ee = e2 + bitLength(M) - 1; // real exponent. if (ee >= 1024) // overflow! return ( sign(m)/foolCompilerZero ); // return a signed infinity if (ee <= -1075) // underflow! // NOTE: if (-52 < ee <= 0) get denormalized number return ( sign(m) * 0.0 ); // return signed zero. // Execute this loop if e2 < 0; for (int i = 0; i > e2; i--) tt /= 2; // Execute this loop if e2 > 0; for (int j = 0; j < e2; j++) tt *= 2; return tt; }//toDouble #ifdef _MSC_VER #pragma warning(default: 4723) #endif BigInt BigFloatRep::toBigInt() const { long e2 = bits(exp); long le = clLg(err); if (le == -1) le = 0; #ifdef CORE_DEBUG assert (le >= 0); #endif BigInt M = m >> static_cast(le); // discard the contaminated bits. e2 += le; // adjust the exponent if (e2 < 0) return M >> static_cast(-e2); else if (e2 > 0) return M << static_cast(e2); else return M; } long BigFloatRep :: toLong() const { // convert a BigFloat to a long integer, rounded toward -\infty. long e2 = bits(exp); long le = clLg(err); #ifdef CORE_DEBUG assert (le >= 0); #endif BigInt M = m >> static_cast(le); // discard the contaminated bits. e2 += le; // adjust the exponent long t; if (e2 < 0) t = ulongValue(M >> static_cast(-e2)); else if (e2 > 0) t = ulongValue(M << static_cast(e2)); else t = ulongValue(M); // t = M.as_long(); // Note: as_long() will return LONG_MAX in case of overflow. return t; } // pow(r,n) function for BigFloat // Note: power(r,n) calls pow(r,n) BigFloat pow(const BigFloat& r, unsigned long n) { if (n == 0) return BigFloat(1); else if (n == 1) return r; else { BigFloat x = r; while ((n % 2) == 0) { // n is even x *= x; n >>= 1; } BigFloat u = x; while (true) { n >>= 1; if (n == 0) return u; x *= x; if ((n % 2) == 1) // n is odd u *= x; } return u; } }//pow // experimental BigFloat root(const BigFloat& x, unsigned long k, const extLong& a, const BigFloat& A) { if (x.sign() == 0) { return BigFloat(0); } else if (x == 1) { return BigFloat(1); } else { BigFloat q, del, zz; BigFloat z = A; BigFloat bk = long(k); for (; ;) { zz = pow(z, k-1); q = x.div(zz, a); q.makeExact(); del = z - q; del.makeExact(); if (del.MSB() < -a) break; z = ((bk-1)*z + q).div(bk, a); // newton's iteration: z_{n+1}=((k-1)z_n+x/z_n^{k-1})/k z.makeExact(); } return z; } }//root CORE_END_NAMESPACE core++-1.7/src/CoreAux.cpp0100644000175000001440000001462210106104210014620 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: CoreAux.cpp * Synopsis: * Auxiliary routines such as ceiling of log_2, etc. * they are not specific to any Core classes. * * Written by * Chee Yap * Chen Li * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/src/CoreAux.cpp,v $ * $Revision: 1.17 $ $Date: 2004/08/10 08:34:16 $ ***************************************************************************/ #include "CORE/CoreAux.h" #include CORE_BEGIN_NAMESPACE //////////////////////////////////////////////////////////// // More useful functions to implement: // // To convert digits into bits: // given X, compute X * log_2(10) // To convert bits into digits: // given X, compute X * log_10(2) // //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// // flrLg(x) // returns floor log base 2 of abs(x) // CONVENTION lg(0) = -1 (Slight improvement, Zilin/Chee 8/5/02) //////////////////////////////////////////////////////////// int flrLg(long x) { if (x == LONG_MIN) { // special treatment as -LONG_MIN would be not representable as "long" return LONG_BIT - 1; } else { // 1 <= |x| <= LONG_MAX if (x < 0) x = - x; int lg = -1; while (x > 0) { lg++; x >>= 1; } return lg; } } //////////////////////////////////////////////////////////// // floor log base 2 of unsigned long x // CONVENTION lg(0) = -1 (Slight improvement, Zilin/Chee 8/5/02) //////////////////////////////////////////////////////////// int flrLg(unsigned long x) { int lg = -1; while (x > 0) { lg++; x >>= 1; } return lg; } //////////////////////////////////////////////////////////// // ceiling log base 2 of abs(x) // CONVENTION lg(0) = -1 (Slight improvement, Zilin/Chee 8/5/02) //////////////////////////////////////////////////////////// int clLg(long x) { if (x == LONG_MIN) return LONG_BIT - 1; if (x < 0) x = -x; // use absolute value if (x > (LONG_MAX >> 1)) // the leading data bit is 1 return (LONG_BIT - 1); // exclude the sign bit if (x >= 2) return flrLg((unsigned long)((x << 1) - 1)); // SINCE ceilLog_2(x) = floorLog_2(2x-1) for x>=2 if (x == 1) return 0; return -1; // x must be 0 here } //////////////////////////////////////////////////////////// // ceiling log base 2 of unsigned long x // CONVENTION lg(0) = -1 //////////////////////////////////////////////////////////// int clLg(unsigned long x) { if (x > (ULONG_MAX >> 1)) // the leading bit is 1 return LONG_BIT; if (x >= 2) return flrLg((x << 1) - 1); // SINCE ceilLog_2(x) = floorLog_2(2x-1) for x>=2. if (x == 1) return 0; return -1; // x must be equal to 0 } /// gcd for machine type long /** This is needed when we construct Polynomials with int or long coefficients */ long gcd(long m, long n) { if (m == 0) return core_abs(n); if (n == 0) return core_abs(m); long p = core_abs(m); long q = core_abs(n); if (p0) { long r = p % q; p = q; q = r; } return p; } // return a gmp_randstate_t structure gmp_randstate_t* getRandstate() { static gmp_randstate_t rstate; static bool initialized = false; if (!initialized) { gmp_randinit(rstate, GMP_RAND_ALG_DEFAULT, 32L); initialized = true; } return &rstate; } // char* core_itoa(int n, char* buffer) // returns a pointer to the null-terminated string in buffer // NOTES: // 0. Buffer size should be 17 bytes (resp., 33 bytes, 65 bytes) on 16-bit // (resp., 32-bit, 64-bit) machines. Formula: 1+sizeof(int)*8 bytes. // 1. itoa(...) is available on some stdlib.h, but it is // not defined by ANSI-C and so not all compilers support it. // 2. Our use of sprintf(...) to do the job is known to // be inefficient, but this is hardly critical for our usage. // 3. A more general program should take a 3rd argument (the radix of // output number). We assume radix 10. char * core_itoa(int n, char* buffer) { sprintf(buffer, "%d", n); return buffer; } /// implements the "integer mantissa" function // (See CORE_PATH/progs/ieee/frexp.cpp for details) double IntMantissa(double d) { int e; return ldexp(frexp(d, &e), 53); } /// implements the "integer exponent" function // (See CORE_PATH/progs/ieee/frexp.cpp for details) int IntExponent(double d) { int e; frexp(d, &e); return e-53; } // core_error is the method to write Core Library warning or error messages // Warnings and Errors are written to a file called CORE_DIAGFILE // But Errors are also written on std:cerr (via the std::perror()). // // file where core_error(...) writes its output char* CORE_DIAGFILE = "Core_Diagnostics"; // global file name // error function for general use in Core Library void core_error(std::string msg, std::string file, int lineno, bool err) { std::ofstream outFile(CORE_DIAGFILE, std::ios::app); // open to append if (!outFile) { // perror("CORE ERROR: cannot open Core Diagnostics file"); std::cerr << "CORE ERROR: can't open Core Diagnostics file"< * Chen Li * Zilin Du * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/src/CoreDefs.cpp,v $ * $Revision: 1.22 $ $Date: 2004/07/21 14:59:38 $ ***************************************************************************/ #include "CORE/CoreDefs.h" CORE_BEGIN_NAMESPACE // Default Values /* ************************************************************ * ERROR FLAGS * ************************************************************ */ /** I/O error flag (Default value 0, indicating no error) * User's responsibility to check and reset value to 0. */ // This is currently used in geom2d/points2d.cpp for I/O of points int IOErrorFlag = 0; /** * If AbortFlag is true when invalid expression is constructed, system will abort */ bool AbortFlag = true; /** * InvalidFlag is set to negative whenever an invalid expression is constructed. * The user has the responsibility to reset to non-negative value. */ int InvalidFlag = 0; /* ************************************************************ * PRECISION PARAMETERS * ************************************************************ */ /** * Default BigFloat Division Relative Precision * -- this is used by BigFloat division when the arguments are error-free. */ extLong defBFdivRelPrec = 30; /** * Default BigFloat Sqrt Absolute Precision * -- this is used by BigFloat sqrt when the argument is error-free. */ extLong defBFsqrtAbsPrec = 30; /** * Escape Precision * -- we will not compare a number to precision higher than this * -- if this is infinity, there there is no escape precision */ extLong EscapePrec = CORE_posInfty; /** this flag becomes negative if the EscapePrec is used. */ long EscapePrecFlag = 0; /// Escape Precision Warning Flag /** this flag is true by default, and will cause a warning to be printed when EscapePrec is reached */ bool EscapePrecWarning = true; /** The Composite Precision [defAbsPrec, defRelPrec] * determines the precision to which an Expr evaluates its * (exact, implicit) constant value. */ /** absolute precision = 2^31 - 1 */ extLong defAbsPrec = CORE_posInfty; /** default relative precision is 60 relative bits. * Why 60? We would really like this to be 54, so that the default * conversion duplicates the IEEE double precision. But it turns out * (see README file under BUGS), we need 59 to ensure this. * Chee Yap (7/1/01) */ extLong defRelPrec = 60; /** number of BigFloat digits to print out */ long defBigFloatOutputDigits = 10; /** NORMALLY, we like to make this equal to defBigFloatOutputDigits * 8/3/01, Chee: re-introduced this parameter */ long defOutputDigits = defBigFloatOutputDigits; /** String Input Precision */ /** Set this to 16 if you want machine precision. This controls the * absolute error in string decimal inputs to Real or Expr. * If defInputDigits is finite, then the absolute error will be * at most 10^{-defInputDigits}. Otherwise, the input is exactly * represented by some BigFloat or BigRat value. */ extLong defInputDigits = CORE_posInfty; /** This controls the absolute error in converting from string to BigFloat * The absolute error will be at most 10^{-defInputDigits} */ long defBigFloatInputDigits = 16; /* ************************************************************ * EVALUATION FLAGS * ************************************************************ */ /** Floating Point filter * true = turn on floating point filter */ bool fpFilterFlag = true; /** IncrementaL evaluation flag * incremental evaluation is requested, This means, we try to use previous * approximate values to improve an approximation */ bool incrementalEvalFlag = true; /** Progressive evaluation flag * true = turn on progressive evaluation flag */ bool progressiveEvalFlag = true; /** Initial progressive evaluation precision * Used by AddSubRep */ long defInitialProgressivePrec = 64; /** RATIONAL REDUCTION FLAG * true = turn on rational reduction */ bool rationalReduceFlag = false; CORE_END_NAMESPACE core++-1.7/src/CoreIO.cpp0100644000175000001440000002644410077502332014415 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: CoreIO.cpp * * Written by * Zilin Du * Chee Yap * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/src/CoreIO.cpp,v $ * $Revision: 1.11 $ $Date: 2004/07/21 14:59:38 $ ***************************************************************************/ #include #include CORE_BEGIN_NAMESPACE void core_io_error_handler(const char *f, const char *m) { std::cout << "\n error_handler"; std::cout << "::" << f << "::" << m << "\n"; std::cout.flush(); abort(); } void core_io_memory_handler(char *t, const char *f, const char *m) { if (t == NULL) { std::cout << "\n memory_handler"; std::cout << "::" << f << "::" << m; std::cout << "memory exhausted\n"; std::cout.flush(); abort(); } } // s has size old_size and will be resized to new_size. void allocate (char * &s, int old_size, int new_size) { if (old_size > new_size) old_size = new_size; if (s == NULL) old_size = 0; char *t = new char[new_size]; core_io_memory_handler(t, "CoreIO", "allocate::out of memory error"); int i; for (i = 0; i < old_size; i++) t[i] = s[i]; delete[] s; s = t; } // appends c to s at position pos. // sz is the size of s void append_char (char * &s, int & sz, int pos, char c) { if (pos > sz) core_io_error_handler("CoreIO", "append_char::invalid argument"); if (pos == sz) { allocate(s, sz, 2*sz); sz *= 2; } s[pos] = c; } // skip blanks, tabs, line breaks and comment lines int skip_comment_line (std::istream & in) { int c; do { c = in.get(); while ( c == '#' ) { do { c = in.get(); } while ( c != '\n' ); c = in.get(); } } while (c == ' ' || c == '\t' || c == '\n'); if (c == EOF) core_io_error_handler("CoreIO::read_from_file()","unexpected end of file."); in.putback(c); return c; } // skips '\\' followed by '\n' int skip_backslash_new_line (std::istream & in) { int c = in.get(); while (c == '\\') { c = in.get(); if (c == '\n') c = in.get(); else core_io_error_handler("CoreIO::operator>>", "\\ must be immediately followed by new line."); } return c; } void read_string(std::istream& in, char* &buffer, int sz) { int c, pos=0; skip_comment_line(in); while ( (c = in.get()) != EOF ) { if ( c == ' ' || c == '\t' || c == '\n' || c == '#') break; else append_char(buffer, sz, pos++, c); } append_char(buffer, sz, pos, '\0'); } void read_base_number(std::istream& in, BigInt& m, long length, long maxBits) { char *buffer; int size, offset; int base; bool is_negate; int c, pos = 0; skip_comment_line(in); // read sign c = in.get(); if (c == '-') { is_negate = true; c = in.get(); } else is_negate = false; // read base and compute digits if (c == '0') { c = in.get(); if (c == 'b') { base = 2; size = (maxBits == 0 || maxBits > length) ? length : maxBits; offset = length - size; } else if (c == 'x') { base = 16; size = (maxBits == 0) ? length : (maxBits+3) >> 2; size = (size > length) ? length : size; offset = (length - size) << 2; } else { base = 8; size = (maxBits == 0) ? length : (maxBits+2) / 3; size = (size > length) ? length : size; offset = (length - size) * 3; in.putback(c); } } else { base = 10; size = (maxBits == 0) ? length : (int)::ceil(maxBits*log(2.0)/log(10.0)); size = (size > length) ? length : size; offset = length - size; in.putback(c); } buffer = new char[size+2]; // read digits for (int i=0; (i 0 && base != 10) { m <<= offset; } if (is_negate) negate(m); } void write_base_number(std::ostream& out, char* buffer, int length, int base, int charsPerLine) { // write big number in a format that gmp's mpz_set_str() can // automatically recognize with argument base = 0. if (base == 2) out << "0b"; else if (base == 16) out << "0x"; else if (base == 8) out << '0'; // write big number in charsPerLine. char* start, *end, c; for (int i=0; i= length) out << start; else { end = start + charsPerLine; c = *end; *end = '\0'; out << start << "\\\n"; *end = c; } } } void readFromFile(BigInt& z, std::istream& in, long maxLength) { char *buffer; long length; // check type name whether it is Integer or not. buffer = new char[8]; read_string(in, buffer, sizeof(buffer)); if ( strcmp(buffer, "Integer") != 0) core_io_error_handler("BigInt::read_from_file()","type name expected."); delete[] buffer; // read the bit length field. buffer = new char[100]; read_string(in, buffer, sizeof(buffer)); length = atol(buffer); delete[] buffer; // read bigint read_base_number(in, z, length, maxLength); } void writeToFile(const BigInt& z, std::ostream& out, int base, int charsPerLine) { BigInt c = abs(z); // get the absoulte value string char* buffer = new char[mpz_sizeinbase(c.get_mp(), base) + 2]; mpz_get_str(buffer, base, c.get_mp()); int length = strlen(buffer); // write type name of big number and length //out << "# This is an experimental big number format.\n"; out << "Integer " << length << "\n"; // if bigint is negative, then write an sign '-'. if ( sign(z) < 0 ) out << '-'; write_base_number(out, buffer, length, base, charsPerLine); out << "\n"; delete[] buffer; } void readFromFile(BigFloat& bf, std::istream& in, long maxLength) { char *buffer; long length; long exponent; BigInt mantissa; // check type name whether it is Float buffer = new char[6]; read_string(in, buffer, sizeof(buffer)); if (strcmp(buffer, "Float") != 0) core_io_error_handler("BigFloat::read_from_file()", "type name expected"); delete[] buffer; // read base (default is 16384) buffer = new char[8]; read_string(in, buffer, sizeof(buffer)); if (strcmp(buffer, "(16384)") != 0) core_io_error_handler("BigFloat::read_from_file()", "base expected"); delete[] buffer; // read the bit length field. buffer = new char[100]; read_string(in, buffer, sizeof(buffer)); length = atol(buffer); delete[] buffer; // read exponent buffer = new char[100]; read_string(in, buffer, sizeof(buffer)); exponent = atol(buffer); delete[] buffer; // read mantissa read_base_number(in, mantissa, length, maxLength); // construct BigFloat bf = BigFloat(mantissa, 0, exponent); } void writeToFile(const BigFloat& bf, std::ostream& out, int base, int charsPerLine) { BigInt c(CORE::abs(bf.m())); // get the absoulte value string char* buffer = new char[mpz_sizeinbase(c.get_mp(), base) + 2]; mpz_get_str(buffer, base, c.get_mp()); int length = strlen(buffer); // write type name, base, length //out << "# This is an experimental Big Float format." << std::endl; out << "Float (16384) " << length << std::endl; // write exponent out << bf.exp() << std::endl; // write mantissa if ( CORE::sign(bf.m()) < 0 ) out << '-'; write_base_number(out, buffer, length, base, charsPerLine); out << '\n'; delete[] buffer; } /* Underconstruction ---- void BigFloat::read_from_file2(std::istream& in, long maxLength) { long length = 1024; char *buffer; // check type name whether it is Float buffer = new char[7]; BigInt::read_string(in, buffer, sizeof(buffer)); if (strcmp(buffer, "NFloat") != 0) core_io_error_handler("BigFloat::read_from_file2()", "type name expected"); delete[] buffer; // read base (default is 16) buffer = new char[5]; BigInt::read_string(in, buffer, sizeof(buffer)); if (strcmp(buffer, "(16)") != 0) core_io_error_handler("BigFloat::read_from_file2()", "base expected"); delete[] buffer; // read length field buffer = new char[100]; BigInt::read_string(in, buffer, sizeof(buffer)); // get the length field if it is not null. if (buffer[0] != '\0') { length = atol(buffer); if (maxLength > 0 && length >= maxLength) length = maxLength; } delete[] buffer; // read exponent buffer = new char[100]; BigInt::read_string(in, buffer, sizeof(buffer)); long exp16 = atol(buffer); delete[] buffer; // read mantissa buffer = new char[length+2]; //BigInt::read_base_number(in, buffer, length); BigInt m16(buffer); delete[] buffer; // convert to base CHUNK_BIT exp16 = exp16 - length + 1; if ( m16.is_negative() ) exp16 ++; long tmp_exp = exp16 * 4; long q = tmp_exp / CHUNK_BIT; long r = tmp_exp % CHUNK_BIT; if ( r < 0 ) { r += CHUNK_BIT; q --; } BigInt mantissa = m16 << r; long exponent = q; // construct BigFloat if (--rep->refCount == 0) delete rep; rep = new BigFloatRep(mantissa, 0, exponent); rep->refCount++; } // write normal float // now it assumed to write in hex base, i.e. B=2^4=16 // (note: our default base B=2^(CHUNK_BIT)=2^14=16384 void BigFloat::write_to_file2(std::ostream& out, int base, int charsPerLine) { // convert to base 16. long new_base = 4; // 2^4 = 16 long tmp_exp = (rep->exp) * CHUNK_BIT; long q = tmp_exp / new_base; long r = tmp_exp % new_base; std::cout << "CORE_DEBUG: q=" << q << ", r=" << r << std::endl; if ( r < 0 ) { r += new_base; q--; } std::cout << "CORE_DEBUG: q=" << q << ", r=" << r << std::endl; BigInt m16 = (rep->m) << r; int size = mpz_sizeinbase(m16.I, base) + 2; std::cout << "size=" << size << std::endl; char* buffer = new char[size]; int length = bigint_to_string(m16, buffer, base); std::cout << "length=" << length << std::endl; long exp16 = q + length - 1; if ( m16.is_negative() ) exp16 --; // write type name, base, length out << "# This is an experimental Big Float format." << std::endl; out << "NFloat (16) " << length << std::endl; // write exponent out << exp16 << std::endl; // write mantissa if ( m16.is_negative() ) { out << '-'; buffer ++; } BigInt::write_base_number(out, buffer, length, base, charsPerLine); out << '\n'; delete[] buffer; } */ CORE_END_NAMESPACE core++-1.7/src/Expr.cpp0100644000175000001440000007736010106104210014200 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: Expr.cpp * * Written by * Koji Ouchi * Chee Yap * Igor Pechtchanski * Vijay Karamcheti * Chen Li * Zilin Du * Sylvain Pion * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/src/Expr.cpp,v $ * $Revision: 1.66 $ $Date: 2004/08/10 08:34:16 $ ***************************************************************************/ #include #include CORE_BEGIN_NAMESPACE #ifdef CORE_DEBUG_BOUND unsigned int BFMSS_counter = 0; unsigned int BFMSS_only_counter = 0; unsigned int Measure_counter = 0; unsigned int Measure_only_counter = 0; unsigned int Cauchy_counter = 0; unsigned int Cauchy_only_counter = 0; unsigned int LiYap_counter = 0; unsigned int LiYap_only_counter = 0; unsigned int rootBoundHitCounter = 0; unsigned int computeBoundCallsCounter = 0; #endif const char* Add::name = "+"; const char* Sub::name = "-"; /******************************************************** * class Expr ********************************************************/ const Expr& Expr::getZero() { static Expr Zero(0); return Zero; } const Expr& Expr::getOne() { static Expr One(1); return One; } // computes an interval comprising a pair of doubles // Note: // // This function returns are two consecutive representable binary // IEEE double values whichs contain the real value, but when you print out // them, you might be confused by the decimal represention due to round. // void Expr::doubleInterval(double & lb, double & ub) const { double d = doubleValue(); if (!finite(d)) { // if overflow, underflow or NaN lb = ub = d; return; } int sign = ((* this) -Expr(d)).sign(); // Seems like doubleValue() always give a lower bound, // so sign = 0 or 1 (never -1). //std::cout << "Sign = " << sign << std::endl; if (sign == 0) { lb = ub = d; return; } int exp; frexp(d, & exp); // get the exponent of d exp--; // the exp from frexp satisfies // 2^{exp-1} <= d < 2^{exp} // But, we want exp to satisfy // 2^{exp} <= d < 2^{exp+1} if (sign > 0) { lb = d; ub = d + ldexp(1.0, -52+exp); return; } else { ub = d; lb = d - ldexp(1.0, -52+exp); return; } } // floor(e, sub) returns the floor(e), and puts the // remainder into sub. BigInt floor(const Expr& e, Expr &sub) { if (e==0) { return 0; } BigInt f = e.approx(CORE_INFTY, 2).BigIntValue(); sub = e-f; // Adjustment if (sub<0) ++sub, --f; if (sub>=1) --sub, ++f; assert(sub >=0 && sub<1); // got an assertion error? (Chee 3/24/04) return f; } // Chenli: implemented algorithm from Goldberg's article. // 7/01: Thanks to Serge Pashkov for fixing infinite loop when n=0. Expr pow(const Expr& e, unsigned long n) { if (n == 0) return Expr(1); else if (n == 1) return e; else { Expr x = e; while ((n % 2) == 0) { // n is even x *= x; n >>= 1; } Expr u = x; while (true) { n >>= 1; if (n == 0) return u; x *= x; if ((n % 2) == 1) // n is odd u *= x; } return u; } }//pow NodeInfo::NodeInfo() : appValue(CORE_REAL_ZERO), appComputed(false), flagsComputed(false), knownPrecision(CORE_negInfty), #ifdef CORE_DEBUG relPrecision(EXTLONG_ZERO), absPrecision(CORE_negInfty), numNodes(0), #endif // Most of the following data members don't need to be // initialized here. d_e(EXTLONG_ZERO), visited(false), sign(0), uMSB(CORE_negInfty), lMSB(CORE_negInfty), // length(0), measure(EXTLONG_ZERO), high(EXTLONG_ZERO), low(EXTLONG_ONE), lc(EXTLONG_ZERO), tc(EXTLONG_ZERO), v2p(EXTLONG_ZERO), v2m(EXTLONG_ZERO), v5p(EXTLONG_ZERO), v5m(EXTLONG_ZERO), u25(EXTLONG_ZERO), l25(EXTLONG_ZERO), ratFlag(0), ratValue(NULL) { } /******************************************************** * class ExprRep ********************************************************/ // constructor ExprRep::ExprRep() : refCount(1), nodeInfo(NULL), ffVal(0.0) { } // Computes the root bit bound of the expression. // In effect, computeBound() returns the current value of low. extLong ExprRep::computeBound() { extLong measureBd = measure(); // extLong cauchyBd = length(); extLong ourBd = (d_e() - EXTLONG_ONE) * high() + lc(); // BFMSS[2,5] bound. extLong bfmsskBd; if (v2p().isInfty() || v2m().isInfty()) bfmsskBd = CORE_INFTY; else bfmsskBd = l25() + u25() * (d_e() - EXTLONG_ONE) - v2() - ceilLg5(v5()); // since we might compute \infty - \infty for this bound if (bfmsskBd.isNaN()) bfmsskBd = CORE_INFTY; extLong bd = core_min(measureBd, // core_min(cauchyBd, core_min(bfmsskBd, ourBd)); #ifdef CORE_SHOW_BOUNDS std::cout << "Bounds (" << measureBd << "," << bfmsskBd << ", " << ourBd << "), "; std::cout << "MIN = " << bd << std::endl; std::cout << "d_e= " << d_e() << std::endl; #endif #ifdef CORE_DEBUG_BOUND // Some statistics about which one is/are the winner[s]. computeBoundCallsCounter++; int number_of_winners = 0; std::cerr << " New contest " << std::endl; if (bd == bfmsskBd) { BFMSS_counter++; number_of_winners++; std::cerr << " BFMSS is the winner " << std::endl; } if (bd == measureBd) { Measure_counter++; number_of_winners++; std::cerr << " measureBd is the winner " << std::endl; } /* if (bd == cauchyBd) { Cauchy_counter++; number_of_winners++; std::cerr << " cauchyBd is the winner " << std::endl; } */ if (bd == ourBd) { LiYap_counter++; number_of_winners++; std::cerr << " ourBd is the winner " << std::endl; } assert(number_of_winners >= 1); if (number_of_winners == 1) { if (bd == bfmsskBd) { BFMSS_only_counter++; std::cerr << " BFMSSBd is the only winner " << std::endl; } else if (bd == measureBd) { Measure_only_counter++; std::cerr << " measureBd is the only winner " << std::endl; } /* else if (bd == cauchyBd) { Cauchy_only_counter++; std::cerr << " cauchyBd is the only winner " << std::endl; } */ else if (bd == ourBd) { LiYap_only_counter++; std::cerr << " ourBd is the only winner " << std::endl; } } #endif return bd; }//computeBound() void ExprRep::reduceToBigRat(const BigRat& rat) { Real value(rat); //appValue() = value; appComputed() = false; // since appValue is not assigned until approx() is called flagsComputed() = true; knownPrecision() = CORE_negInfty; #ifdef CORE_DEBUG relPrecision() = EXTLONG_ZERO; absPrecision() = CORE_negInfty; //numNodes() = numNodes(); #endif d_e() = EXTLONG_ONE; //visited() = e->visited(); sign() = value.sign(); uMSB() = value.MSB(); lMSB() = value.MSB(); // length() = value.length(); // fixed? original = 1 measure() = value.height(); // measure <= height for rational value // BFMSS[2,5] bound. value.ULV_E(u25(), l25(), v2p(), v2m(), v5p(), v5m()); extLong u_e = u25() + v2p(); extLong l_e = l25() + v2m(); u_e = u_e + ceilLg5(v5p()); l_e = l_e + ceilLg5(v5m()); if (l_e == EXTLONG_ZERO) { // no divisions introduced high() = u_e; low() = EXTLONG_ONE - u_e; // - (u_e - 1) } else { high() = u_e - l_e + EXTLONG_ONE; low() = 2 - high(); } lc() = l_e; tc() = u_e; if (ratValue() == NULL) ratValue() = new BigRat(rat); else *(ratValue()) = rat; } // This only copies the current information of the argument e to // *this ExprRep. void ExprRep::reduceTo(const ExprRep *e) { if (e->appComputed()) { appValue() = e->appValue(); appComputed() = true; flagsComputed() = true; knownPrecision() = e->knownPrecision(); #ifdef CORE_DEBUG relPrecision() = e->relPrecision(); absPrecision() = e->absPrecision(); numNodes() = e->numNodes(); #endif } d_e() = e->d_e(); //visited() = e->visited(); sign() = e->sign(); uMSB() = e->uMSB(); lMSB() = e->lMSB(); // length() = e->length(); // fixed? original = 1 measure() = e->measure(); // BFMSS[2,5] bound. u25() = e->u25(); l25() = e->l25(); v2p() = e->v2p(); v2m() = e->v2m(); v5p() = e->v5p(); v5m() = e->v5m(); high() = e->high(); low() = e->low(); // fixed? original = 0 lc() = e->lc(); tc() = e->tc(); // Chee (Mar 23, 2004), Notes on ratFlag(): // =============================================================== // For more information on the use of this flag, see progs/pentagon. // This is an integer valued member of the NodeInfo class. // Its value is used to determine whether // we can ``reduce'' an Expression to a single node containing // a BigRat value. This reduction is done if the global variable // rationalReduceFlag=true. The default value is false. // This is the intepretation of ratFlag: // ratFlag < 0 means irrational // ratFlag = 0 means not initialized // ratFlag > 0 means rational // Currently, ratFlag>0 is an upper bound on the size of the expression, // since we recursively compute // ratFlag(v) = ratFlag(v.lchild)+ratFlag(v.rchild) + 1. // PROPOSAL: if ratFlag() > RAT_REDUCE_THRESHHOLD // then we automatically do a reduction. We must determine // an empirical value for RAT_REDUCE_THRESHOLD if (rationalReduceFlag) { ratFlag() = e->ratFlag(); if (e->ratFlag() > 0 && e->ratValue() != NULL) { ratFlag() ++; if (ratValue() == NULL) ratValue() = new BigRat(*(e->ratValue())); else *(ratValue()) = *(e->ratValue()); } else ratFlag() = -1; } } void ExprRep::reduceToZero() { appValue() = CORE_REAL_ZERO; appComputed() = true; flagsComputed() = true; knownPrecision() = CORE_negInfty; #ifdef CORE_DEBUG relPrecision() = EXTLONG_ZERO; absPrecision() = CORE_negInfty; // numNodes() = 0; #endif d_e() = EXTLONG_ONE; visited() = false; sign() = 0; uMSB() = CORE_negInfty; lMSB() = CORE_negInfty; // length() = 0; // fixed? original = 1 measure() = EXTLONG_ZERO; // BFMSS[2,5] bound. u25() = l25() = v2p() = v2m() = v5p() = v5m() = EXTLONG_ZERO; low() = EXTLONG_ONE; // fixed? original = 0 high() = lc() = tc() = EXTLONG_ZERO; if (rationalReduceFlag) { if (ratFlag() > 0) { ratFlag() ++; if (ratValue() == NULL) ratValue() = new BigRat(0); else *(ratValue()) = 0; } else ratFlag() = 1; } } //////////////////////////////////////////////////////////// // Test whether the current approximate value satisfies // the composite precision requirements [relPrec, absPrec]. //////////////////////////////////////////////////////////// bool ExprRep::withinKnownPrecision(const extLong& relPrec, const extLong& absPrec) { if (appComputed()) { // an approximate value has been evaluated. if (appValue().isExact()) { return true; } else { // approximation has certain error. // decide to which position it is required to compute correctly. extLong required = core_max(-absPrec, appValue().lMSB()-relPrec); // see whether the existing error is smaller than the requirement. return (knownPrecision() <= required); } } else return false; }//withinKnownPrecision(a, r) // approximate the expression to certain precisions when // necessary (either no approximate value available or // the existing one is not accurate enough). void ExprRep::approx(const extLong& relPrec = defRelPrec, const extLong& absPrec = defAbsPrec) { if (!getSign()) return; // if it is exactly zero... // NOTE: The Filter might give a precise enough approximation already. if (!getExactSign()) return; if (!appComputed() || (!withinKnownPrecision(relPrec, absPrec))) { // it's necessary to re-evaluate. // to avoid huge lMSB which would cause long time and problems. // if it is a rational node if (rationalReduceFlag && ratFlag() > 0 && ratValue() != NULL) appValue() = Real(*(ratValue())).approx(relPrec, absPrec); //< shouldn't // this case be done by computeApproxValue()? else computeApproxValue(relPrec, absPrec); // update flags appComputed() = true; knownPrecision() = appValue().clLgErr(); #ifdef CORE_DEBUG if (relPrecision() < relPrec) relPrecision() = relPrec; if (absPrecision() < absPrec) absPrecision() = absPrec; #endif } } // return an approximate value to certain precision. const Real& ExprRep::getAppValue(const extLong& relPrec, const extLong& absPrec) { if (getSign()) { approx(relPrec, absPrec); return appValue(); } else return CORE_REAL_ZERO; } std::ostream& operator<<(std::ostream& o, ExprRep& rep) { if (rep.getSign()) { rep.approx(defRelPrec, defAbsPrec); o << rep.appValue(); } else { o << "0"; } return o; } // Chee, Zilin: July 17, 2002 // Original algorithm is wrongly implemented, and can take time // exponential in the size of the dag. // // METHOD: // Inductively assume that all "visited" flags are false. // This calls for a reimplementation of "count()" and "clearFlag()". // Actually, we did not have to fix the count() function. // // (1) First recursively compute d_e for each node // by calling the count() function. // Important thing is count() will turn the "visited" flags // to be true, so that there is no double counting. // Furthermore, if d_e had already been computed, the // arithmetic for d_e can be avoided (in this case, // it is only the setting of "visited" flag that we // are interested in! // (2) At the end of count(), we have set all reachable nodes // to "visited", and their d_e have been computed. // (3) Now, call clearFlag() to recursively clear all reachable // nodes. NOTE THAT PREVIOUSLY, clearFlag() was called // first! This obvious is wrong extLong ExprRep::degreeBound() { if (d_e() == EXTLONG_ONE) // no radical nodes below return EXTLONG_ONE; count(); clearFlag(); return d_e(); } // class ConstRealRep // constructor ConstRealRep::ConstRealRep(const Real & r) : value(r) { if (!value.isExact()) { // clone the BigFloat and set its error to zero. value = value.BigFloatValue().makeExact(); } ffVal = filteredFp(value); } // initialize nodeInfo void ConstRep::initNodeInfo() { nodeInfo = new NodeInfo(); d_e() = EXTLONG_ONE; } void UnaryOpRep::initNodeInfo() { if (child->nodeInfo == NULL) child->initNodeInfo(); nodeInfo = new NodeInfo(); } void BinOpRep::initNodeInfo() { if (first->nodeInfo == NULL) first->initNodeInfo(); if (second->nodeInfo == NULL) second->initNodeInfo(); nodeInfo = new NodeInfo(); } #ifdef CORE_DEBUG unsigned long ConstRep::dagSize() { if (!visited()) { visited() = true; numNodes() = 1; } else numNodes() = 0; return numNodes(); } unsigned long UnaryOpRep::dagSize() { if (!visited()) { visited() = true; numNodes() = child->dagSize() + 1; } else numNodes() = 0; return numNodes(); } unsigned long BinOpRep::dagSize() { if (!visited()) { visited() = true; numNodes() = first->dagSize() + second->dagSize() + 1; } else numNodes() = 0; return numNodes(); } void ConstRep::fullClearFlag() { if (visited()) visited() = false; } void UnaryOpRep::fullClearFlag() { if (visited()) { child->fullClearFlag(); visited() = false; } } void BinOpRep::fullClearFlag() { if (visited()) { first->fullClearFlag(); second->fullClearFlag(); visited() = false; } } #endif // // clear visited flag // /* see Expr.h void ConstRep::clearFlag() { visited = false; } */ void UnaryOpRep::clearFlag() { if (d_e() == EXTLONG_ONE) return; // no radicals below. if (visited()) { visited() = false; child->clearFlag(); } } // class BinOpRep void BinOpRep::clearFlag() { if (d_e() == EXTLONG_ONE) return; // rational below if (visited()) { visited() = false; first->clearFlag(); second->clearFlag(); } } // // count # of squareroot // extLong ConstRep::count() { if (visited()) return EXTLONG_ONE; visited() = true; return d_e(); } extLong NegRep::count() { if (d_e() == EXTLONG_ONE) return EXTLONG_ONE; if (visited()) return EXTLONG_ONE; visited() = true; d_e() = child->count(); return d_e(); } extLong SqrtRep::count() { if (d_e() == EXTLONG_ONE) return EXTLONG_ONE; if (visited()) return EXTLONG_ONE; visited() = true; d_e() = child->count() * EXTLONG_TWO; return d_e(); } extLong BinOpRep::count() { if (d_e() == EXTLONG_ONE) return EXTLONG_ONE; if (visited()) return EXTLONG_ONE; visited() = true; d_e() = first->count() * second->count(); return d_e(); } // // compute exact flags functions // // exact value void computeExactFlags_temp(ConstRep* t, const Real &value) { // Chen Li: the following is incorrect: // uMSB = lMSB = value.MSB(); // because the value could be a BigFloat which is an interval. if (value.isExact()) { t->uMSB() = t->lMSB() = value.MSB(); } else { t->uMSB() = value.uMSB(); t->lMSB() = value.lMSB(); core_error("Leaves in DAG is not exact!", __FILE__, __LINE__, true); } t->sign() = value.sign(); // t->length() = value.length(); t->measure() = value.height(); // for rationals and integers, // measure = height. // BFMSS[2,5] bound. value.ULV_E(t->u25(), t->l25(), t->v2p(), t->v2m(), t->v5p(), t->v5m()); // The original BFMSS parameters can be set from the BFMSS[2,5] parameters. // Here we just need them locally. extLong u_e = t->u25() + t->v2p() + ceilLg5(t->v5p()); extLong l_e = t->l25() + t->v2m() + ceilLg5(t->v5m()); #ifdef ORIGINAL_BFMSS // To go back to the original BFMSS : t->u25() = u_e; t->l25() = l_e; t->v2p() = t->v2m() = t->v5p() = t->v5m() = EXTLONG_ZERO; #elif defined BFMSS_2_ONLY // To go back to BFMSS[2] only : t->u25() = t->u25() + ceilLg5(t->v5p()); t->l25() = t->l25() + ceilLg5(t->v5m()); t->v5p() = t->v5m() = EXTLONG_ZERO; #endif if (l_e == EXTLONG_ZERO) { // no divisions introduced t->high() = u_e; t->low() = EXTLONG_ONE - u_e; // - (u_e - 1) } else { t->high() = u_e - l_e + EXTLONG_ONE; t->low() = EXTLONG_TWO - t->high(); } t->lc() = l_e; t->tc() = u_e; // set BigRat value if (rationalReduceFlag) { t->ratFlag() = 1; t->ratValue() = new BigRat(value.BigRatValue()); } t->flagsComputed() = true; } void ConstDoubleRep::computeExactFlags() {// can be made more efficient computeExactFlags_temp(this, Real(ffVal.getValue())); } void ConstRealRep::computeExactFlags() { computeExactFlags_temp(this, value); } void NegRep::computeExactFlags() { if (!child->flagsComputed()) child->computeExactFlags(); if (child->sign() == 0) { reduceToZero(); return; } if (rationalReduceFlag) { if (child->ratFlag()>0 && child->ratValue() != NULL) { BigRat val = -(*(child->ratValue())); reduceToBigRat(val); ratFlag() = child->ratFlag()+1; return; } else ratFlag() = -1; } sign() = -child->sign(); uMSB() = child->uMSB(); lMSB() = child->lMSB(); // length() = child->length(); measure() = child->measure(); u25() = child->u25(); l25() = child->l25(); v2p() = child->v2p(); v2m() = child->v2m(); v5p() = child->v5p(); v5m() = child->v5m(); high() = child->high(); low() = child->low(); lc() = child->lc(); tc() = child->tc(); flagsComputed() = true; }//NegRep::computeExactFlags void SqrtRep::computeExactFlags() { if (!child->flagsComputed()) child->computeExactFlags(); if (rationalReduceFlag) ratFlag() = -1; sign() = child->sign(); if (sign() < 0) core_error("squareroot is called with negative operand.", __FILE__, __LINE__, true); uMSB() = child->uMSB() / EXTLONG_TWO; lMSB() = child->lMSB() / EXTLONG_TWO; // length() = child->length(); measure() = child->measure(); // BFMSS[2,5] bound. if (child->v2p() + ceilLg5(child->v5p()) + child->u25() >= child->v2m() + ceilLg5(child->v5m()) + child->l25()) { extLong vtilda2 = child->v2p() + child->v2m(); v2p() = vtilda2 / EXTLONG_TWO; v2m() = child->v2m(); extLong vmod2; if (v2p().isInfty()) vmod2 = CORE_INFTY; else vmod2 = vtilda2 - EXTLONG_TWO*v2p(); // == vtilda2 % 2 extLong vtilda5 = child->v5p() + child->v5m(); v5p() = vtilda5 / EXTLONG_TWO; v5m() = child->v5m(); extLong vmod5; if (v5p().isInfty()) vmod5 = CORE_INFTY; else vmod5 = vtilda5 - EXTLONG_TWO*v5p(); // == vtilda5 % 2 u25() = (child->u25() + child->l25() + vmod2 + ceilLg5(vmod5) + EXTLONG_ONE) / EXTLONG_TWO; l25() = child->l25(); } else { extLong vtilda2 = child->v2p() + child->v2m(); v2p() = child->v2p(); v2m() = vtilda2 / EXTLONG_TWO; extLong vmod2; if (v2m().isInfty()) vmod2 = CORE_INFTY; else vmod2 = vtilda2 - EXTLONG_TWO*v2m(); // == vtilda2 % 2 extLong vtilda5 = child->v5p() + child->v5m(); v5p() = child->v5p(); v5m() = vtilda5 / EXTLONG_TWO; u25() = child->u25(); extLong vmod5; if (v5m().isInfty()) vmod5 = CORE_INFTY; else vmod5 = vtilda5 - EXTLONG_TWO*v5m(); // == vtilda5 % 2 l25() = (child->u25() + child->l25() + vmod2 + ceilLg5(vmod5) + EXTLONG_ONE) / EXTLONG_TWO; } high() = (child->high() +EXTLONG_ONE)/EXTLONG_TWO; low() = child->low() / EXTLONG_TWO; lc() = child->lc(); tc() = child->tc(); flagsComputed() = true; }// SqrtRep::computeExactFlags void MultRep::computeExactFlags() { if (!first->flagsComputed()) first->computeExactFlags(); if (!second->flagsComputed()) second->computeExactFlags(); if ((!first->sign()) || (!second->sign())) { // value must be exactly zero. reduceToZero(); return; } // rational node if (rationalReduceFlag) { if (first->ratFlag() > 0 && second->ratFlag() > 0) { BigRat val = (*(first->ratValue()))*(*(second->ratValue())); reduceToBigRat(val); ratFlag() = first->ratFlag() + second->ratFlag(); return; } else ratFlag() = -1; } // value is irrational. uMSB() = first->uMSB() + second->uMSB() + EXTLONG_ONE; lMSB() = first->lMSB() + second->lMSB(); sign() = first->sign() * second->sign(); extLong df = first->d_e(); extLong ds = second->d_e(); // extLong lf = first->length(); // extLong ls = second->length(); // length() = df * ls + ds * lf; measure() = (first->measure()) * ds+(second->measure()) * df; // BFMSS[2,5] bound. v2p() = first->v2p() + second->v2p(); v2m() = first->v2m() + second->v2m(); v5p() = first->v5p() + second->v5p(); v5m() = first->v5m() + second->v5m(); u25() = first->u25() + second->u25(); l25() = first->l25() + second->l25(); high() = first->high() + second->high(); low() = first->low() + second->low(); lc() = ds * first->lc() + df * second->lc(); tc() = core_min(ds * first->tc() + df * second->tc(), measure()); flagsComputed() = true; }// MultRep::computeExactFlags void DivRep::computeExactFlags() { if (!first->flagsComputed()) first->computeExactFlags(); if (!second->flagsComputed()) second->computeExactFlags(); if (!second->sign()) core_error("zero divisor.", __FILE__, __LINE__, true); if (!first->sign()) {// value must be exactly zero. reduceToZero(); return; } // rational node if (rationalReduceFlag) { if (first->ratFlag() > 0 && second->ratFlag() > 0) { BigRat val = (*(first->ratValue()))/(*(second->ratValue())); reduceToBigRat(val); ratFlag() = first->ratFlag() + second->ratFlag(); return; } else ratFlag() = -1; } // value is irrational. uMSB() = first->uMSB() - second->lMSB(); lMSB() = first->lMSB() - second->uMSB() - EXTLONG_ONE; sign() = first->sign() * second->sign(); extLong df = first->d_e(); extLong ds = second->d_e(); // extLong lf = first->length(); // extLong ls = second->length(); // length() = df * ls + ds * lf; measure() = (first->measure())*ds + (second->measure())*df; // BFMSS[2,5] bound. v2p() = first->v2p() + second->v2m(); v2m() = first->v2m() + second->v2p(); v5p() = first->v5p() + second->v5m(); v5m() = first->v5m() + second->v5p(); u25() = first->u25() + second->l25(); l25() = first->l25() + second->u25(); high() = first->high() + second->low(); low() = first->low() + second->high(); lc() = ds * first->lc() + df * second->tc(); tc() = core_min(ds * first->tc() + df * second->lc(), measure()); flagsComputed() = true; } // // approximation functions // void ConstDoubleRep::computeApproxValue(const extLong& relPrec, const extLong& absPrec) // can ignore precision bounds since ffVal.getValue() returns exact value { appValue() = Real(ffVal.getValue()); } void ConstRealRep::computeApproxValue(const extLong& relPrec, const extLong& absPrec) { appValue() = value.approx(relPrec, absPrec); } void NegRep::computeApproxValue(const extLong& relPrec, const extLong& absPrec) { appValue() = -child->getAppValue(relPrec, absPrec); } void SqrtRep::computeApproxValue(const extLong& relPrec, const extLong& absPrec) { extLong r = relPrec + relPrec + EXTLONG_EIGHT; // chenli: ??? extLong a = absPrec + absPrec + EXTLONG_EIGHT; extLong pr = - lMSB() + r; extLong p = pr < a ? pr : a; Real val = child->getAppValue(r, a); if (incrementalEvalFlag) { if (appValue() == CORE_REAL_ZERO) appValue() = val; appValue() = val.sqrt(p, appValue().BigFloatValue()); } else appValue() = val.sqrt(p); } void MultRep::computeApproxValue(const extLong& relPrec, const extLong& absPrec) { if (lMSB() < EXTLONG_BIG && lMSB() > EXTLONG_SMALL) { extLong r = relPrec + EXTLONG_FOUR; extLong afr = - first->lMSB() + EXTLONG_ONE; extLong afa = second->uMSB() + absPrec + EXTLONG_FIVE; extLong af = afr > afa ? afr : afa; extLong asr = - second->lMSB() + EXTLONG_ONE; extLong asa = first->uMSB() + absPrec + EXTLONG_FIVE; extLong as = asr > asa ? asr : asa; appValue() = first->getAppValue(r, af)*second->getAppValue(r, as); } else { std::cerr << "lMSB = " << lMSB() << std::endl; core_error("a huge lMSB in MulRep", __FILE__, __LINE__, false); } } void DivRep::computeApproxValue(const extLong& relPrec, const extLong& absPrec) { if (lMSB() < EXTLONG_BIG && lMSB() > EXTLONG_SMALL) { extLong rr = relPrec + EXTLONG_SEVEN; // These rules come from extLong ra = uMSB() + absPrec + EXTLONG_EIGHT; // Koji's Master Thesis, page 65 extLong ra2 = core_max(ra, EXTLONG_TWO); extLong r = core_min(rr, ra2); extLong af = - first->lMSB() + r; extLong as = - second->lMSB() + r; extLong pr = relPrec + EXTLONG_SIX; extLong pa = uMSB() + absPrec + EXTLONG_SEVEN; extLong p = core_min(pr, pa); // Seems to be an error: // p can be negative here! // Also, this does not conform to // Koji's thesis which has a default // relative precision (p.65). appValue() = first->getAppValue(r, af).div(second->getAppValue(r, as), p); } else { std::cerr << "lMSB = " << lMSB() << std::endl; core_error("a huge lMSB in DivRep", __FILE__, __LINE__, false); } } // // Debug Help Functions // void Expr::debug(int mode, int level, int depthLimit) const { std::cout << "-------- Expr debug() -----------" << std::endl; std::cout << "rep = " << rep << std::endl; if (mode == Expr::LIST_MODE) rep->debugList(level, depthLimit); else if (mode == Expr::TREE_MODE) rep->debugTree(level, 0, depthLimit); else core_error("unknown debugging mode", __FILE__, __LINE__, false); std::cout << "---- End Expr debug(): " << std::endl; } const std::string ExprRep::dump(int level) const { std::ostringstream ost; if (level == OPERATOR_ONLY) { ost << op(); } else if (level == VALUE_ONLY) { ost << appValue(); } else if (level == OPERATOR_VALUE) { ost << op() << "[val: " << appValue() << "]"; } else if (level == FULL_DUMP) { ost << op() << "[val: " << appValue() << "; " << "kp: " << knownPrecision() << "; " #ifdef CORE_DEBUG << "r: " << relPrecision() << "; " << "a: " << absPrecision() << "; " #endif << "lMSB: " << lMSB() << "; " << "uMSB: " << uMSB() << "; " << "sign: " << sign() << "; " // << "length: " << length() << "; " << "measure: " << measure() << "; " << "d_e: " << d_e() << "; " << "u25: " << u25() << "; " << "l25: " << l25() << "; " << "v2p: " << v2p() << "; " << "v2m: " << v2m() << "; " << "v5p: " << v5p() << "; " << "v5m: " << v5m() << "; " << "high: " << high() << "; " << "low: " << low() << "; " << "lc: " << lc() << "; " << "tc: " << tc() << "]"; } return std::string(ost.str()); // note that str() return an array not properly terminated! } void UnaryOpRep::debugList(int level, int depthLimit) const { if (depthLimit <= 0) return; if (level == Expr::SIMPLE_LEVEL) { std::cout << "(" << dump(OPERATOR_VALUE); child->debugList(level, depthLimit - 1); std::cout << ")"; } else if (level == Expr::DETAIL_LEVEL) { std::cout << "(" << dump(FULL_DUMP); child->debugList(level, depthLimit - 1); std::cout << ")"; } } void UnaryOpRep::debugTree(int level, int indent, int depthLimit) const { if (depthLimit <= 0) return; for (int i = 0; idebugTree(level, indent + 2, depthLimit - 1); } void ConstRep::debugList(int level, int depthLimit) const { if (depthLimit <= 0) return; if (level == Expr::SIMPLE_LEVEL) { std::cout << "(" << dump(OPERATOR_VALUE) << ")"; } else if (level == Expr::DETAIL_LEVEL) { std::cout << "(" << dump(FULL_DUMP) << ")"; } } void ConstRep::debugTree(int level, int indent, int depthLimit) const { if (depthLimit <= 0) return; for (int i=0; idebugList(level, depthLimit - 1); std::cout << ", "; second->debugList(level, depthLimit - 1); std::cout << ")" ; } void BinOpRep::debugTree(int level, int indent, int depthLimit) const { if (depthLimit <= 0) return; for (int i=0; idebugTree(level, indent + 2, depthLimit - 1); second->debugTree(level, indent + 2, depthLimit - 1); } CORE_END_NAMESPACE core++-1.7/src/GmpIO.cpp0100644000175000001440000001277310077502333014251 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * file: GmpIO.cpp * Adapted from multi-files under /cxx in GMP's source distribution * * Zilin Du, 2003 * * $Source: /home/exact/cvsroot/exact/corelib/src/GmpIO.cpp,v $ * $Revision: 1.7 $ $Date: 2004/07/21 14:59:39 $ ***************************************************************************/ /* Auxiliary functions for C++-style input of GMP types. Copyright 2001 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include using namespace std; CORE_BEGIN_NAMESPACE int __gmp_istream_set_base (istream &i, char &c, bool &zero, bool &showbase) { int base; zero = showbase = false; switch (i.flags() & ios::basefield) { case ios::dec: base = 10; break; case ios::hex: base = 16; break; case ios::oct: base = 8; break; default: showbase = true; // look for initial "0" or "0x" or "0X" if (c == '0') { if (! i.get(c)) c = 0; // reset or we might loop indefinitely if (c == 'x' || c == 'X') { base = 16; i.get(c); } else { base = 8; zero = true; // if no other digit is read, the "0" counts } } else base = 10; break; } return base; } void __gmp_istream_set_digits (string &s, istream &i, char &c, bool &ok, int base) { switch (base) { case 10: while (isdigit(c)) { ok = true; // at least a valid digit was read s += c; if (! i.get(c)) break; } break; case 8: while (isdigit(c) && c != '8' && c != '9') { ok = true; // at least a valid digit was read s += c; if (! i.get(c)) break; } break; case 16: while (isxdigit(c)) { ok = true; // at least a valid digit was read s += c; if (! i.get(c)) break; } break; } } istream & operator>> (istream &i, mpz_ptr z) { int base; char c = 0; string s; bool ok = false, zero, showbase; i.get(c); // start reading if (i.flags() & ios::skipws) // skip initial whitespace while (isspace(c) && i.get(c)) ; if (c == '-' || c == '+') // sign { if (c == '-') // mpz_set_str doesn't accept '+' s = "-"; i.get(c); } while (isspace(c) && i.get(c)) // skip whitespace ; base = __gmp_istream_set_base(i, c, zero, showbase); // select the base __gmp_istream_set_digits(s, i, c, ok, base); // read the number if (i.good()) // last character read was non-numeric i.putback(c); else if (i.eof() && (ok || zero)) // stopped just before eof i.clear(); if (ok) mpz_set_str(z, s.c_str(), base); // extract the number else if (zero) mpz_set_ui(z, 0); else i.setstate(ios::failbit); // read failed return i; } istream & operator>> (istream &i, mpq_ptr q) { int base; char c = 0; string s; bool ok = false, zero, showbase; i.get(c); // start reading if (i.flags() & ios::skipws) // skip initial whitespace while (isspace(c) && i.get(c)) ; if (c == '-' || c == '+') // sign { if (c == '-') s = "-"; i.get(c); } while (isspace(c) && i.get(c)) // skip whitespace ; base = __gmp_istream_set_base(i, c, zero, showbase); // select the base __gmp_istream_set_digits(s, i, c, ok, base); // read the numerator if (! ok && zero) // the only digit read was "0" { base = 10; s += '0'; ok = true; } if (i.flags() & ios::skipws) while (isspace(c) && i.get(c)) // skip whitespace ; if (c == '/') // there's a denominator { bool zero2 = false; int base2 = base; s += '/'; ok = false; // denominator is mandatory i.get(c); while (isspace(c) && i.get(c)) // skip whitespace ; if (showbase) // check base of denominator base2 = __gmp_istream_set_base(i, c, zero2, showbase); if (base2 == base || base2 == 10) // read the denominator __gmp_istream_set_digits(s, i, c, ok, base); if (! ok && zero2) // the only digit read was "0" { // denominator is 0, but that's your business s += '0'; ok = true; } } if (i.good()) // last character read was non-numeric i.putback(c); else if (i.eof() && ok) // stopped just before eof i.clear(); if (ok) mpq_set_str(q, s.c_str(), base); // extract the number else i.setstate(ios::failbit); // read failed return i; } ostream& operator<< (ostream &o, mpz_srcptr z) { return o << mpz_get_str (0, 10, z); } ostream& operator<< (ostream &o, mpq_srcptr q) { return o << mpq_get_str (0, 10, q); } CORE_END_NAMESPACE core++-1.7/src/Makefile0100644000175000001440000000454410144725455014236 0ustar joachimusers# file: Makefile (for src) #$Id: Makefile,v 1.23 2004/11/11 18:10:53 exact Exp $ # ============================================================= # PATHS ====================================================== # ============================================================= CORE_PATH=.. INCLUDE=-I${CORE_PATH}/inc -I${CORE_PATH}/gmp/include # VAR indicates variants of the Core library # E.g., if VAR=(empty) then we compile the release version. # If VAR=Debug, then we compile a debugging version. EXPROBJS=GmpIO${VAR}.o CoreIO${VAR}.o CoreAux${VAR}.o CoreDefs${VAR}.o \ extLong${VAR}.o BigFloat${VAR}.o Real${VAR}.o Expr${VAR}.o # ============================================================= # FLAGS ======================================================= # ============================================================= # read in the appropriate compilation settings from the # global Make.config. include ${CORE_PATH}/Make.config # ============================================================= # TARGETS ===================================================== # ============================================================= # The following library will be built: CORE_LIB=$(CORE_PATH)/lib/libcore++${VAR}.a CORE_SHARED_LIB=$(CORE_PATH)/lib/libcore++${VAR}.so TARGET=$(CORE_LIB) ifeq (${LINKAGE}, shared) TARGET+=$(CORE_SHARED_LIB) endif # ============================================================= # RULES ====================================================== # ============================================================= all: ${TARGET} ${CORE_LIB}: $(EXPROBJS) $(AR) $@ $? ${CORE_SHARED_LIB}: $(EXPROBJS) $(CXX) $(CORE_LDFLAGS) -o $@ $^ %${VAR}.o: %.cpp # Aug 8, 2004 by Chee (TEMP CHANGE! FOR DEBUGGING) # ${CXX} $(CORE_CXXFLAGS) -DCORE_SHOW_BOUNDS $(INCLUDE) -c $< -o $@ ${CXX} $(CORE_CXXFLAGS) $(INCLUDE) -c $< -o $@ # ============================================================= # HOUSE KEEPING ============================================== # ============================================================= clean: -@test -z "*${VAR}.o" || rm -rf *${VAR}.o veryclean: clean -@test -z "${CORE_LIB}" || rm -rf "${CORE_LIB}" -@test -z "${CORE_SHARED_LIB}" || rm -rf "${CORE_SHARED_LIB}" REPLACE_STRING="s/1.6, June 2003/1.7, August 2004/;s/1995-2003/1995-2004/" chver: @for f in *.cpp; do \ sed -e ${REPLACE_STRING} $$f > x.tmp; mv x.tmp $$f; \ done core++-1.7/src/Real.cpp0100644000175000001440000001634210077502333014155 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: Real.cpp * Synopsis: The Real class is a superclass for all the number * systems in the Core Library (int, long, float, double, * BigInt, BigRat, BigFloat, etc) * * Written by * Koji Ouchi * Chee Yap * Chen Li * Zilin Du * Sylvain Pion * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/src/Real.cpp,v $ * $Revision: 1.29 $ $Date: 2004/07/21 14:59:39 $ ***************************************************************************/ #include #if defined (__BORLANDC__) #include #endif #include CORE_BEGIN_NAMESPACE const Real& Real::getZero() { static Real Zero(0); return Zero; } BigInt floor(const Real& r, Real &sub) { BigInt f = r.approx(CORE_INFTY, 2).BigIntValue(); sub = r-f; // Adjustment if (sub<0) ++sub, --f; if (sub>=1) --sub, ++f; assert(sub >=0 && sub<1); return f; } // pow(r,n) and power(r, n) are the same function // Real pow(const Real& r, unsigned long n) { if (n == 0) return Real(1); else if (n == 1) return r; else { Real x = r; while ((n % 2) == 0) { // n is even x *= x; n >>= 1; } Real u = x; while (true) { n >>= 1; if (n == 0) return u; x *= x; if ((n % 2) == 1) // n is odd u *= x; } return u; } }//pow extern BigInt FiveTo(unsigned long exp); // Construct Real from String // Note: // -- Zilin Du: 06/03/2003 // -- Original it is the code for Real's constructor for "const char*". // I change it to a function so that two constrcutors can share the code. // now it is private and no default value. // // --Default value of the argument "prec" is defInputDigits // --If prec is CORE_posInfty, then the input is // read in exactly. Otherwise, we convert to a RealBigFloat // with absolute error at most 10^{-prec} // Constructor Real( char *str, extLong& prec) // is very similar to // BigFloatRep::fromString( char *str, extLong& prec); // Differences: // In BigFloat(str, prec), the value of prec cannot be infinity, and // it defaults to defBigFloatInputDigits; // In Real(str, prec), the value of prec is allowed to be infinity, and // it defaults to defInputDigits. // // Why do we have the two versions? It allows us to use the BigFloat class // directly, without relying on Real class. void Real::constructFromString(const char *str, const extLong& prec ) // NOTE: prec defaults to defInputDigits (see Real.h) { // 8/8/01, Chee and Zilin: add a new rational string format: // this format is indicated by the presence of a slash "/" // Moreover, the value of prec is ignored (basically // assumed to be infinity). if (strchr(str, '/') != NULL) { // this is a rational number rep = new RealBigRat(BigRat(str)); return; } const char *e = strchr(str, 'e'); int dot = 0; long e10 = 0; if (e != NULL) e10 = atol(e+1); // e10 is decimal precision of the input string // i.e., input is A/10^{e10}. else { e = str + strlen(str); #ifdef CORE_DEBUG assert(*e == '\0'); #endif } const char *p = str; if (*p == '-' || *p == '+') p++; BigInt m(0); for (; p < e; p++) { if (*p == '.') { dot = 1; continue; } m = m * 10 + (*p - '0'); if (dot) e10--; } long t = (e10 < 0) ? -e10 : e10; BigInt one(1); BigInt ten = FiveTo(t) * (one << static_cast(t)); if (*str == '-') m = -m; if (e10 >= 0) { // convert exactly from integer numbers m *= ten; rep = new RealBigInt(m); } else { // e10 < 0, fractional numbers // HERE IS WHERE WE USE THE SYSTEM CONSTANT // defInputDigits // Note: defInputDigits should be at least log_2(10). // We default defInputDigits to 4. //std::cout << "(m,ten)=" << m << "," << ten << std::endl; BigRat r(m, ten); if (prec.isInfty()) { // convert exactly! to a big rational rep = new RealBigRat(r); } else { // convert approximately, to a BigFloat within the // specified precision: // BigFloat bf(r, CORE_posInfty, prec * lgTenM) ; BigFloat bf(r, CORE_posInfty, prec * 4) ; rep = new RealBigFloat(bf); } } }// Real(str, prec) // The operator >>(i,x) calls the constructor Real(char*) std::istream& operator >>(std::istream& i, Real& x) { int size = 20; char *str = new char[size]; char *p = str; char c; int d = 0, e = 0, s = 0; // int done = 0; // Chen Li: fixed a bug, the original statement is // for (i.get(c); c == ' '; i.get(c)); // use isspace instead of testing c == ' ', since it must also // skip tab, catridge/return, etc. // Change to: // int status; do { c = i.get(); } while (isspace(c)); /* loop if met end-of-file, or char read in is white-space. */ // Chen Li, // original "if (c == EOF) ..." is unsafe since c is of char type and // EOF is of int tyep with a negative value -1 if (i.eof()) { i.clear(std::ios::eofbit | std::ios::failbit); return i; } // the current content in "c" should be the first non-whitespace char if (c == '-' || c == '+') { *p++ = c; i.get(c); } for (; isdigit(c) || (!d && c=='.') || (!e && c=='e') || (!s && (c=='-' || c=='+')); i.get(c)) { if (!e && (c == '-' || c == '+')) break; // Chen Li: put one more rule to prohibite input like // xxxx.xxxe+xxx.xxx: if (e && (c == '.')) break; if (p - str == size) { char *t = str; str = new char[size*2]; memcpy(str, t, size); delete [] t; p = str + size; size *= 2; } #ifdef CORE_DEBUG assert((p-str) < size); #endif *p++ = c; if (c == '.') d = 1; // Chen Li: fix a bug -- the sign of exponent can not happen before // the character "e" appears! It must follow the "e' actually. // if (e || c == '-' || c == '+') s = 1; if (e) s = 1; if (c == 'e') e = 1; } // chenli: make sure that the p is still in the range if (p - str >= size) { int len = p - str; char *t = str; str = new char[len + 1]; memcpy(str, t, len); delete [] t; p = str + len; } #ifdef CORE_DEBUG assert(p - str < size); #endif *p = '\0'; i.putback(c); // old: x = Real(str, i.precision()); // use precision of input stream. x = Real(str); // default precision = defInputDigits delete [] str; return i; }//operator >> (std::istream&, Real&) CORE_END_NAMESPACE core++-1.7/src/extLong.cpp0100644000175000001440000001277010077502334014714 0ustar joachimusers/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CORE (http://cs.nyu.edu/exact/core/); you may * redistribute it under the terms of the Q Public License version 1.0. * See the file LICENSE.QPL distributed with CORE. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * File: extLong.cpp * Synopsis: * The class extLong is basically a wrapper around the machine * type long. It is an important class to provide several * additional facilities to detect overflows and undefined values. * Future development includes extensions to level arithmetic * (i.e., if a number overflows level i, we will go to level i+1). * Level i representation of a number n is just i iterations * of log_2 applied to n. * * Written by * Chee Yap * Chen Li * Zilin Du * Sylvain Pion * * WWW URL: http://cs.nyu.edu/exact/ * Email: exact@cs.nyu.edu * * $Source: /home/exact/cvsroot/exact/corelib/src/extLong.cpp,v $ * $Revision: 1.17 $ $Date: 2004/07/21 14:59:40 $ ***************************************************************************/ #include CORE_BEGIN_NAMESPACE const extLong& extLong::getNaNLong() { static extLong NaNLong(true); return NaNLong; } const extLong& extLong::getPosInfty() { static extLong posInfty(EXTLONG_MAX); return posInfty; } const extLong& extLong::getNegInfty() { static extLong negInfty(EXTLONG_MIN); return negInfty; } void extLong::add(extLong& z, long x, long y) { if (x > 0 && y > 0 && x >= EXTLONG_MAX - y) { z.val = EXTLONG_MAX; z.flag = 1; } else if (x < 0 && y < 0 && x <= EXTLONG_MIN - y) { z.val = EXTLONG_MIN; z.flag = -1; } else { z.val = x + y; z.flag = 0; } } // arithmetic and assignment operators extLong& extLong::operator+= (const extLong& y) { if (flag == 2 || y.flag == 2 || (flag * y.flag < 0)) { #ifdef CORE_DEBUG if (flag * y.flag < 0) //want a message at the first creation of NaN core_error("extLong NaN Error in addition.", __FILE__, __LINE__, false); #endif *this = CORE_NaNLong; } else if (flag == 1 || y.flag == 1) { // one of them is +Inf *this = CORE_posInfty; } else if (flag == -1 || y.flag == -1) { // one of them is -Inf *this = CORE_negInfty; } else { // x and y are normal now add(*this, val, y.val); } return *this; } extLong& extLong::operator-= (const extLong& y) { if (flag == 2 || y.flag == 2 || (flag * y.flag > 0)) { #ifdef CORE_DEBUG if (flag * y.flag > 0) //want a message at the first creation of NaN core_error("extLong NaN Error in subtraction.", __FILE__, __LINE__, false); #endif *this = CORE_NaNLong; } else if (flag == 1 || y.flag == -1) { *this = CORE_posInfty; } else if (flag == -1 || y.flag == 1) { *this = CORE_negInfty; } else { add(*this, val, -y.val); } return *this; } extLong& extLong::operator*= (const extLong& y) { if (flag == 2 || y.flag == 2) { *this = CORE_NaNLong; } else if ((flag != 0) || (y.flag != 0)) { if (sign() * y.sign() > 0) *this = CORE_posInfty; else *this = CORE_negInfty; } else { // flag == 0 and y.flag == 0 double d = double(val) * double(y.val); long p = val * y.val; if (fabs(d - p) <= fabs(d) * relEps) { val = p; flag = 0; } else if (d > EXTLONG_MAX) { *this = CORE_posInfty; } else if (d < EXTLONG_MIN) { *this = CORE_negInfty; } else { #ifdef CORE_DEBUG core_error("extLong NaN Error in multiplication.",__FILE__,__LINE__,false); #endif *this = CORE_NaNLong; } } return *this; } extLong& extLong::operator/= (const extLong& y) { if (flag==2 || y.flag==2 || ((flag != 0) && (y.flag != 0)) || (y.val == 0)) { #ifdef CORE_DEBUG if (y.val == 0) core_error("extLong NaN Error, Divide by Zero.", __FILE__, __LINE__, false); else if ((flag !=0) && (y.flag !=0)) core_error("extLong NaN Error, +/-Inf/Inf.", __FILE__, __LINE__, false); #endif *this = CORE_NaNLong; } else if ((flag != 0) || (y.flag != 0)) { // y.flag == 0 now and y != 0 if (sign() * y.sign() > 0) *this = CORE_posInfty; else *this = CORE_negInfty; } else { // flag == 0 and y.flag == 0 val /= y.val; // no overflow in divisions flag = 0; } return *this; } // unary minus extLong extLong::operator- () const { if (flag == 0) return extLong(-val); else if (flag == 1) return CORE_negInfty; else if (flag == -1) return CORE_posInfty; else // NaN return CORE_NaNLong; } // sign // You should check "flag" before calling this, otherwise // you cannot interprete the returned value! int extLong::sign() const { if (flag == 2) core_error("NaN Sign can not be determined!", __FILE__, __LINE__, false); return ((val == 0) ? 0 : ((val > 0) ? 1 : -1)); } // stream operators std::ostream& operator<< (std::ostream& o, const extLong& x) { if (x.flag == 1) o << " infty "; else if (x.flag == - 1) o << " tiny "; else if (x.flag == 2) o << " NaN "; else o << x.val; return o; } CORE_END_NAMESPACE core++-1.7/tmp/0040755000175000001440000000000010147210064012567 5ustar joachimuserscore++-1.7/tmp/README0100644000175000001440000000150710145436630013456 0ustar joachimusersREADME file in ${CORE_DIR}/tmp ============================== This tmp directory stores the files containing diagnostics outputs from the compilation and testing of CORE (i.e., "make first", "make second", etc). Many of our programs are self-validating: if its computation or output is CORRECT, it will print "CORRECT"; if incorrect, it could prints either "INCORRECT" or "ERROR". We print "INCORRECT" if this wrong answer is expected (e.g., we run a program at Level 1 accuracy). But "ERROR" is more serious. In short: grep these diagnostic files for "ERROR" to see if CORE has any errors; for "Error" to see if there are compiler errors; for "cannot" to see if there are missing files. Also, Core may create and write messages in the file "Core_Diagnostics" in the individual directories where the program is run. core++-1.7/win32/0040755000175000001440000000000010147210064012731 5ustar joachimuserscore++-1.7/win32/vc6/0040755000175000001440000000000010147210064013427 5ustar joachimuserscore++-1.7/win32/vc6/core.dsp0100644000175000001440000001146110017704502015070 0ustar joachimusers# Microsoft Developer Studio Project File - Name="core" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=core - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "core.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "core.mak" CFG="core - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "core - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "core - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "core - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I "..\..\inc" /I "..\gmp" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD BASE RSC /l 0x804 /d "NDEBUG" # ADD RSC /l 0x804 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\lib\core.lib" !ELSEIF "$(CFG)" == "core - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\inc" /I "..\gmp" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD BASE RSC /l 0x804 /d "_DEBUG" # ADD RSC /l 0x804 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\lib\coreDebug.lib" !ENDIF # Begin Target # Name "core - Win32 Release" # Name "core - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\src\BigFloat.cpp # End Source File # Begin Source File SOURCE=..\..\src\CoreAux.cpp # End Source File # Begin Source File SOURCE=..\..\src\CoreDefs.cpp # End Source File # Begin Source File SOURCE=..\..\src\CoreIO.cpp # End Source File # Begin Source File SOURCE=..\..\src\Expr.cpp # End Source File # Begin Source File SOURCE=..\..\src\extLong.cpp # End Source File # Begin Source File SOURCE=..\..\src\GmpIO.cpp # End Source File # Begin Source File SOURCE=..\..\src\Real.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=..\..\inc\CORE\BigFloat.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\BigFloatRep.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\BigInt.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\BigRat.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\Config.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\CoreAux.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\CoreDefs.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\Expr.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\ExprRep.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\extLong.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\Filter.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\Gmp.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\Impl.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\MemoryPool.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\poly\Poly.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\Real.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\RealRep.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\RefCount.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\poly\Sturm.h # End Source File # Begin Source File SOURCE=..\..\inc\CORE\Timer.h # End Source File # End Group # End Target # End Project core++-1.7/win32/vc6/core.dsw0100644000175000001440000000102307576330653015112 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "core"=.\core.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/vc6/core.mak0100644000175000001440000001145510017704502015055 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on core.dsp !IF "$(CFG)" == "" CFG=core - Win32 Debug !MESSAGE No configuration specified. Defaulting to core - Win32 Debug. !ENDIF !IF "$(CFG)" != "core - Win32 Release" && "$(CFG)" != "core - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "core.mak" CFG="core - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "core - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "core - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "core - Win32 Release" OUTDIR=.\Release INTDIR=.\Release ALL : "..\lib\core.lib" CLEAN : -@erase "$(INTDIR)\BigFloat.obj" -@erase "$(INTDIR)\CoreAux.obj" -@erase "$(INTDIR)\CoreDefs.obj" -@erase "$(INTDIR)\CoreIO.obj" -@erase "$(INTDIR)\Expr.obj" -@erase "$(INTDIR)\extLong.obj" -@erase "$(INTDIR)\GmpIO.obj" -@erase "$(INTDIR)\Real.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "..\lib\core.lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\..\inc" /I "..\gmp" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\core.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\core.bsc" BSC32_SBRS= \ LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"..\lib\core.lib" LIB32_OBJS= \ "$(INTDIR)\Real.obj" \ "$(INTDIR)\CoreAux.obj" \ "$(INTDIR)\CoreDefs.obj" \ "$(INTDIR)\CoreIO.obj" \ "$(INTDIR)\Expr.obj" \ "$(INTDIR)\extLong.obj" \ "$(INTDIR)\GmpIO.obj" \ "$(INTDIR)\BigFloat.obj" "..\lib\core.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << !ELSEIF "$(CFG)" == "core - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug ALL : "..\lib\coreDebug.lib" CLEAN : -@erase "$(INTDIR)\BigFloat.obj" -@erase "$(INTDIR)\CoreAux.obj" -@erase "$(INTDIR)\CoreDefs.obj" -@erase "$(INTDIR)\CoreIO.obj" -@erase "$(INTDIR)\Expr.obj" -@erase "$(INTDIR)\extLong.obj" -@erase "$(INTDIR)\GmpIO.obj" -@erase "$(INTDIR)\Real.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "..\lib\coreDebug.lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "..\..\inc" /I "..\gmp" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\core.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\core.bsc" BSC32_SBRS= \ LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"..\lib\coreDebug.lib" LIB32_OBJS= \ "$(INTDIR)\Real.obj" \ "$(INTDIR)\CoreAux.obj" \ "$(INTDIR)\CoreDefs.obj" \ "$(INTDIR)\CoreIO.obj" \ "$(INTDIR)\Expr.obj" \ "$(INTDIR)\extLong.obj" \ "$(INTDIR)\GmpIO.obj" \ "$(INTDIR)\BigFloat.obj" "..\lib\coreDebug.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("core.dep") !INCLUDE "core.dep" !ELSE !MESSAGE Warning: cannot find "core.dep" !ENDIF !ENDIF !IF "$(CFG)" == "core - Win32 Release" || "$(CFG)" == "core - Win32 Debug" SOURCE=..\..\src\BigFloat.cpp "$(INTDIR)\BigFloat.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\src\CoreAux.cpp "$(INTDIR)\CoreAux.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\src\CoreDefs.cpp "$(INTDIR)\CoreDefs.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\src\CoreIO.cpp "$(INTDIR)\CoreIO.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\src\Expr.cpp "$(INTDIR)\Expr.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\src\extLong.cpp "$(INTDIR)\extLong.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\src\GmpIO.cpp "$(INTDIR)\GmpIO.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\src\Real.cpp "$(INTDIR)\Real.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/vc6/corex.dsp0100644000175000001440000001260610017715254015270 0ustar joachimusers# Microsoft Developer Studio Project File - Name="corex" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=corex - Win32 Debug Level3 !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "corex.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "corex.mak" CFG="corex - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "corex - Win32 Debug Level1" (based on "Win32 (x86) Static Library") !MESSAGE "corex - Win32 Release Level1" (based on "Win32 (x86) Static Library") !MESSAGE "corex - Win32 Debug Level3" (based on "Win32 (x86) Static Library") !MESSAGE "corex - Win32 Release Level3" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "corex - Win32 Debug Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "corex___Win32_Debug_Level1" # PROP BASE Intermediate_Dir "corex___Win32_Debug_Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level1" # PROP Intermediate_Dir "Debug_Level1" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GR /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D CORE_LEVEL=1 /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\inc" /I "..\gmp" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D CORE_LEVEL=1 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo /out:"..\lib\corexDebug_level1.lib" # ADD LIB32 /nologo /out:"..\lib\corexDebug_level1.lib" !ELSEIF "$(CFG)" == "corex - Win32 Release Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "corex___Win32_Release_Level10" # PROP BASE Intermediate_Dir "corex___Win32_Release_Level10" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level1" # PROP Intermediate_Dir "Release_Level1" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GR /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D CORE_LEVEL=1 /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\inc" /I "..\gmp" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D CORE_LEVEL=1 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo /out:"..\lib\corex_level1.lib" # ADD LIB32 /nologo /out:"..\lib\corex_level1.lib" !ELSEIF "$(CFG)" == "corex - Win32 Debug Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "corex___Win32_Debug_Level3" # PROP BASE Intermediate_Dir "corex___Win32_Debug_Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level3" # PROP Intermediate_Dir "Debug_Level3" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GR /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D CORE_LEVEL=1 /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\inc" /I "..\gmp" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D CORE_LEVEL=3 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo /out:"..\lib\corexDebug_level1.lib" # ADD LIB32 /nologo /out:"..\lib\corexDebug_level3.lib" !ELSEIF "$(CFG)" == "corex - Win32 Release Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "corex___Win32_Release_Level3" # PROP BASE Intermediate_Dir "corex___Win32_Release_Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level3" # PROP Intermediate_Dir "Release_Level3" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GR /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D CORE_LEVEL=1 /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\inc" /I "..\gmp" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D CORE_LEVEL=3 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo /out:"..\lib\corex_level1.lib" # ADD LIB32 /nologo /out:"..\lib\corex_level3.lib" !ENDIF # Begin Target # Name "corex - Win32 Debug Level1" # Name "corex - Win32 Release Level1" # Name "corex - Win32 Debug Level3" # Name "corex - Win32 Release Level3" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\ext\geometry2d.cpp # End Source File # Begin Source File SOURCE=..\..\ext\geometry3d.cpp # End Source File # Begin Source File SOURCE=..\..\ext\linearAlgebra.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # End Target # End Project core++-1.7/win32/vc6/corex.dsw0100644000175000001440000000102507437361201015271 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "corex"=.\corex.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/vc6/corex.mak0100644000175000001440000001450410017715254015251 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on corex.dsp !IF "$(CFG)" == "" CFG=corex - Win32 Debug Level3 !MESSAGE No configuration specified. Defaulting to corex - Win32 Debug Level3. !ENDIF !IF "$(CFG)" != "corex - Win32 Debug Level1" && "$(CFG)" != "corex - Win32 Release Level1" && "$(CFG)" != "corex - Win32 Debug Level3" && "$(CFG)" != "corex - Win32 Release Level3" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "corex.mak" CFG="corex - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "corex - Win32 Debug Level1" (based on "Win32 (x86) Static Library") !MESSAGE "corex - Win32 Release Level1" (based on "Win32 (x86) Static Library") !MESSAGE "corex - Win32 Debug Level3" (based on "Win32 (x86) Static Library") !MESSAGE "corex - Win32 Release Level3" (based on "Win32 (x86) Static Library") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "corex - Win32 Debug Level1" OUTDIR=.\Debug_Level1 INTDIR=.\Debug_Level1 ALL : "..\lib\corexDebug_level1.lib" CLEAN : -@erase "$(INTDIR)\geometry2d.obj" -@erase "$(INTDIR)\geometry3d.obj" -@erase "$(INTDIR)\linearAlgebra.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "..\lib\corexDebug_level1.lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\inc" /I "..\gmp" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D CORE_LEVEL=1 /Fp"$(INTDIR)\corex.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\corex.bsc" BSC32_SBRS= \ LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"..\lib\corexDebug_level1.lib" LIB32_OBJS= \ "$(INTDIR)\geometry2d.obj" \ "$(INTDIR)\geometry3d.obj" \ "$(INTDIR)\linearAlgebra.obj" "..\lib\corexDebug_level1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << !ELSEIF "$(CFG)" == "corex - Win32 Release Level1" OUTDIR=.\Release_Level1 INTDIR=.\Release_Level1 ALL : "..\lib\corex_level1.lib" CLEAN : -@erase "$(INTDIR)\geometry2d.obj" -@erase "$(INTDIR)\geometry3d.obj" -@erase "$(INTDIR)\linearAlgebra.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "..\lib\corex_level1.lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\inc" /I "..\gmp" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D CORE_LEVEL=1 /Fp"$(INTDIR)\corex.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\corex.bsc" BSC32_SBRS= \ LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"..\lib\corex_level1.lib" LIB32_OBJS= \ "$(INTDIR)\geometry2d.obj" \ "$(INTDIR)\geometry3d.obj" \ "$(INTDIR)\linearAlgebra.obj" "..\lib\corex_level1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << !ELSEIF "$(CFG)" == "corex - Win32 Debug Level3" OUTDIR=.\Debug_Level3 INTDIR=.\Debug_Level3 ALL : "..\lib\corexDebug_level3.lib" CLEAN : -@erase "$(INTDIR)\geometry2d.obj" -@erase "$(INTDIR)\geometry3d.obj" -@erase "$(INTDIR)\linearAlgebra.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "..\lib\corexDebug_level3.lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\inc" /I "..\gmp" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D CORE_LEVEL=3 /Fp"$(INTDIR)\corex.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\corex.bsc" BSC32_SBRS= \ LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"..\lib\corexDebug_level3.lib" LIB32_OBJS= \ "$(INTDIR)\geometry2d.obj" \ "$(INTDIR)\geometry3d.obj" \ "$(INTDIR)\linearAlgebra.obj" "..\lib\corexDebug_level3.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << !ELSEIF "$(CFG)" == "corex - Win32 Release Level3" OUTDIR=.\Release_Level3 INTDIR=.\Release_Level3 ALL : "..\lib\corex_level3.lib" CLEAN : -@erase "$(INTDIR)\geometry2d.obj" -@erase "$(INTDIR)\geometry3d.obj" -@erase "$(INTDIR)\linearAlgebra.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "..\lib\corex_level3.lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\inc" /I "..\gmp" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D CORE_LEVEL=3 /Fp"$(INTDIR)\corex.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\corex.bsc" BSC32_SBRS= \ LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"..\lib\corex_level3.lib" LIB32_OBJS= \ "$(INTDIR)\geometry2d.obj" \ "$(INTDIR)\geometry3d.obj" \ "$(INTDIR)\linearAlgebra.obj" "..\lib\corex_level3.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("corex.dep") !INCLUDE "corex.dep" !ELSE !MESSAGE Warning: cannot find "corex.dep" !ENDIF !ENDIF !IF "$(CFG)" == "corex - Win32 Debug Level1" || "$(CFG)" == "corex - Win32 Release Level1" || "$(CFG)" == "corex - Win32 Debug Level3" || "$(CFG)" == "corex - Win32 Release Level3" SOURCE=..\..\ext\geometry2d.cpp "$(INTDIR)\geometry2d.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\ext\geometry3d.cpp "$(INTDIR)\geometry3d.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\ext\linearAlgebra.cpp "$(INTDIR)\linearAlgebra.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/Makefile0100644000175000001440000004633607447470461014424 0ustar joachimusers#Makefile for Core Library under win32 # Change VAR to build a $(VAR) or Debug version VAR = Release #VAR = Debug # Set proper name for target library !IF "$(VAR)" == "Debug" EXT = Debug !ELSE EXT = !ENDIF TARGETS = "lib\gmp$(EXT).lib" \ "lib\core$(EXT).lib" \ "lib\corex$(EXT)_level1.lib" \ "lib\corex$(EXT)_level3.lib" PROGS = "progs\bareiss\$(VAR)\bareiss.exe" \ "progs\chull\$(VAR)_Level1\chull.exe" \ "progs\chull\$(VAR)_Level1\chull4.exe" \ "progs\chull\$(VAR)_Level3\chull.exe" \ "progs\chull\$(VAR)_Level3\chull4.exe" \ "progs\chullGraham\$(VAR)\graham.exe" \ "progs\chullGraham\$(VAR)\graham4.exe" \ "progs\compare\$(VAR)\compare.exe" \ "progs\delaunay\$(VAR)\dt2.exe" \ "progs\delaunay\$(VAR)\dt4.exe" \ "progs\fileIO\$(VAR)\fileIO.exe" \ "progs\fileIO\$(VAR)\IOSpeed.exe" \ "progs\fortune\pred\$(VAR)\pred.exe" \ "progs\fortune\pred\$(VAR)\pred2.exe" \ "progs\fortune\vor\$(VAR)\voronoi.exe" \ "progs\fortune\vor\$(VAR)\voronoi_lattice.exe" \ "progs\gaussian\$(VAR)_Level3\gaussian.exe" \ "progs\gaussian\$(VAR)_Level3\gaussianX.exe" \ "progs\gaussian\$(VAR)_Level1\gaussian.exe" \ "progs\gaussian\$(VAR)_Level1\gaussianX.exe" \ "progs\generic\$(VAR)\sample.exe" \ "progs\geom2d\$(VAR)\testPoint.exe" \ "progs\geom2d\$(VAR)\testLine.exe" \ "progs\geom2d\$(VAR)\convexHull.exe" \ "progs\geom2d\$(VAR)\pointOnCircle.exe" \ "progs\geom3d\$(VAR)_Level3\line2d.exe" \ "progs\geom3d\$(VAR)_Level3\line3d.exe" \ "progs\geom3d\$(VAR)_Level1\line2d.exe" \ "progs\geom3d\$(VAR)_Level1\line3d.exe" \ "progs\heron\$(VAR)\heron.exe" \ "progs\ieee\$(VAR)\ieee.exe" \ "progs\kahan\$(VAR)\kahan.exe" \ "progs\nestedSqrt\$(VAR)\nestedSqrt.exe" \ "progs\pentagon\$(VAR)_Level3\pentagon.exe" \ "progs\pentagon\$(VAR)_Level1\pentagon.exe" \ "progs\pi\$(VAR)\pi.exe" \ "progs\pi\$(VAR)\pi2.exe" \ "progs\pi\$(VAR)\pi3.exe" \ "progs\pi\$(VAR)\brent.exe" \ "progs\prover\$(VAR)_Level1\prover.exe" \ "progs\prover\$(VAR)_Level3\prover.exe" \ "progs\sumOfSqrts\$(VAR)\graham.exe" \ "progs\sumOfSqrts\$(VAR)\orourke.exe" \ "progs\testFilter\$(VAR)\createMatrices.exe" \ "progs\testFilter\$(VAR)\testFilter.exe" \ "progs\testFilter\$(VAR)\timeFilter.exe" \ "progs\testFilter\$(VAR)\timeFilter1.exe" \ "progs\testIdent\$(VAR)\testIdent.exe" \ "progs\testIO\$(VAR)\testIO.exe" all: $(TARGETS) $(PROGS) test: all "progs\bareiss\$(VAR)\bareiss.exe" "progs\chull\$(VAR)_Level3\chull.exe < ..\progs\chull\inputs\points > ..\progs\chull\outputs\point.3.ps" "progs\chull\$(VAR)_Level1\chull.exe < ..\progs\chull\inputs\points > ..\progs\chull\outputs\point.1.ps" "progs\chullGraham\$(VAR)\graham.exe < ..\progs\chullGraham\inputs\i10 > ..\progs\chullGraham\outputs\i10.ps" "progs\chullGraham\$(VAR)\graham.exe -l < ..\progs\chullGraham\inputs\i10 > ..\progs\chullGraham\outputs\i10.leda" "progs\chullGraham\$(VAR)\graham.exe < ..\progs\chullGraham\inputs\i19 > ..\progs\chullGraham\outputs\i19.ps" "progs\chullGraham\$(VAR)\graham4.exe < ..\progs\chullGraham\inputs\i19 > ..\progs\chullGraham\outputs\i19-graham4.ps" "progs\compare\$(VAR)\compare.exe 10 1" "progs\delaunay\$(VAR)\dt2.exe < ..\progs\delaunay\inputs\i10 > ..\progs\delaunay\outputs\i10.ps" "progs\delaunay\$(VAR)\dt2.exe < ..\progs\delaunay\inputs\circ12 > ..\progs\delaunay\outputs\circ12.ps" "progs\delaunay\$(VAR)\dt2.exe -l < ..\progs\delaunay\inputs\i10 > ..\progs\delaunay\outputs\i10.leda" "progs\delaunay\$(VAR)\dt4.exe < ..\progs\delaunay\inputs\i10 > ..\progs\delaunay\outputs\i10-dt4.ps" "progs\delaunay\$(VAR)\dt4.exe < ..\progs\delaunay\inputs\circ12 > ..\progs\delaunay\outputs\circ12-dt4.ps" "progs\fileIO\$(VAR)\fileIO.exe" "progs\fileIO\$(VAR)\IOSpeed.exe" "progs\fortune\pred\$(VAR)\pred.exe" "progs\fortune\pred\$(VAR)\pred2.exe" "progs\fortune\vor\$(VAR)\voronoi.exe < ..\progs\fortune\vor\inputs\lattice9 > ..\progs\fortune\vor\outputs\lattice9.ps" "progs\fortune\vor\$(VAR)\voronoi.exe < ..\progs\fortune\vor\inputs\points100 > ..\progs\fortune\vor\outputs\points100.ps" "progs\gaussian\$(VAR)_Level3\gaussian.exe ..\progs\gaussian\inputs\MatHilbert6 3" "progs\gaussian\$(VAR)_Level1\gaussian.exe ..\progs\gaussian\inputs\MatHilbert6 3" "progs\gaussian\$(VAR)_Level3\gaussian.exe ..\progs\gaussian\inputs\MatZero4 3" "progs\gaussian\$(VAR)_Level1\gaussian.exe ..\progs\gaussian\inputs\MatZero4 3" "progs\generic\$(VAR)\sample.exe" "progs\geom2d\$(VAR)\testPoint.exe" "progs\geom2d\$(VAR)\testLine.exe" "progs\geom2d\$(VAR)\convexHull.exe" "progs\geom2d\$(VAR)\pointOnCircle.exe" "progs\geom3d\$(VAR)_Level3\line2d.exe" "progs\geom3d\$(VAR)_Level3\line3d.exe" "progs\geom3d\$(VAR)_Level1\line2d.exe" "progs\geom3d\$(VAR)_Level1\line3d.exe" "progs\heron\$(VAR)\heron.exe" "progs\ieee\$(VAR)\ieee.exe" "progs\kahan\$(VAR)\kahan.exe" "progs\nestedSqrt\$(VAR)\nestedSqrt.exe" # "progs\pentagon\$(VAR)_Level3\pentagon.exe 2000 5" "progs\pi\$(VAR)\pi.exe 9000 0 0" "progs\prover\$(VAR)_Level3\prover.exe ..\progs\prover\inputs\pappus 10" "progs\prover\$(VAR)_Level1\prover.exe ..\progs\prover\inputs\pappus 10" "progs\sumOfSqrts\$(VAR)\graham.exe" "progs\sumOfSqrts\$(VAR)\orourke.exe" "progs\testFilter\$(VAR)\createMatrices.exe ..\progs\testFilter\inputs\1000x3x10matrices 1000 3 10" "progs\testFilter\$(VAR)\testFilter.exe ..\progs\testFilter\inputs\1000x3x10matrices" "progs\testIdent\$(VAR)\testIdent.exe" "progs\testIO\$(VAR)\testIO.exe" gmp: "lib\gmp$(EXT).lib" "lib\gmp$(EXT).lib": cd gmp NMAKE /f "gmp.mak" CFG="gmp - Win32 $(VAR)" cd .. "lib\core$(EXT).lib": cd corelib NMAKE /f "core.mak" CFG="core - Win32 $(VAR)" cd .. "lib\corex$(EXT)_level1.lib": cd ext NMAKE /f "corex.mak" CFG="corex - Win32 $(VAR) Level1" cd .. "lib\corex$(EXT)_level3.lib": cd ext NMAKE /f "corex.mak" CFG="corex - Win32 $(VAR) Level3" cd .. "progs\bareiss\$(VAR)\bareiss.exe": cd progs\bareiss NMAKE /f "bareiss.mak" CFG="bareiss - Win32 $(VAR)" cd ..\.. "progs\chull\$(VAR)_Level1\chull.exe": cd progs\chull NMAKE /f "chull.mak" CFG="chull - Win32 $(VAR) Level1" cd ..\.. "progs\chull\$(VAR)_Level1\chull4.exe": cd progs\chull NMAKE /f "chull4.mak" CFG="chull4 - Win32 $(VAR) Level1" cd ..\.. "progs\chull\$(VAR)_Level3\chull.exe": cd progs\chull NMAKE /f "chull.mak" CFG="chull - Win32 $(VAR) Level3" cd ..\.. "progs\chull\$(VAR)_Level3\chull4.exe": cd progs\chull NMAKE /f "chull4.mak" CFG="chull4 - Win32 $(VAR) Level3" cd ..\.. "progs\chullGraham\$(VAR)\graham.exe": cd progs\chullGraham NMAKE /f "graham.mak" CFG="graham - Win32 $(VAR)" cd ..\.. "progs\chullGraham\$(VAR)\graham4.exe": cd progs\chullGraham NMAKE /f "graham4.mak" CFG="graham4 - Win32 $(VAR)" cd ..\.. "progs\compare\$(VAR)\compare.exe": cd progs\compare NMAKE /f "compare.mak" CFG="compare - Win32 $(VAR)" cd ..\.. "progs\delaunay\$(VAR)\dt2.exe": cd progs\delaunay NMAKE /f "dt2.mak" CFG="dt2 - Win32 $(VAR)" cd ..\.. "progs\delaunay\$(VAR)\dt4.exe": cd progs\delaunay NMAKE /f "dt4.mak" CFG="dt4 - Win32 $(VAR)" cd ..\.. "progs\fileIO\$(VAR)\fileIO.exe": cd progs\fileIO NMAKE /f "fileIO.mak" CFG="fileIO - Win32 $(VAR)" cd ..\.. "progs\fileIO\$(VAR)\IOspeed.exe": cd progs\fileIO NMAKE /f "IOspeed.mak" CFG="IOspeed - Win32 $(VAR)" cd ..\.. "progs\fortune\pred\$(VAR)\pred.exe": cd progs\fortune\pred NMAKE /f "pred.mak" CFG="pred - Win32 $(VAR)" cd ..\..\.. "progs\fortune\pred\$(VAR)\pred2.exe": cd progs\fortune\pred NMAKE /f "pred2.mak" CFG="pred2 - Win32 $(VAR)" cd ..\..\.. "progs\fortune\vor\$(VAR)\voronoi.exe": cd progs\fortune\vor NMAKE /f "voronoi.mak" CFG="voronoi - Win32 $(VAR)" cd ..\..\.. "progs\fortune\vor\$(VAR)\voronoi_lattice.exe": cd progs\fortune\vor NMAKE /f "voronoi_lattice.mak" CFG="voronoi_lattice - Win32 $(VAR)" cd ..\..\.. "progs\gaussian\$(VAR)_Level3\gaussian.exe": cd progs\gaussian NMAKE /f "gaussian.mak" CFG="gaussian - Win32 $(VAR) Level3" cd ..\.. "progs\gaussian\$(VAR)_Level3\gaussianX.exe": cd progs\gaussian NMAKE /f "gaussianX.mak" CFG="gaussianX - Win32 $(VAR) Level3" cd ..\.. "progs\gaussian\$(VAR)_Level1\gaussian.exe": cd progs\gaussian NMAKE /f "gaussian.mak" CFG="gaussian - Win32 $(VAR) Level1" cd ..\.. "progs\gaussian\$(VAR)_Level1\gaussianX.exe": cd progs\gaussian NMAKE /f "gaussianX.mak" CFG="gaussianX - Win32 $(VAR) Level1" cd ..\.. "progs\generic\$(VAR)\sample.exe": cd progs\generic NMAKE /f "sample.mak" CFG="sample - Win32 $(VAR)" cd ..\.. "progs\geom2d\$(VAR)\testPoint.exe": cd progs\geom2d NMAKE /f "testPoint.mak" CFG="testPoint - Win32 $(VAR)" cd ..\.. "progs\geom2d\$(VAR)\testLine.exe": cd progs\geom2d NMAKE /f "testLine.mak" CFG="testLine - Win32 $(VAR)" cd ..\.. "progs\geom2d\$(VAR)\convexHull.exe": cd progs\geom2d NMAKE /f "convexHull.mak" CFG="convexHull - Win32 $(VAR)" cd ..\.. "progs\geom2d\$(VAR)\pointOnCircle.exe": cd progs\geom2d NMAKE /f "pointOnCircle.mak" CFG="pointOnCircle - Win32 $(VAR)" cd ..\.. "progs\geom3d\$(VAR)_Level3\line2d.exe": cd progs\geom3d NMAKE /f "line2d.mak" CFG="line2d - Win32 $(VAR) Level3" cd ..\.. "progs\geom3d\$(VAR)_Level3\line3d.exe": cd progs\geom3d NMAKE /f "line3d.mak" CFG="line3d - Win32 $(VAR) Level3" cd ..\.. "progs\geom3d\$(VAR)_Level1\line2d.exe": cd progs\geom3d NMAKE /f "line2d.mak" CFG="line2d - Win32 $(VAR) Level1" cd ..\.. "progs\geom3d\$(VAR)_Level1\line3d.exe": cd progs\geom3d NMAKE /f "line3d.mak" CFG="line3d - Win32 $(VAR) Level1" cd ..\.. "progs\heron\$(VAR)\heron.exe": cd progs\heron NMAKE /f "heron.mak" CFG="heron - Win32 $(VAR)" cd ..\.. "progs\ieee\$(VAR)\ieee.exe": cd progs\ieee NMAKE /f "ieee.mak" CFG="ieee - Win32 $(VAR)" cd ..\.. "progs\kahan\$(VAR)\kahan.exe": cd progs\kahan NMAKE /f "kahan.mak" CFG="kahan - Win32 $(VAR)" cd ..\.. "progs\nestedSqrt\$(VAR)\nestedSqrt.exe": cd progs\nestedSqrt NMAKE /f "nestedSqrt.mak" CFG="nestedSqrt - Win32 $(VAR)" cd ..\.. "progs\pentagon\$(VAR)_Level3\pentagon.exe": cd progs\pentagon NMAKE /f "pentagon.mak" CFG="pentagon - Win32 $(VAR) Level3" cd ..\.. "progs\pentagon\$(VAR)_Level1\pentagon.exe": cd progs\pentagon NMAKE /f "pentagon.mak" CFG="pentagon - Win32 $(VAR) Level1" cd ..\.. "progs\pi\$(VAR)\pi.exe": cd progs\pi NMAKE /f "pi.mak" CFG="pi - Win32 $(VAR)" cd ..\.. "progs\pi\$(VAR)\pi2.exe": cd progs\pi NMAKE /f "pi2.mak" CFG="pi2 - Win32 $(VAR)" cd ..\.. "progs\pi\$(VAR)\pi3.exe": cd progs\pi NMAKE /f "pi3.mak" CFG="pi3 - Win32 $(VAR)" cd ..\.. "progs\pi\$(VAR)\brent.exe": cd progs\pi NMAKE /f "brent.mak" CFG="brent - Win32 $(VAR)" cd ..\.. "progs\prover\$(VAR)_Level1\prover.exe": cd progs\prover NMAKE /f "prover.mak" CFG="prover - Win32 $(VAR) Level1" cd ..\.. "progs\prover\$(VAR)_Level3\prover.exe": cd progs\prover NMAKE /f "prover.mak" CFG="prover - Win32 $(VAR) Level3" cd ..\.. "progs\sumOfSqrts\$(VAR)\graham.exe": cd progs\sumOfSqrts NMAKE /f "graham.mak" CFG="graham - Win32 $(VAR)" cd ..\.. "progs\sumOfSqrts\$(VAR)\orourke.exe": cd progs\sumOfSqrts NMAKE /f "orourke.mak" CFG="orourke - Win32 $(VAR)" cd ..\.. "progs\testFilter\$(VAR)\createMatrices.exe": cd progs\testFilter NMAKE /f "createMatrices.mak" CFG="createMatrices - Win32 $(VAR)" cd ..\.. "progs\testFilter\$(VAR)\testFilter.exe": cd progs\testFilter NMAKE /f "testFilter.mak" CFG="testFilter - Win32 $(VAR)" cd ..\.. "progs\testFilter\$(VAR)\timeFilter.exe": cd progs\testFilter NMAKE /f "timeFilter.mak" CFG="timeFilter - Win32 $(VAR)" cd ..\.. "progs\testFilter\$(VAR)\timeFilter1.exe": cd progs\testFilter NMAKE /f "timeFilter1.mak" CFG="timeFilter1 - Win32 $(VAR)" cd ..\.. "progs\testIdent\$(VAR)\testIdent.exe": cd progs\testIdent NMAKE /f "testIdent.mak" CFG="testIdent - Win32 $(VAR)" cd ..\.. "progs\testIO\$(VAR)\testIO.exe": cd progs\testIO NMAKE /f "testIO.mak" CFG="testIO - Win32 $(VAR)" cd ..\.. veryclean: clean cleangarbage cleangmp cd lib -@del *.lib *.dll *.exp cd .. cleangmp: cd gmp NMAKE /f "gmp.mak" CFG="gmp - Win32 $(VAR)" clean cd .. clean: cd corelib NMAKE /f "core.mak" CFG="core - Win32 $(VAR)" clean cd .. cd ext NMAKE /f "corex.mak" CFG="corex - Win32 $(VAR) Level1" clean NMAKE /f "corex.mak" CFG="corex - Win32 $(VAR) Level3" clean cd .. cd progs\bareiss NMAKE /f "bareiss.mak" CFG="bareiss - Win32 $(VAR)" clean cd ..\.. cd progs\chull NMAKE /f "chull.mak" CFG="chull - Win32 $(VAR) Level1" clean NMAKE /f "chull4.mak" CFG="chull4 - Win32 $(VAR) Level1" clean NMAKE /f "chull.mak" CFG="chull - Win32 $(VAR) Level3" clean NMAKE /f "chull4.mak" CFG="chull4 - Win32 $(VAR) Level3" clean cd ..\.. cd progs\chullGraham NMAKE /f "graham.mak" CFG="graham - Win32 $(VAR)" clean NMAKE /f "graham4.mak" CFG="graham4 - Win32 $(VAR)" clean cd ..\.. cd progs\compare NMAKE /f "compare.mak" CFG="compare - Win32 $(VAR)" clean cd ..\.. cd progs\delaunay NMAKE /f "dt2.mak" CFG="dt2 - Win32 $(VAR)" clean NMAKE /f "dt4.mak" CFG="dt4 - Win32 $(VAR)" clean cd ..\.. cd progs\fileIO NMAKE /f "fileIO.mak" CFG="fileIO - Win32 $(VAR)" clean NMAKE /f "IOspeed.mak" CFG="IOspeed - Win32 $(VAR)" clean cd ..\.. cd progs\fortune\pred NMAKE /f "pred.mak" CFG="pred - Win32 $(VAR)" clean NMAKE /f "pred2.mak" CFG="pred2 - Win32 $(VAR)" clean cd ..\..\.. cd progs\fortune\vor NMAKE /f "voronoi.mak" CFG="voronoi - Win32 $(VAR)" clean NMAKE /f "voronoi_lattice.mak" CFG="voronoi_lattice - Win32 $(VAR)" clean cd ..\..\.. cd progs\gaussian NMAKE /f "gaussian.mak" CFG="gaussian - Win32 $(VAR) Level3" clean NMAKE /f "gaussianX.mak" CFG="gaussianX - Win32 $(VAR) Level3" clean NMAKE /f "gaussian.mak" CFG="gaussian - Win32 $(VAR) Level1" clean NMAKE /f "gaussianX.mak" CFG="gaussianX - Win32 $(VAR) Level1" clean cd ..\.. cd progs\generic NMAKE /f "sample.mak" CFG="sample - Win32 $(VAR)" clean cd ..\.. cd progs\geom2d NMAKE /f "testPoint.mak" CFG="testPoint - Win32 $(VAR)" clean NMAKE /f "testLine.mak" CFG="testLine - Win32 $(VAR)" clean NMAKE /f "convexHull.mak" CFG="convexHull - Win32 $(VAR)" clean NMAKE /f "pointOnCircle.mak" CFG="pointOnCircle - Win32 $(VAR)" clean cd ..\.. cd progs\geom3d NMAKE /f "line2d.mak" CFG="line2d - Win32 $(VAR) Level3" clean NMAKE /f "line3d.mak" CFG="line3d - Win32 $(VAR) Level3" clean NMAKE /f "line2d.mak" CFG="line2d - Win32 $(VAR) Level1" clean NMAKE /f "line3d.mak" CFG="line3d - Win32 $(VAR) Level1" clean cd ..\.. cd progs\heron NMAKE /f "heron.mak" CFG="heron - Win32 $(VAR)" clean cd ..\.. cd progs\ieee NMAKE /f "ieee.mak" CFG="ieee - Win32 $(VAR)" clean cd ..\.. cd progs\kahan NMAKE /f "kahan.mak" CFG="kahan - Win32 $(VAR)" clean cd ..\.. cd progs\nestedSqrt NMAKE /f "nestedSqrt.mak" CFG="nestedSqrt - Win32 $(VAR)" clean cd ..\.. cd progs\pentagon NMAKE /f "pentagon.mak" CFG="pentagon - Win32 $(VAR) Level3" clean NMAKE /f "pentagon.mak" CFG="pentagon - Win32 $(VAR) Level1" clean cd ..\.. cd progs\pi NMAKE /f "pi.mak" CFG="pi - Win32 $(VAR)" clean NMAKE /f "pi2.mak" CFG="pi2 - Win32 $(VAR)" clean NMAKE /f "pi3.mak" CFG="pi3 - Win32 $(VAR)" clean NMAKE /f "brent.mak" CFG="brent - Win32 $(VAR)" clean cd ..\.. cd progs\prover NMAKE /f "prover.mak" CFG="prover - Win32 $(VAR) Level1" clean NMAKE /f "prover.mak" CFG="prover - Win32 $(VAR) Level3" clean cd ..\.. cd progs\sumOfSqrts NMAKE /f "graham.mak" CFG="graham - Win32 $(VAR)" clean NMAKE /f "orourke.mak" CFG="orourke - Win32 $(VAR)" clean cd ..\.. cd progs\testFilter NMAKE /f "createMatrices.mak" CFG="createMatrices - Win32 $(VAR)" clean NMAKE /f "testFilter.mak" CFG="testFilter - Win32 $(VAR)" clean NMAKE /f "timeFilter.mak" CFG="timeFilter - Win32 $(VAR)" clean NMAKE /f "timeFilter1.mak" CFG="timeFilter1 - Win32 $(VAR)" clean cd ..\.. cd progs\testIdent NMAKE /f "testIdent.mak" CFG="testIdent - Win32 $(VAR)" clean cd ..\.. cd progs\testIO NMAKE /f "testIO.mak" CFG="testIO - Win32 $(VAR)" clean cd ..\.. cleangarbage: cd corelib -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd .. cd ext -@del /Q "$(VAR)_Level1\*.*" "$(VAR)_Level3\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)_Level1" "$(VAR)_Level3" cd .. cd progs\bareiss -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\chull -@del /Q "$(VAR)_Level1\*.*" "$(VAR)_Level3\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)_Level1" "$(VAR)_Level3" cd ..\.. cd progs\chullGraham -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\compare -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\delaunay -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\fileIO -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\fortune -@del /Q "*.ncb" "*.opt" "*.positions" cd pred -@del /Q "$(VAR)\*.*" "*.dep" "*.plg" -@rmdir "$(VAR)" cd ..\vor -@del /Q "$(VAR)\*.*" "*.dep" "*.plg" -@rmdir "$(VAR)" cd ..\..\.. cd progs\gaussian -@del /Q "$(VAR)_Level1\*.*" "$(VAR)_Level3\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)_Level1" "$(VAR)_Level3" cd ..\.. cd progs\generic -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\geom2d -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\geom3d -@del /Q "$(VAR)_Level1\*.*" "$(VAR)_Level3\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)_Level1" "$(VAR)_Level3" cd ..\.. cd progs\heron -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\ieee -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\kahan -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\nestedSqrt -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\pentagon -@del /Q "$(VAR)_Level1\*.*" "$(VAR)_Level3\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)_Level1" "$(VAR)_Level3" cd ..\.. cd progs\pi -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\prover -@del /Q "$(VAR)_Level1\*.*" "$(VAR)_Level3\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)_Level1" "$(VAR)_Level3" cd ..\.. cd progs\sumOfSqrts -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\testFilter -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\testIdent -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. cd progs\testIO -@del /Q "$(VAR)\*.*" "*.dep" "*.ncb" "*.opt" "*.plg" "*.positions" -@rmdir "$(VAR)" cd ..\.. core++-1.7/win32/patches/0040755000175000001440000000000010147210064014360 5ustar joachimuserscore++-1.7/win32/patches/patch.bat0100644000175000001440000000235010017704502016145 0ustar joachimusers@echo off :BEGIN if "%1"=="" goto USAGE if "%1"=="3.1.1" goto FOUR if "%1"=="4.0.1" goto THREE if "%1"=="4.1-static" goto TWO if "%1"=="4.1-dynamic" goto ONE :USAGE echo Usage: echo patch {3.1.1, 4.0.1, 4.1-static, 4.1-dynamic} goto END :FOUR echo We are going to patch GMP 3.1.1 ... copy gmp-3.1.1\*.h ..\gmp\ copy gmp-3.1.1\*.c ..\gmp\ copy gmp-3.1.1\mpf\*.h ..\gmp\mpf\ copy gmp-3.1.1\mpf\*.c ..\gmp\mpf\ copy gmp-3.1.1\mpfr\*.c ..\gmp\mpfr\ copy gmp-3.1.1\mpn\generic\*.c ..\gmp\mpn\generic\ copy gmp-3.1.1\mpz\*.h ..\gmp\mpz\ copy gmp-3.1.1\mpz\*.c ..\gmp\mpz\ copy gmp-3.1.1\gmp.dsp ..\gmp\ copy gmp-3.1.1\gmp.dsw ..\gmp\ copy gmp-3.1.1\gmp.mak ..\gmp\ goto END :THREE echo We are going to patch GMP 4.0.1 ... copy ..\gmp\mpn\generic\aors_n.c ..\gmp\mpn\generic\add_n.c copy ..\gmp\mpn\generic\aors_n.c ..\gmp\mpn\generic\sub_n.c copy ..\gmp\mpn\generic\aorsmul_1.c ..\gmp\mpn\generic\addmul_1.c copy ..\gmp\mpn\generic\aorsmul_1.c ..\gmp\mpn\generic\submul_1.c copy gmp-4.0.1\*.* ..\gmp\ goto END :TWO echo We are going to patch GMP 4.1 (static) ... copy gmp-4.1-static\*.* ..\gmp\ goto END :ONE echo We are going to patch GMP 4.1 (dynamic) ... copy gmp-4.1-dynamic\*.* ..\gmp\ goto END :END core++-1.7/win32/patches/gmp-3.1.1/0040755000175000001440000000000010147210064015601 5ustar joachimuserscore++-1.7/win32/patches/gmp-3.1.1/mpf/0040755000175000001440000000000010147210064016363 5ustar joachimuserscore++-1.7/win32/patches/gmp-3.1.1/mpf/ceil.c0100644000175000001440000000202607437361201017450 0ustar joachimusers/* mpf_trunc, mpf_floor, mpf_ceil -- Assign a float from another float while rounding it to an integer. Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gmp.h" #include "gmp-impl.h" #define OPERATION_ceil #include "integer.h" core++-1.7/win32/patches/gmp-3.1.1/mpf/floor.c0100644000175000001440000000202707437361201017656 0ustar joachimusers/* mpf_trunc, mpf_floor, mpf_ceil -- Assign a float from another float while rounding it to an integer. Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gmp.h" #include "gmp-impl.h" #define OPERATION_floor #include "integer.h" core++-1.7/win32/patches/gmp-3.1.1/mpf/integer.h0100644000175000001440000000563607437361201020210 0ustar joachimusers/* mpf_trunc, mpf_floor, mpf_ceil -- Assign a float from another float while rounding it to an integer. Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #if defined (OPERATION_floor) #define _MPF_FLOOR_OR_CEIL #define FUNC_NAME mpf_floor #define MPF_FLOOR 1 #define MPF_CEIL 0 #elif defined (OPERATION_ceil) #define _MPF_FLOOR_OR_CEIL #define FUNC_NAME mpf_ceil #define MPF_CEIL 1 #define MPF_FLOOR 0 #elif defined (OPERATION_trunc) #define FUNC_NAME mpf_trunc #else Error, error, unrecognised OPERATION #endif #ifdef _MPF_FLOOR_OR_CEIL static int #if __STDC__ mpn_zero_p (mp_ptr p, mp_size_t n) #else mpn_zero_p (p, n) mp_ptr p; mp_size_t n; #endif { mp_size_t i; for (i = 0; i < n; i++) { if (p[i] != 0) return 0; } return 1; } #endif void #if __STDC__ FUNC_NAME (mpf_ptr r, mpf_srcptr u) #else FUNC_NAME (r, u) mpf_ptr r; mpf_srcptr u; #endif { mp_ptr rp, up; mp_size_t size, asize; mp_size_t prec; mp_size_t ignored_n; mp_exp_t exp; size = u->_mp_size; rp = r->_mp_d; exp = u->_mp_exp; /* Single out the case where |u| < 1. */ if (exp <= 0) { #ifdef _MPF_FLOOR_OR_CEIL if ((MPF_FLOOR && size < 0) || (MPF_CEIL && size >= 0)) { rp[0] = 1; r->_mp_size = MPF_FLOOR ? -1 : 1; r->_mp_exp = 1; return; } #endif r->_mp_size = 0; return; } prec = r->_mp_prec /* + 1 */; asize = ABS (size); #ifdef _MPF_FLOOR_OR_CEIL ignored_n = 0; #endif up = u->_mp_d; if (asize > prec) { #ifdef _MPF_FLOOR_OR_CEIL ignored_n = asize - prec; #endif up += asize - prec; asize = prec; } if (asize > exp) { long diff = asize - exp; #ifdef _MPF_FLOOR_OR_CEIL ignored_n += diff; #endif up += diff; asize = exp; } #ifdef _MPF_FLOOR_OR_CEIL if (((MPF_FLOOR && size < 0) || (MPF_CEIL && size >= 0)) && ! mpn_zero_p (up - ignored_n, ignored_n)) { mp_limb_t cy; cy = mpn_add_1 (rp, up, asize, (mp_limb_t) 1); if (cy != 0) { rp[asize++] = cy; exp++; } } else #endif MPN_COPY_INCR (rp, up, asize); r->_mp_exp = exp; r->_mp_size = size >= 0 ? asize : -asize; } core++-1.7/win32/patches/gmp-3.1.1/mpf/random2.c0100644000175000001440000000305407437361201020100 0ustar joachimusers/* mpf_random2 -- Generate a positive random mpf_t of specified size, with long runs of consecutive ones and zeros in the binary representation. Intended for testing of other MP routines. Copyright (C) 1995, 1996 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gmp.h" #include "gmp-impl.h" void #if __STDC__ mpf_random2 (mpf_ptr x, mp_size_t size, mp_exp_t exp) #else mpf_random2 (x, size, exp) mpf_ptr x; mp_size_t size; mp_exp_t exp; #endif { mp_size_t asize; mp_size_t prec = x->_mp_prec; asize = ABS (size); if (asize != 0) { if (asize > prec + 1) asize = prec + 1; mpn_random2 (x->_mp_d, asize); } if (exp != 0) exp = random () % (2 * exp) - exp; x->_mp_exp = asize == 0 ? 0 : exp; x->_mp_size = size < 0 ? -asize : asize; } core++-1.7/win32/patches/gmp-3.1.1/mpf/trunc.c0100644000175000001440000000202707437361201017670 0ustar joachimusers/* mpf_trunc, mpf_floor, mpf_ceil -- Assign a float from another float while rounding it to an integer. Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gmp.h" #include "gmp-impl.h" #define OPERATION_trunc #include "integer.h" core++-1.7/win32/patches/gmp-3.1.1/config.h0100644000175000001440000001254007437361201017226 0ustar joachimusers/* config.h -- Hand-edited for MS VC++ 6.0 by Marc-Andre Lemburg (mal@lemburg.com) */ /* Copyright (C) 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Enable Standard C features */ #ifndef __STDC__ # define __STDC__ 1 #endif /* Set compiler recognition symbols */ #ifdef _MSC_VER # define MS_VISUALCPP 1 #endif /* Define if a limb is long long. */ /* #undef _LONG_LONG_LIMB */ /* Define if we have native implementation of function. */ /* #undef HAVE_NATIVE_ */ /* #undef HAVE_NATIVE_mpn_add */ /* #undef HAVE_NATIVE_mpn_add_1 */ #define HAVE_NATIVE_mpn_add_n 1 /* #undef HAVE_NATIVE_mpn_add_nc */ #define HAVE_NATIVE_mpn_addmul_1 1 #define HAVE_NATIVE_mpn_addmul_1c 1 /* #undef HAVE_NATIVE_mpn_addsub_n */ /* #undef HAVE_NATIVE_mpn_addsub_nc */ #define HAVE_NATIVE_mpn_and_n 1 #define HAVE_NATIVE_mpn_andn_n 1 /* #undef HAVE_NATIVE_mpn_bdivmod */ /* #undef HAVE_NATIVE_mpn_cmp */ /* #undef HAVE_NATIVE_mpn_com_n */ /* #undef HAVE_NATIVE_mpn_copyd */ /* #undef HAVE_NATIVE_mpn_copyi */ #define HAVE_NATIVE_mpn_divexact_by3c 1 /* #undef HAVE_NATIVE_mpn_divrem */ #define HAVE_NATIVE_mpn_divrem_1 1 #define HAVE_NATIVE_mpn_divrem_1c 1 /* #undef HAVE_NATIVE_mpn_divrem_2 */ /* #undef HAVE_NATIVE_mpn_divrem_newton */ /* #undef HAVE_NATIVE_mpn_divrem_classic */ /* #undef HAVE_NATIVE_mpn_dump */ /* #undef HAVE_NATIVE_mpn_gcd */ /* #undef HAVE_NATIVE_mpn_gcd_1 */ /* #undef HAVE_NATIVE_mpn_gcdext */ /* #undef HAVE_NATIVE_mpn_get_str */ #define HAVE_NATIVE_mpn_hamdist 1 /* #undef HAVE_NATIVE_mpn_invert_limb */ #define HAVE_NATIVE_mpn_ior_n 1 #define HAVE_NATIVE_mpn_iorn_n 1 #define HAVE_NATIVE_mpn_lshift 1 #define HAVE_NATIVE_mpn_mod_1 1 #define HAVE_NATIVE_mpn_mod_1c 1 /* #undef HAVE_NATIVE_mpn_mul */ #define HAVE_NATIVE_mpn_mul_1 1 #define HAVE_NATIVE_mpn_mul_1c 1 #define HAVE_NATIVE_mpn_mul_basecase 1 /* #undef HAVE_NATIVE_mpn_mul_n */ #define HAVE_NATIVE_mpn_nand_n 1 #define HAVE_NATIVE_mpn_nior_n 1 /* #undef HAVE_NATIVE_mpn_perfect_square_p */ #define HAVE_NATIVE_mpn_popcount 1 /* #undef HAVE_NATIVE_mpn_preinv_mod_1 */ /* #undef HAVE_NATIVE_mpn_random2 */ /* #undef HAVE_NATIVE_mpn_random */ /* #undef HAVE_NATIVE_mpn_rawrandom */ #define HAVE_NATIVE_mpn_rshift 1 /* #undef HAVE_NATIVE_mpn_scan0 */ /* #undef HAVE_NATIVE_mpn_scan1 */ /* #undef HAVE_NATIVE_mpn_set_str */ /* #undef HAVE_NATIVE_mpn_sqrtrem */ #define HAVE_NATIVE_mpn_sqr_basecase 1 /* #undef HAVE_NATIVE_mpn_sub */ /* #undef HAVE_NATIVE_mpn_sub_1 */ #define HAVE_NATIVE_mpn_sub_n 1 /* #undef HAVE_NATIVE_mpn_sub_nc */ #define HAVE_NATIVE_mpn_submul_1 1 #define HAVE_NATIVE_mpn_submul_1c 1 /* #undef HAVE_NATIVE_mpn_udiv_w_sdiv */ /* #undef HAVE_NATIVE_mpn_umul_ppmm */ /* #undef HAVE_NATIVE_mpn_udiv_qrnnd */ #define HAVE_NATIVE_mpn_xor_n 1 #define HAVE_NATIVE_mpn_xnor_n 1 /* Define to 1 if you have the declaration of `optarg', and to 0 if you don't. */ #define HAVE_DECL_OPTARG 0 /* ./configure --enable-assert option, to enable some ASSERT()s */ /* #undef WANT_ASSERT */ /* Define if you have the header file. */ /* #undef HAVE_SYS_SYSCTL_H */ /* Define if you have the `strtoul' function. */ /* #undef HAVE_STRTOUL */ /* Name of package */ #define PACKAGE "gmp" /* Define if you have the `sysctlbyname' function. */ /* #undef HAVE_SYSCTLBYNAME */ /* Define if the system has the type `void'. */ #define HAVE_VOID 1 /* Define if you have the `popen' function. */ #define HAVE_POPEN 1 /* ./configure --disable-alloca option, to use stack-alloc.c, not alloca */ /* #undef USE_STACK_ALLOC */ /* Define if cpp supports the ANSI # stringizing operator. */ #define HAVE_STRINGIZE 1 /* Define if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define if you have the `sysconf' function. */ /* #undef HAVE_SYSCONF */ /* Define if you have the `getpagesize' function. */ /* #undef HAVE_GETPAGESIZE */ /* Define if you have the `processor_info' function. */ /* #undef HAVE_PROCESSOR_INFO */ /* Version number of package */ #define VERSION "3.1.1" /* Define if you have the `getopt_long' function. */ /* #undef HAVE_GETOPT_LONG */ /* Define if you have the header file. */ /* #undef HAVE_GETOPT_H */ /* Define if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define if a speed_cyclecounter exists (for the tune programs) */ /* #undef HAVE_SPEED_CYCLECOUNTER */ /* Define if mpn/tests has calling conventions checking for the CPU */ /* #undef HAVE_CALLING_CONVENTIONS */ /* ./configure --enable-fft option, to enable FFTs for multiplication */ /* #undef WANT_FFT */ /* Define if you have the header file. */ #define HAVE_STRING_H 1 /* Define if you have the header file. */ /* #undef HAVE_UNISTD_H */ core++-1.7/win32/patches/gmp-3.1.1/gmp-impl.h0100644000175000001440000010740407437361201017507 0ustar joachimusers/* Include file for internal GNU MP types and definitions. THE CONTENTS OF THIS FILE ARE FOR INTERNAL USE AND ARE ALMOST CERTAIN TO BE SUBJECT TO INCOMPATIBLE CHANGES IN FUTURE GNU MP RELEASES. Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "config.h" #include "gmp-mparam.h" /* #include "longlong.h" */ /* When using gcc, make sure to use its builtin alloca. */ #if ! defined (alloca) && defined (__GNUC__) #define alloca __builtin_alloca #define HAVE_ALLOCA #endif /* When using cc, do whatever necessary to allow use of alloca. For many machines, this means including alloca.h. IBM's compilers need a #pragma in "each module that needs to use alloca". */ #if ! defined (alloca) /* We need lots of variants for MIPS, to cover all versions and perversions of OSes for MIPS. */ #if defined (__mips) || defined (MIPSEL) || defined (MIPSEB) \ || defined (_MIPSEL) || defined (_MIPSEB) || defined (__sgi) \ || defined (__alpha) || defined (__sparc) || defined (sparc) \ || defined (__ksr__) #include #define HAVE_ALLOCA #endif #if defined (_IBMR2) #pragma alloca #define HAVE_ALLOCA #endif #if defined (__DECC) #define alloca(x) __ALLOCA(x) #define HAVE_ALLOCA #endif #endif #if defined (alloca) #define HAVE_ALLOCA #endif #if ! defined (HAVE_ALLOCA) || USE_STACK_ALLOC #include "stack-alloc.h" #else #define TMP_DECL(m) #define TMP_ALLOC(x) alloca(x) #define TMP_MARK(m) #define TMP_FREE(m) #endif /* Allocating various types. */ #define TMP_ALLOC_TYPE(n,type) ((type *) TMP_ALLOC ((n) * sizeof (type))) #define TMP_ALLOC_LIMBS(n) TMP_ALLOC_TYPE(n,mp_limb_t) #define TMP_ALLOC_MP_PTRS(n) TMP_ALLOC_TYPE(n,mp_ptr) #if ! defined (__GNUC__) /* FIXME: Test for C++ compilers here, __DECC understands __inline */ #define inline /* Empty */ #endif #define ABS(x) (x >= 0 ? x : -x) #define MIN(l,o) ((l) < (o) ? (l) : (o)) #define MAX(h,i) ((h) > (i) ? (h) : (i)) #define numberof(x) (sizeof (x) / sizeof ((x)[0])) /* Field access macros. */ #define SIZ(x) ((x)->_mp_size) #define ABSIZ(x) ABS (SIZ (x)) #define PTR(x) ((x)->_mp_d) #define LIMBS(x) ((x)->_mp_d) #define EXP(x) ((x)->_mp_exp) #define PREC(x) ((x)->_mp_prec) #define ALLOC(x) ((x)->_mp_alloc) /* Extra casts because shorts are promoted to ints by "~" and "<<". "-1" rather than "1" in SIGNED_TYPE_MIN avoids warnings from some compilers about arithmetic overflow. */ #define UNSIGNED_TYPE_MAX(type) ((type) ~ (type) 0) #define UNSIGNED_TYPE_HIGHBIT(type) ((type) ~ (UNSIGNED_TYPE_MAX(type) >> 1)) #define SIGNED_TYPE_MIN(type) (((type) -1) << (8*sizeof(type)-1)) #define SIGNED_TYPE_MAX(type) ((type) ~ SIGNED_TYPE_MIN(type)) #define SIGNED_TYPE_HIGHBIT(type) SIGNED_TYPE_MIN(type) #define MP_LIMB_T_MAX UNSIGNED_TYPE_MAX (mp_limb_t) #define MP_LIMB_T_HIGHBIT UNSIGNED_TYPE_HIGHBIT (mp_limb_t) #define MP_SIZE_T_MAX SIGNED_TYPE_MAX (mp_size_t) #ifndef ULONG_MAX #define ULONG_MAX UNSIGNED_TYPE_MAX (unsigned long) #endif #define ULONG_HIGHBIT UNSIGNED_TYPE_HIGHBIT (unsigned long) #define LONG_HIGHBIT SIGNED_TYPE_HIGHBIT (long) #ifndef LONG_MAX #define LONG_MAX SIGNED_TYPE_MAX (long) #endif #ifndef USHORT_MAX #define USHORT_MAX UNSIGNED_TYPE_MAX (unsigned short) #endif #define USHORT_HIGHBIT UNSIGNED_TYPE_HIGHBIT (unsigned short) #define SHORT_HIGHBIT SIGNED_TYPE_HIGHBIT (short) #ifndef SHORT_MAX #define SHORT_MAX SIGNED_TYPE_MAX (short) #endif /* Swap macros. */ #define MP_LIMB_T_SWAP(x, y) \ do { \ mp_limb_t __mp_limb_t_swap__tmp = (x); \ (x) = (y); \ (y) = __mp_limb_t_swap__tmp; \ } while (0) #define MP_SIZE_T_SWAP(x, y) \ do { \ mp_size_t __mp_size_t_swap__tmp = (x); \ (x) = (y); \ (y) = __mp_size_t_swap__tmp; \ } while (0) #define MP_PTR_SWAP(x, y) \ do { \ mp_ptr __mp_ptr_swap__tmp = (x); \ (x) = (y); \ (y) = __mp_ptr_swap__tmp; \ } while (0) #define MP_SRCPTR_SWAP(x, y) \ do { \ mp_srcptr __mp_srcptr_swap__tmp = (x); \ (x) = (y); \ (y) = __mp_srcptr_swap__tmp; \ } while (0) #define MPN_PTR_SWAP(xp,xs, yp,ys) \ do { \ MP_PTR_SWAP (xp, yp); \ MP_SIZE_T_SWAP (xs, ys); \ } while(0) #define MPN_SRCPTR_SWAP(xp,xs, yp,ys) \ do { \ MP_SRCPTR_SWAP (xp, yp); \ MP_SIZE_T_SWAP (xs, ys); \ } while(0) #define MPZ_PTR_SWAP(x, y) \ do { \ mpz_ptr __mpz_ptr_swap__tmp = (x); \ (x) = (y); \ (y) = __mpz_ptr_swap__tmp; \ } while (0) #define MPZ_SRCPTR_SWAP(x, y) \ do { \ mpz_srcptr __mpz_srcptr_swap__tmp = (x); \ (x) = (y); \ (y) = __mpz_srcptr_swap__tmp; \ } while (0) #if defined (__cplusplus) extern "C" { #endif /* FIXME: These are purely internal, so do a search and replace to change them to __gmp forms, rather than using these macros. */ #define _mp_allocate_func __gmp_allocate_func #define _mp_reallocate_func __gmp_reallocate_func #define _mp_free_func __gmp_free_func #define _mp_default_allocate __gmp_default_allocate #define _mp_default_reallocate __gmp_default_reallocate #define _mp_default_free __gmp_default_free extern void * (*_mp_allocate_func) _PROTO ((size_t)); extern void * (*_mp_reallocate_func) _PROTO ((void *, size_t, size_t)); extern void (*_mp_free_func) _PROTO ((void *, size_t)); void *_mp_default_allocate _PROTO ((size_t)); void *_mp_default_reallocate _PROTO ((void *, size_t, size_t)); void _mp_default_free _PROTO ((void *, size_t)); #define _MP_ALLOCATE_FUNC_TYPE(n,type) \ ((type *) (*_mp_allocate_func) ((n) * sizeof (type))) #define _MP_ALLOCATE_FUNC_LIMBS(n) _MP_ALLOCATE_FUNC_TYPE(n,mp_limb_t) #define _MP_FREE_FUNC_TYPE(p,n,type) (*_mp_free_func) (p, (n) * sizeof (type)) #define _MP_FREE_FUNC_LIMBS(p,n) _MP_FREE_FUNC_TYPE(p,n,mp_limb_t) #if (__STDC__-0) || defined (__cplusplus) #else #define const /* Empty */ #define signed /* Empty */ #endif #if defined (__GNUC__) && defined (__i386__) #if 0 /* check that these actually improve things */ #define MPN_COPY_INCR(DST, SRC, N) \ __asm__ ("cld\n\trep\n\tmovsl" : : \ "D" (DST), "S" (SRC), "c" (N) : \ "cx", "di", "si", "memory") #define MPN_COPY_DECR(DST, SRC, N) \ __asm__ ("std\n\trep\n\tmovsl" : : \ "D" ((DST) + (N) - 1), "S" ((SRC) + (N) - 1), "c" (N) : \ "cx", "di", "si", "memory") #define MPN_NORMALIZE_NOT_ZERO(P, N) \ do { \ __asm__ ("std\n\trepe\n\tscasl" : "=c" (N) : \ "a" (0), "D" ((P) + (N) - 1), "0" (N) : \ "cx", "di"); \ (N)++; \ } while (0) #endif #endif #if HAVE_NATIVE_mpn_copyi #define mpn_copyi __MPN(copyi) void mpn_copyi _PROTO ((mp_ptr, mp_srcptr, mp_size_t)); #endif /* Remap names of internal mpn functions. */ #define __clz_tab __MPN(clz_tab) #define mpn_udiv_w_sdiv __MPN(udiv_w_sdiv) #define mpn_reciprocal __MPN(reciprocal) #define mpn_sb_divrem_mn __MPN(sb_divrem_mn) #define mpn_bz_divrem_n __MPN(bz_divrem_n) /* #define mpn_tdiv_q __MPN(tdiv_q) */ #define mpn_kara_mul_n __MPN(kara_mul_n) void mpn_kara_mul_n _PROTO((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t, mp_ptr)); #define mpn_kara_sqr_n __MPN(kara_sqr_n) void mpn_kara_sqr_n _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_ptr)); #define mpn_toom3_mul_n __MPN(toom3_mul_n) void mpn_toom3_mul_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t,mp_ptr)); #define mpn_toom3_sqr_n __MPN(toom3_sqr_n) void mpn_toom3_sqr_n _PROTO((mp_ptr, mp_srcptr, mp_size_t, mp_ptr)); #define mpn_fft_best_k __MPN(fft_best_k) int mpn_fft_best_k _PROTO ((mp_size_t n, int sqr)); #define mpn_mul_fft __MPN(mul_fft) void mpn_mul_fft _PROTO ((mp_ptr op, mp_size_t pl, mp_srcptr n, mp_size_t nl, mp_srcptr m, mp_size_t ml, int k)); #define mpn_mul_fft_full __MPN(mul_fft_full) void mpn_mul_fft_full _PROTO ((mp_ptr op, mp_srcptr n, mp_size_t nl, mp_srcptr m, mp_size_t ml)); #define mpn_fft_next_size __MPN(fft_next_size) mp_size_t mpn_fft_next_size _PROTO ((mp_size_t pl, int k)); mp_limb_t mpn_sb_divrem_mn _PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t)); mp_limb_t mpn_bz_divrem_n _PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t)); /* void mpn_tdiv_q _PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); */ /* Copy NLIMBS *limbs* from SRC to DST, NLIMBS==0 allowed. */ #ifndef MPN_COPY_INCR #if HAVE_NATIVE_mpn_copyi #define MPN_COPY_INCR(DST, SRC, NLIMBS) mpn_copyi (DST, SRC, NLIMBS) #else #define MPN_COPY_INCR(DST, SRC, NLIMBS) \ do { \ mp_size_t __i; \ for (__i = 0; __i < (NLIMBS); __i++) \ (DST)[__i] = (SRC)[__i]; \ } while (0) #endif #endif #if HAVE_NATIVE_mpn_copyd #define mpn_copyd __MPN(copyd) void mpn_copyd _PROTO ((mp_ptr, mp_srcptr, mp_size_t)); #endif /* NLIMBS==0 allowed */ #ifndef MPN_COPY_DECR #if HAVE_NATIVE_mpn_copyd #define MPN_COPY_DECR(DST, SRC, NLIMBS) mpn_copyd (DST, SRC, NLIMBS) #else #define MPN_COPY_DECR(DST, SRC, NLIMBS) \ do { \ mp_size_t __i; \ for (__i = (NLIMBS) - 1; __i >= 0; __i--) \ (DST)[__i] = (SRC)[__i]; \ } while (0) #endif #endif /* Define MPN_COPY for vector computers. Since #pragma cannot be in a macro, rely on function inlining. */ #if defined (_CRAY) || defined (__uxp__) static inline void _MPN_COPY (d, s, n) mp_ptr d; mp_srcptr s; mp_size_t n; { int i; /* Faster for Cray with plain int */ #pragma _CRI ivdep /* Cray PVP systems */ #pragma loop noalias d,s /* Fujitsu VPP systems */ for (i = 0; i < n; i++) d[i] = s[i]; } #define MPN_COPY _MPN_COPY #endif #ifndef MPN_COPY #define MPN_COPY MPN_COPY_INCR #endif /* Zero NLIMBS *limbs* AT DST. */ #ifndef MPN_ZERO #define MPN_ZERO(DST, NLIMBS) \ do { \ mp_size_t __i; \ for (__i = 0; __i < (NLIMBS); __i++) \ (DST)[__i] = 0; \ } while (0) #endif #ifndef MPN_NORMALIZE #define MPN_NORMALIZE(DST, NLIMBS) \ do { \ while (NLIMBS > 0) \ { \ if ((DST)[(NLIMBS) - 1] != 0) \ break; \ NLIMBS--; \ } \ } while (0) #endif #ifndef MPN_NORMALIZE_NOT_ZERO #define MPN_NORMALIZE_NOT_ZERO(DST, NLIMBS) \ do { \ while (1) \ { \ if ((DST)[(NLIMBS) - 1] != 0) \ break; \ NLIMBS--; \ } \ } while (0) #endif /* Strip least significant zero limbs from ptr,size by incrementing ptr and decrementing size. The number in ptr,size must be non-zero, ie. size!=0 and somewhere a non-zero limb. */ #define MPN_STRIP_LOW_ZEROS_NOT_ZERO(ptr, size) \ do \ { \ ASSERT ((size) != 0); \ while ((ptr)[0] == 0) \ { \ (ptr)++; \ (size)--; \ ASSERT (size >= 0); \ } \ } \ while (0) /* Initialize X of type mpz_t with space for NLIMBS limbs. X should be a temporary variable; it will be automatically cleared out at function return. We use __x here to make it possible to accept both mpz_ptr and mpz_t arguments. */ #define MPZ_TMP_INIT(X, NLIMBS) \ do { \ mpz_ptr __x = (X); \ __x->_mp_alloc = (NLIMBS); \ __x->_mp_d = (mp_ptr) TMP_ALLOC ((NLIMBS) * BYTES_PER_MP_LIMB); \ } while (0) /* Realloc for an mpz_t WHAT if it has less thann NEEDED limbs. */ #define MPZ_REALLOC(what,needed) \ do { \ if ((needed) > ALLOC (what)) \ _mpz_realloc (what, needed); \ } while (0) /* If KARATSUBA_MUL_THRESHOLD is not already defined, define it to a value which is good on most machines. */ #ifndef KARATSUBA_MUL_THRESHOLD #define KARATSUBA_MUL_THRESHOLD 32 #endif /* If TOOM3_MUL_THRESHOLD is not already defined, define it to a value which is good on most machines. */ #ifndef TOOM3_MUL_THRESHOLD #define TOOM3_MUL_THRESHOLD 256 #endif #ifndef KARATSUBA_SQR_THRESHOLD #define KARATSUBA_SQR_THRESHOLD (2*KARATSUBA_MUL_THRESHOLD) #endif #ifndef TOOM3_SQR_THRESHOLD #define TOOM3_SQR_THRESHOLD (2*TOOM3_MUL_THRESHOLD) #endif /* First k to use for an FFT modF multiply. A modF FFT is an order log(2^k)/log(2^(k-1)) algorithm, so k=3 is merely 1.5 like karatsuba, whereas k=4 is 1.33 which is faster than toom3 at 1.485. */ #define FFT_FIRST_K 4 /* Threshold at which FFT should be used to do a modF NxN -> N multiply. */ #ifndef FFT_MODF_MUL_THRESHOLD #define FFT_MODF_MUL_THRESHOLD (TOOM3_MUL_THRESHOLD * 3) #endif #ifndef FFT_MODF_SQR_THRESHOLD #define FFT_MODF_SQR_THRESHOLD (TOOM3_SQR_THRESHOLD * 3) #endif /* Threshold at which FFT should be used to do an NxN -> 2N multiply. This will be a size where FFT is using k=7 or k=8, since an FFT-k used for an NxN->2N multiply and not recursing into itself is an order log(2^k)/log(2^(k-2)) algorithm, so it'll be at least k=7 at 1.39 which is the first better than toom3. */ #ifndef FFT_MUL_THRESHOLD #define FFT_MUL_THRESHOLD (FFT_MODF_MUL_THRESHOLD * 10) #endif #ifndef FFT_SQR_THRESHOLD #define FFT_SQR_THRESHOLD (FFT_MODF_SQR_THRESHOLD * 10) #endif /* Table of thresholds for successive modF FFT "k"s. The first entry is where FFT_FIRST_K+1 should be used, the second FFT_FIRST_K+2, etc. See mpn_fft_best_k(). */ #ifndef FFT_MUL_TABLE #define FFT_MUL_TABLE \ { TOOM3_MUL_THRESHOLD * 4, /* k=5 */ \ TOOM3_MUL_THRESHOLD * 8, /* k=6 */ \ TOOM3_MUL_THRESHOLD * 16, /* k=7 */ \ TOOM3_MUL_THRESHOLD * 32, /* k=8 */ \ TOOM3_MUL_THRESHOLD * 96, /* k=9 */ \ TOOM3_MUL_THRESHOLD * 288, /* k=10 */ \ 0 } #endif #ifndef FFT_SQR_TABLE #define FFT_SQR_TABLE \ { TOOM3_SQR_THRESHOLD * 4, /* k=5 */ \ TOOM3_SQR_THRESHOLD * 8, /* k=6 */ \ TOOM3_SQR_THRESHOLD * 16, /* k=7 */ \ TOOM3_SQR_THRESHOLD * 32, /* k=8 */ \ TOOM3_SQR_THRESHOLD * 96, /* k=9 */ \ TOOM3_SQR_THRESHOLD * 288, /* k=10 */ \ 0 } #endif #ifndef FFT_TABLE_ATTRS #define FFT_TABLE_ATTRS static const #endif #define MPN_FFT_TABLE_SIZE 16 /* Return non-zero if xp,xsize and yp,ysize overlap. If xp+xsize<=yp there's no overlap, or if yp+ysize<=xp there's no overlap. If both these are false, there's an overlap. */ #define MPN_OVERLAP_P(xp, xsize, yp, ysize) \ ((xp) + (xsize) > (yp) && (yp) + (ysize) > (xp)) /* ASSERT() is a private assertion checking scheme, similar to . ASSERT() does the check only if WANT_ASSERT is selected, ASSERT_ALWAYS() does it always. Generally assertions are meant for development, but might help when looking for a problem later too. ASSERT_NOCARRY() uses ASSERT() to check the expression is zero, but if assertion checking is disabled, the expression is still evaluated. This is meant for use with routines like mpn_add_n() where the return value represents a carry or whatever that shouldn't occur. For example, ASSERT_NOCARRY (mpn_add_n (rp, s1p, s2p, size)); */ #ifdef __LINE__ #define ASSERT_LINE __LINE__ #else #define ASSERT_LINE -1 #endif #ifdef __FILE__ #define ASSERT_FILE __FILE__ #else #define ASSERT_FILE "" #endif int __gmp_assert_fail _PROTO((const char *filename, int linenum, const char *expr)); #if HAVE_STRINGIZE #define ASSERT_FAIL(expr) __gmp_assert_fail (ASSERT_FILE, ASSERT_LINE, #expr) #else #define ASSERT_FAIL(expr) __gmp_assert_fail (ASSERT_FILE, ASSERT_LINE, "expr") #endif #if HAVE_VOID #define CAST_TO_VOID (void) #else #define CAST_TO_VOID #endif #define ASSERT_ALWAYS(expr) ((expr) ? 0 : ASSERT_FAIL (expr)) #if WANT_ASSERT #define ASSERT(expr) ASSERT_ALWAYS (expr) #define ASSERT_NOCARRY(expr) ASSERT_ALWAYS ((expr) == 0) #else #define ASSERT(expr) (CAST_TO_VOID 0) #define ASSERT_NOCARRY(expr) (expr) #endif #if HAVE_NATIVE_mpn_com_n #define mpn_com_n __MPN(com_n) void mpn_com_n _PROTO ((mp_ptr, mp_srcptr, mp_size_t)); #else #define mpn_com_n(d,s,n) \ do \ { \ mp_ptr __d = (d); \ mp_srcptr __s = (s); \ mp_size_t __n = (n); \ do \ *__d++ = ~ *__s++; \ while (--__n); \ } \ while (0) #endif #define MPN_LOGOPS_N_INLINE(d,s1,s2,n,dop,op,s2op) \ do \ { \ mp_ptr __d = (d); \ mp_srcptr __s1 = (s1); \ mp_srcptr __s2 = (s2); \ mp_size_t __n = (n); \ do \ *__d++ = dop (*__s1++ op s2op *__s2++); \ while (--__n); \ } \ while (0) #if HAVE_NATIVE_mpn_and_n #define mpn_and_n __MPN(and_n) void mpn_and_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #else #define mpn_and_n(d,s1,s2,n) MPN_LOGOPS_N_INLINE(d,s1,s2,n, ,&, ) #endif #if HAVE_NATIVE_mpn_andn_n #define mpn_andn_n __MPN(andn_n) void mpn_andn_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #else #define mpn_andn_n(d,s1,s2,n) MPN_LOGOPS_N_INLINE(d,s1,s2,n, ,&,~) #endif #if HAVE_NATIVE_mpn_nand_n #define mpn_nand_n __MPN(nand_n) void mpn_nand_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #else #define mpn_nand_n(d,s1,s2,n) MPN_LOGOPS_N_INLINE(d,s1,s2,n,~,&, ) #endif #if HAVE_NATIVE_mpn_ior_n #define mpn_ior_n __MPN(ior_n) void mpn_ior_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #else #define mpn_ior_n(d,s1,s2,n) MPN_LOGOPS_N_INLINE(d,s1,s2,n, ,|, ) #endif #if HAVE_NATIVE_mpn_iorn_n #define mpn_iorn_n __MPN(iorn_n) void mpn_iorn_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #else #define mpn_iorn_n(d,s1,s2,n) MPN_LOGOPS_N_INLINE(d,s1,s2,n, ,|,~) #endif #if HAVE_NATIVE_mpn_nior_n #define mpn_nior_n __MPN(nior_n) void mpn_nior_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #else #define mpn_nior_n(d,s1,s2,n) MPN_LOGOPS_N_INLINE(d,s1,s2,n,~,|, ) #endif #if HAVE_NATIVE_mpn_xor_n #define mpn_xor_n __MPN(xor_n) void mpn_xor_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #else #define mpn_xor_n(d,s1,s2,n) MPN_LOGOPS_N_INLINE(d,s1,s2,n, ,^, ) #endif #if HAVE_NATIVE_mpn_xnor_n #define mpn_xnor_n __MPN(xnor_n) void mpn_xnor_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #else #define mpn_xnor_n(d,s1,s2,n) MPN_LOGOPS_N_INLINE(d,s1,s2,n,~,^, ) #endif /* Structure for conversion between internal binary format and strings in base 2..36. */ struct bases { /* Number of digits in the conversion base that always fits in an mp_limb_t. For example, for base 10 on a machine where a mp_limb_t has 32 bits this is 9, since 10**9 is the largest number that fits into a mp_limb_t. */ int chars_per_limb; /* log(2)/log(conversion_base) */ double chars_per_bit_exactly; /* base**chars_per_limb, i.e. the biggest number that fits a word, built by factors of base. Exception: For 2, 4, 8, etc, big_base is log2(base), i.e. the number of bits used to represent each digit in the base. */ mp_limb_t big_base; /* A BITS_PER_MP_LIMB bit approximation to 1/big_base, represented as a fixed-point number. Instead of dividing by big_base an application can choose to multiply by big_base_inverted. */ mp_limb_t big_base_inverted; }; #define __mp_bases __MPN(mp_bases) extern const struct bases __mp_bases[]; extern mp_size_t __gmp_default_fp_limb_precision; #if defined (__i386__) #define TARGET_REGISTER_STARVED 1 #else #define TARGET_REGISTER_STARVED 0 #endif /* Use a library function for invert_limb, if available. */ #if ! defined (invert_limb) && HAVE_NATIVE_mpn_invert_limb #define mpn_invert_limb __MPN(invert_limb) mp_limb_t mpn_invert_limb _PROTO ((mp_limb_t)); #define invert_limb(invxl,xl) (invxl = __MPN(invert_limb) (xl)) #endif #ifndef invert_limb #define invert_limb(invxl,xl) \ do { \ mp_limb_t dummy; \ if (xl << 1 == 0) \ invxl = ~(mp_limb_t) 0; \ else \ udiv_qrnnd (invxl, dummy, -xl, 0, xl); \ } while (0) #endif /* Divide the two-limb number in (NH,,NL) by D, with DI being the largest limb not larger than (2**(2*BITS_PER_MP_LIMB))/D - (2**BITS_PER_MP_LIMB). If this would yield overflow, DI should be the largest possible number (i.e., only ones). For correct operation, the most significant bit of D has to be set. Put the quotient in Q and the remainder in R. */ #define udiv_qrnnd_preinv(q, r, nh, nl, d, di) \ do { \ mp_limb_t _q, _ql, _r; \ mp_limb_t _xh, _xl; \ umul_ppmm (_q, _ql, (nh), (di)); \ _q += (nh); /* DI is 2**BITS_PER_MP_LIMB too small */\ umul_ppmm (_xh, _xl, _q, (d)); \ sub_ddmmss (_xh, _r, (nh), (nl), _xh, _xl); \ if (_xh != 0) \ { \ sub_ddmmss (_xh, _r, _xh, _r, 0, (d)); \ _q += 1; \ if (_xh != 0) \ { \ sub_ddmmss (_xh, _r, _xh, _r, 0, (d)); \ _q += 1; \ } \ } \ if (_r >= (d)) \ { \ _r -= (d); \ _q += 1; \ } \ (r) = _r; \ (q) = _q; \ } while (0) /* Like udiv_qrnnd_preinv, but for for any value D. DNORM is D shifted left so that its most significant bit is set. LGUP is ceil(log2(D)). */ #define udiv_qrnnd_preinv2gen(q, r, nh, nl, d, di, dnorm, lgup) \ do { \ mp_limb_t _n2, _n10, _n1, _nadj, _q1; \ mp_limb_t _xh, _xl; \ _n2 = ((nh) << (BITS_PER_MP_LIMB - (lgup))) + ((nl) >> 1 >> (l - 1));\ _n10 = (nl) << (BITS_PER_MP_LIMB - (lgup)); \ _n1 = ((mp_limb_signed_t) _n10 >> (BITS_PER_MP_LIMB - 1)); \ _nadj = _n10 + (_n1 & (dnorm)); \ umul_ppmm (_xh, _xl, di, _n2 - _n1); \ add_ssaaaa (_xh, _xl, _xh, _xl, 0, _nadj); \ _q1 = ~(_n2 + _xh); \ umul_ppmm (_xh, _xl, _q1, d); \ add_ssaaaa (_xh, _xl, _xh, _xl, nh, nl); \ _xh -= (d); \ (r) = _xl + ((d) & _xh); \ (q) = _xh - _q1; \ } while (0) /* Exactly like udiv_qrnnd_preinv, but branch-free. It is not clear which version to use. */ #define udiv_qrnnd_preinv2norm(q, r, nh, nl, d, di) \ do { \ mp_limb_t _n2, _n10, _n1, _nadj, _q1; \ mp_limb_t _xh, _xl; \ _n2 = (nh); \ _n10 = (nl); \ _n1 = ((mp_limb_signed_t) _n10 >> (BITS_PER_MP_LIMB - 1)); \ _nadj = _n10 + (_n1 & (d)); \ umul_ppmm (_xh, _xl, di, _n2 - _n1); \ add_ssaaaa (_xh, _xl, _xh, _xl, 0, _nadj); \ _q1 = ~(_n2 + _xh); \ umul_ppmm (_xh, _xl, _q1, d); \ add_ssaaaa (_xh, _xl, _xh, _xl, nh, nl); \ _xh -= (d); \ (r) = _xl + ((d) & _xh); \ (q) = _xh - _q1; \ } while (0) /* modlimb_invert() sets "inv" to the multiplicative inverse of "n" modulo 2^BITS_PER_MP_LIMB, ie. so that inv*n == 1 mod 2^BITS_PER_MP_LIMB. "n" must be odd (otherwise such an inverse doesn't exist). This is not to be confused with invert_limb(), which is completely different. The table lookup gives an inverse with the low 8 bits valid, and each multiply step doubles the number of bits. See Jebelean's exact division paper, end of section 4 (reference in gmp.texi). */ #define modlimb_invert_table __gmp_modlimb_invert_table extern const unsigned char modlimb_invert_table[128]; #if BITS_PER_MP_LIMB <= 32 #define modlimb_invert(inv,n) \ do { \ mp_limb_t __n = (n); \ mp_limb_t __inv; \ ASSERT ((__n & 1) == 1); \ __inv = modlimb_invert_table[(__n&0xFF)/2]; /* 8 */ \ __inv = 2 * __inv - __inv * __inv * __n; /* 16 */ \ __inv = 2 * __inv - __inv * __inv * __n; /* 32 */ \ ASSERT (__inv * __n == 1); \ (inv) = __inv; \ } while (0) #endif #if BITS_PER_MP_LIMB > 32 && BITS_PER_MP_LIMB <= 64 #define modlimb_invert(inv,n) \ do { \ mp_limb_t __n = (n); \ mp_limb_t __inv; \ ASSERT ((__n & 1) == 1); \ __inv = modlimb_invert_table[(__n&0xFF)/2]; /* 8 */ \ __inv = 2 * __inv - __inv * __inv * __n; /* 16 */ \ __inv = 2 * __inv - __inv * __inv * __n; /* 32 */ \ __inv = 2 * __inv - __inv * __inv * __n; /* 64 */ \ ASSERT (__inv * __n == 1); \ (inv) = __inv; \ } while (0) #endif /* The `mode' attribute was introduced in GCC 2.2, but we can only distinguish between GCC 2 releases from 2.5, since __GNUC_MINOR__ wasn't introduced until then. */ #if (__GNUC__ - 0 > 2 || defined (__GNUC_MINOR__)) && ! defined (__APPLE_CC__) /* Define stuff for longlong.h. */ typedef unsigned int UQItype __attribute__ ((mode (QI))); typedef int SItype __attribute__ ((mode (SI))); typedef unsigned int USItype __attribute__ ((mode (SI))); typedef int DItype __attribute__ ((mode (DI))); typedef unsigned int UDItype __attribute__ ((mode (DI))); #else typedef unsigned char UQItype; typedef long SItype; typedef unsigned long USItype; #if defined _LONGLONG || defined _LONG_LONG_LIMB typedef long long int DItype; typedef unsigned long long int UDItype; #else /* Assume `long' gives us a wide enough type. Needed for hppa2.0w. */ typedef long int DItype; typedef unsigned long int UDItype; #endif #endif typedef mp_limb_t UWtype; typedef unsigned int UHWtype; #define W_TYPE_SIZE BITS_PER_MP_LIMB /* Define ieee_double_extract and _GMP_IEEE_FLOATS. */ #if (defined (__arm__) && (defined (__ARMWEL__) || defined (__linux__))) /* Special case for little endian ARM since floats remain in big-endian. */ #define _GMP_IEEE_FLOATS 1 union ieee_double_extract { struct { unsigned int manh:20; unsigned int exp:11; unsigned int sig:1; unsigned int manl:32; } s; double d; }; #else #if defined (_LITTLE_ENDIAN) || defined (__LITTLE_ENDIAN__) \ || defined (__alpha) \ || defined (__clipper__) \ || defined (__cris) \ || defined (__i386__) \ || defined (__i860__) \ || defined (__i960__) \ || defined (MIPSEL) || defined (_MIPSEL) \ || defined (__ns32000__) \ || defined (__WINNT) || defined (_WIN32) #define _GMP_IEEE_FLOATS 1 union ieee_double_extract { struct { unsigned int manl:32; unsigned int manh:20; unsigned int exp:11; unsigned int sig:1; } s; double d; }; #else /* Need this as an #else since the tests aren't made exclusive. */ #if defined (_BIG_ENDIAN) || defined (__BIG_ENDIAN__) \ || defined (__a29k__) || defined (_AM29K) \ || defined (__arm__) \ || (defined (__convex__) && defined (_IEEE_FLOAT_)) \ || defined (_CRAYMPP) \ || defined (__i370__) || defined (__mvs__) \ || defined (__mc68000__) || defined (__mc68020__) || defined (__m68k__)\ || defined(mc68020) \ || defined (__m88000__) \ || defined (MIPSEB) || defined (_MIPSEB) \ || defined (__hppa) || defined (__hppa__) \ || defined (__pyr__) \ || defined (__ibm032__) \ || defined (_IBMR2) || defined (_ARCH_PPC) \ || defined (__sh__) \ || defined (__sparc) || defined (sparc) \ || defined (__we32k__) #define _GMP_IEEE_FLOATS 1 union ieee_double_extract { struct { unsigned int sig:1; unsigned int exp:11; unsigned int manh:20; unsigned int manl:32; } s; double d; }; #endif #endif #endif /* Using "(2.0 * ((mp_limb_t) 1 << (BITS_PER_MP_LIMB - 1)))" doesn't work on SunOS 4.1.4 native /usr/ucb/cc (K&R), it comes out as -4294967296.0, presumably due to treating the mp_limb_t constant as signed rather than unsigned. */ #define MP_BASE_AS_DOUBLE (4.0 * ((mp_limb_t) 1 << (BITS_PER_MP_LIMB - 2))) #if BITS_PER_MP_LIMB == 64 #define LIMBS_PER_DOUBLE 2 #else #define LIMBS_PER_DOUBLE 3 #endif double __gmp_scale2 _PROTO ((double, int)); int __gmp_extract_double _PROTO ((mp_ptr, double)); extern int __gmp_junk; extern __gmp_const int __gmp_0; #define GMP_ERROR(code) (gmp_errno |= (code), __gmp_junk = 10/__gmp_0) #define DIVIDE_BY_ZERO GMP_ERROR(GMP_ERROR_DIVISION_BY_ZERO) #define SQRT_OF_NEGATIVE GMP_ERROR(GMP_ERROR_SQRT_OF_NEGATIVE) #if defined _LONG_LONG_LIMB #if defined (__STDC__) #define CNST_LIMB(C) C##LL #else #define CNST_LIMB(C) C/**/LL #endif #else /* not _LONG_LONG_LIMB */ #if defined (__STDC__) #define CNST_LIMB(C) C##L #else #define CNST_LIMB(C) C/**/L #endif #endif /* _LONG_LONG_LIMB */ /*** Stuff used by mpn/generic/prefsqr.c and mpn/generic/next_prime.c ***/ #if BITS_PER_MP_LIMB == 32 #define PP 0xC0CFD797L /* 3 x 5 x 7 x 11 x 13 x ... x 29 */ #define PP_INVERTED 0x53E5645CL #define PP_MAXPRIME 29 #define PP_MASK 0x208A28A8L #endif #if BITS_PER_MP_LIMB == 64 #define PP CNST_LIMB(0xE221F97C30E94E1D) /* 3 x 5 x 7 x 11 x 13 x ... x 53 */ #define PP_INVERTED CNST_LIMB(0x21CFE6CFC938B36B) #define PP_MAXPRIME 53 #define PP_MASK CNST_LIMB(0x208A20A08A28A8) #endif /* BIT1 means a result value in bit 1 (second least significant bit), with a zero bit representing +1 and a one bit representing -1. Bits other than bit 1 are garbage. JACOBI_TWOS_U_BIT1 and JACOBI_RECIP_UU_BIT1 are used in mpn_jacobi_base and their speed is important. Expressions are used rather than conditionals to accumulate sign changes, which effectively means XORs instead of conditional JUMPs. */ /* (a/0), with a signed; is 1 if a=+/-1, 0 otherwise */ #define JACOBI_S0(a) \ (((a) == 1) | ((a) == -1)) /* (a/0), with a unsigned; is 1 if a=+/-1, 0 otherwise */ #define JACOBI_U0(a) \ ((a) == 1) /* (a/0), with a an mpz_t; is 1 if a=+/-1, 0 otherwise An mpz_t always has at least one limb of allocated space, so the fetch of the low limb is valid. */ #define JACOBI_Z0(a) \ (((SIZ(a) == 1) | (SIZ(a) == -1)) & (PTR(a)[0] == 1)) /* Convert a bit1 to +1 or -1. */ #define JACOBI_BIT1_TO_PN(result_bit1) \ (1 - ((result_bit1) & 2)) /* (2/b), with b unsigned and odd; is (-1)^((b^2-1)/8) which is 1 if b==1,7mod8 or -1 if b==3,5mod8 and hence obtained from (b>>1)^b */ #define JACOBI_TWO_U_BIT1(b) \ (ASSERT (b & 1), (((b) >> 1) ^ (b))) /* (2/b)^twos, with b unsigned and odd */ #define JACOBI_TWOS_U_BIT1(twos, b) \ (((twos) << 1) & JACOBI_TWO_U_BIT1 (b)) /* (2/b)^twos, with b unsigned and odd */ #define JACOBI_TWOS_U(twos, b) \ (JACOBI_BIT1_TO_PN (JACOBI_TWOS_U_BIT1 (twos, b))) /* (a/b) effect due to sign of a: signed/unsigned, b odd; is (-1)^((b-1)/2) if a<0, or +1 if a>=0 */ #define JACOBI_ASGN_SU_BIT1(a, b) \ ((((a) < 0) << 1) & (b)) /* (a/b) effect due to sign of b: signed/mpz; is -1 if a and b both negative, +1 otherwise */ #define JACOBI_BSGN_SZ_BIT1(a, b) \ ((((a) < 0) & (SIZ(b) < 0)) << 1) /* (a/b) effect due to sign of b: mpz/signed */ #define JACOBI_BSGN_ZS_BIT1(a, b) \ JACOBI_BSGN_SZ_BIT1(b, a) /* (a/b) reciprocity to switch to (b/a), a,b both unsigned and odd. Is (-1)^((a-1)*(b-1)/4), which means +1 if either a,b==1mod4 or -1 if both a,b==3mod4, achieved in bit 1 by a&b. No ASSERT()s about a,b odd because this is used in a couple of places with only bit 1 of a or b valid. */ #define JACOBI_RECIP_UU_BIT1(a, b) \ ((a) & (b)) /* For testing and debugging. */ #define MPZ_CHECK_FORMAT(z) \ (ASSERT_ALWAYS (SIZ(z) == 0 || PTR(z)[ABSIZ(z) - 1] != 0), \ ASSERT_ALWAYS (ALLOC(z) >= ABSIZ(z))) #define MPZ_PROVOKE_REALLOC(z) \ do { ALLOC(z) = ABSIZ(z); } while (0) #if TUNE_PROGRAM_BUILD /* Some extras wanted when recompiling some .c files for use by the tune program. Not part of a normal build. */ extern mp_size_t mul_threshold[]; extern mp_size_t fft_modf_mul_threshold; extern mp_size_t sqr_threshold[]; extern mp_size_t fft_modf_sqr_threshold; extern mp_size_t bz_threshold[]; extern mp_size_t fib_threshold[]; extern mp_size_t powm_threshold[]; extern mp_size_t gcd_accel_threshold[]; extern mp_size_t gcdext_threshold[]; #undef KARATSUBA_MUL_THRESHOLD #undef TOOM3_MUL_THRESHOLD #undef FFT_MUL_TABLE #undef FFT_MUL_THRESHOLD #undef FFT_MODF_MUL_THRESHOLD #undef KARATSUBA_SQR_THRESHOLD #undef TOOM3_SQR_THRESHOLD #undef FFT_SQR_TABLE #undef FFT_SQR_THRESHOLD #undef FFT_MODF_SQR_THRESHOLD #undef BZ_THRESHOLD #undef FIB_THRESHOLD #undef POWM_THRESHOLD #undef GCD_ACCEL_THRESHOLD #undef GCDEXT_THRESHOLD #define KARATSUBA_MUL_THRESHOLD mul_threshold[0] #define TOOM3_MUL_THRESHOLD mul_threshold[1] #define FFT_MUL_TABLE 0 #define FFT_MUL_THRESHOLD mul_threshold[2] #define FFT_MODF_MUL_THRESHOLD fft_modf_mul_threshold #define KARATSUBA_SQR_THRESHOLD sqr_threshold[0] #define TOOM3_SQR_THRESHOLD sqr_threshold[1] #define FFT_SQR_TABLE 0 #define FFT_SQR_THRESHOLD sqr_threshold[2] #define FFT_MODF_SQR_THRESHOLD fft_modf_sqr_threshold #define BZ_THRESHOLD bz_threshold[0] #define FIB_THRESHOLD fib_threshold[0] #define POWM_THRESHOLD powm_threshold[0] #define GCD_ACCEL_THRESHOLD gcd_accel_threshold[0] #define GCDEXT_THRESHOLD gcdext_threshold[0] #define TOOM3_MUL_THRESHOLD_LIMIT 700 #undef FFT_TABLE_ATTRS #define FFT_TABLE_ATTRS extern mp_size_t mpn_fft_table[2][MPN_FFT_TABLE_SIZE]; #endif /* TUNE_PROGRAM_BUILD */ /* Make sure random() and srandom() are defined. */ #if defined (__hpux) || defined (__alpha) || defined (__svr4__) || defined (__SVR4) /* HPUX lacks random(). DEC OSF/1 1.2 random() returns a double. */ long mrand48 (); static inline long random () { return mrand48 (); } #define srandom srand48 #elif defined(MS_VISUALCPP) /* Windows doesn't have random(), but rand() which returns an integer. */ static inline long random () { return rand(); } #define srandom srand #else extern long random _PROTO((void)); extern int srandom _PROTO((unsigned int)); #endif #if defined (__cplusplus) } #endif core++-1.7/win32/patches/gmp-3.1.1/gmp-mparam.h0100644000175000001440000000210107437361201020007 0ustar joachimusers/* gmp-mparam.h -- Compiler/machine parameter header file for Win32/x86. Copyright (C) 1991, 1993, 1994 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define BITS_PER_MP_LIMB 32 #define BYTES_PER_MP_LIMB 4 #define BITS_PER_LONGINT 32 #define BITS_PER_INT 32 #define BITS_PER_SHORTINT 16 #define BITS_PER_CHAR 8 core++-1.7/win32/patches/gmp-3.1.1/gmp.dsp0100644000175000001440000023526707437361201017120 0ustar joachimusers# Microsoft Developer Studio Project File - Name="gmp" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=gmp - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "gmp.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gmp.mak" CFG="gmp - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gmp - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "gmp - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "gmp - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /YX /FD /c # ADD CPP /nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x407 /d "NDEBUG" # ADD RSC /l 0x407 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1f100000" /version:3.1 /subsystem:windows /dll /map /machine:I386 /nodefaultlib:"libc" /out:"../lib/gmp.dll" /implib:"../lib/gmp.lib" # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /YX /FD /GZ /c # ADD CPP /nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /FD /GZ /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x407 /d "_DEBUG" # ADD RSC /l 0x407 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1F100000" /version:3.1 /subsystem:windows /dll /map /debug /debugtype:both /machine:I386 /nodefaultlib:"libc" /out:"../lib/gmpDebug.dll" /implib:"../lib/gmpDebug.lib" /pdbtype:sept # SUBTRACT LINK32 /pdb:none !ENDIF # Begin Target # Name "gmp - Win32 Release" # Name "gmp - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE="mpf\abs.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\abs.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\add.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\add.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpq\add.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\add.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\add_n.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpf\add_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\add_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\add_ulp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\addmul_1.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\addmul_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\addsub_n.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\agm.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpz\and.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\array_init.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="assert.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\bdivmod.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\bin_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\bin_uiui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\bz_divrem_n.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpq\canonicalize.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\cdiv_q.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\cdiv_q_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\cdiv_qr.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\cdiv_qr_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\cdiv_r.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\cdiv_r_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\cdiv_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\ceil.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpf\clear.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\clear.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpq\clear.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\clear.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\clrbit.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\cmp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\cmp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\cmp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpq\cmp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\cmp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\cmp_si.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\cmp_si.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\cmp_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\cmp_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpq\cmp_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\cmp_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\cmpabs.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\cmpabs_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\com.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="compat.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mpf\div.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\div.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpq\div.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpf\div_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\div_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpf\div_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\div_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\diveby3.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\divexact.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\divrem.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\divrem_1.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\divrem_2.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpf\dump.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\dump.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\dump.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\eq.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpq\equal.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="errno.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\exp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="extract-dbl.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fac_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fdiv_q.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fdiv_q_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fdiv_q_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fdiv_qr.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fdiv_qr_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fdiv_r.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fdiv_r_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fdiv_r_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fdiv_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fib_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fits_sint_p.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fits_slong_p.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fits_sshort_p.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fits_uint_p.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fits_ulong_p.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\fits_ushort_p.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\floor.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\gcd.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\gcd.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\gcd_1.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\gcd_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\gcdext.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\gcdext.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\get_d.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpq\get_d.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\get_d.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpq\get_den.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpq\get_num.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpf\get_prc.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\get_si.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\get_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\get_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\get_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\get_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\get_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\getlimbn.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\hamdist.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\hamdist.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\init.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\init.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpq\init.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\init.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\init2.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\inlines.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\inp_raw.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\inp_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\inp_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="insert-dbl.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mpf\integer.h" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpq\inv.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\invert.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\ior.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\iset.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\iset.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\iset_d.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\iset_d.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\iset_si.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\iset_si.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\iset_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\iset_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\iset_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\iset_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\jacbase.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\jacobi.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\karadiv.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\karasqrt.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpz\kronsz.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\kronuz.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\kronzs.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\kronzu.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\lcm.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\legendre.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\log.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\log2.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\lshift.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="memory.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mpz\mod.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\mod_1.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\mod_1_rs.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpn\mp_bases.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mp_bpl.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mp_clz_tab.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mp_minv_tab.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mp_set_fns.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mpf\mul.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\mul.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\mul.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpq\mul.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\mul.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\mul_1.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpf\mul_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\mul_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpz\mul_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\mul_basecase.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\mul_fft.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\mul_n.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\mul_si.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\mul_siui.h" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\mul_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\mul_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpz\mul_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\neg.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\neg.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpq\neg.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\neg.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\nextprime.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\out_raw.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\out_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\out_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpq\out_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\out_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\perfpow.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\perfsqr.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\perfsqr.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\pi.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\popcount.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\popcount.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\pow.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpf\pow_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\pow_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\powm.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\powm_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\pprime_p.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\pre_mod_1.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\print_raw.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\print_rnd_mode.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="rand.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="randclr.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="randlc.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="randlc2x.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\random.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\random.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\random.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\random2.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\random2.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\random2.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="randraw.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="randsd.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="randsdui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mpz\realloc.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\reldiff.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\remove.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\root.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\round.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpz\rrandomb.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\rshift.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\sb_divrem_mn.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\scan0.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\scan0.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\scan1.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\scan1.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\set.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\set.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpq\set.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\set.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\set_d.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\set_d.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpq\set_d.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\set_d.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpq\set_den.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpf\set_dfl_prec.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\set_dfl_prec.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\set_dfl_rnd.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\set_f.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpz\set_f.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpq\set_num.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpf\set_prc.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpf\set_prc_raw.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\set_prec.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpf\set_q.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\set_q.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\set_si.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\set_si.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpq\set_si.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\set_si.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\set_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\set_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\set_str.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\set_str_raw.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpf\set_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpq\set_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\set_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\set_z.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\set_z.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpq\set_z.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\setbit.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\size.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\size.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\sizeinbase.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\sqr_basecase.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpf\sqrt.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\sqrt.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpz\sqrt.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\sqrt_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\sqrtrem.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\sqrtrem.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="stack-alloc.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mpf\sub.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\sub.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpq\sub.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\sub.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\sub_n.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpf\sub_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\sub_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\submul_1.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpf\swap.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpq\swap.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE="mpz\swap.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\tdiv_q.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\tdiv_q_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\tdiv_q_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpn\generic\tdiv_qr.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE="mpz\tdiv_qr.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\tdiv_qr_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\tdiv_r.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\tdiv_r_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\tdiv_r_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\tdiv_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\trunc.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\tstbit.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\ui_div.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\ui_pow_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpf\ui_sub.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpf\urandomb.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE="mpz\urandomb.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpz\urandomm.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="version.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="win32dllstub.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mpz\xor.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\zeta.c" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE="config.h" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="gmp-impl.h" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="gmp-mparam.h" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="gmp.h" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="longlong.h" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mp.h" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\mpfr-impl.h" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="mpfr\mpfr.h" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpfr" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpfr" !ENDIF # End Source File # Begin Source File SOURCE="stack-alloc.h" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # Begin Source File SOURCE="urandom.h" !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/patches/gmp-3.1.1/gmp.dsw0100644000175000001440000000102107437361201017102 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "gmp"=.\gmp.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/patches/gmp-3.1.1/gmp.h0100644000175000001440000012660407437361201016553 0ustar joachimusers/* gmp.h -- Definitions for GNU multiple precision functions. Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __GMP_H__ #ifndef __GNU_MP__ /* to allow inclusion of both gmp.h and mp.h */ #define __GNU_MP__ 2 #define __need_size_t #include #undef __need_size_t #include #if defined (__mips) && defined (_ABIN32) /* Force the use of 64-bit limbs for all 64-bit MIPS CPUs if ABI permits. */ #define _LONG_LONG_LIMB #endif /* Instantiated by configure, for internal use only */ #if ! __GMP_WITHIN_CONFIGURE /* #undef _LONG_LONG_LIMB */ /* Whether static, shared or both has been built. */ #define __GMP_LIBGMP_STATIC 0 #define __GMP_LIBGMP_SHARED 1 #endif /* __GMP_DECLSPEC marks a function or variable for import or export for a windows DLL, or is empty on other systems. When building GMP, libtool gives us DLL_EXPORT when making objects that will go into a DLL and hence should have export directives. Notice DLL_EXPORT is only tested under __GMP_WITHIN_GMP, since if some other libtool based package is using gmp.h then DLL_EXPORT will be telling it what to do, not us. When compiling an application, __GMP_LIBGMP_SHARED indicates whether the installed GMP is a DLL or not. For a DLL we use import directives. There's no attempt here to support GMP installed both static and DLL, doing so would mean applications would have to tell us which of the two is going to be used, and that seems very tedious and error prone when using GMP by hand, and equally tedious from a package since autoconf and automake don't give much help. Note that __GMP_DECLSPEC is only wanted on documented global functions and variables. Internals in gmp-impl.h etc should be left unadorned and won't be visible to applications using a DLL. For testing on a non-windows system, __GMP_DECLSPEC can be set to __attribute__ ((section ("foo"))) or similar, and the resulting objects checked with readelf or whatever to see if all the expected globals have ended up with that attribute. PORTME: What does Borland use? */ #if defined (__GNUC__) || defined (_MSC_VER) #define __GMP_DECLSPEC_EXPORT __declspec(dllexport) #define __GMP_DECLSPEC_IMPORT __declspec(dllimport) #endif #ifdef __WATCOMC__ #define __GMP_DECLSPEC_EXPORT __export #define __GMP_DECLSPEC_IMPORT __import #endif #ifdef __IBMC__ #define __GMP_DECLSPEC_EXPORT _Export #define __GMP_DECLSPEC_IMPORT _Import #endif #if __GMP_WITHIN_GMP #ifdef DLL_EXPORT #define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT #endif #else #if defined (_WIN32) && __GMP_LIBGMP_SHARED #define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT #endif #endif #ifndef __GMP_DECLSPEC #define __GMP_DECLSPEC #endif #if (__STDC__-0) || defined (__cplusplus) #define __gmp_const const #define __gmp_signed signed #else #define __gmp_const #define __gmp_signed #endif #if defined (__GNUC__) #define __gmp_inline __inline__ #else #define __gmp_inline #endif #ifndef _EXTERN_INLINE #ifdef __GNUC__ #define _EXTERN_INLINE extern __inline__ #else #define _EXTERN_INLINE static #endif #endif #ifdef _SHORT_LIMB typedef unsigned int mp_limb_t; typedef int mp_limb_signed_t; #else #ifdef _LONG_LONG_LIMB typedef unsigned long long int mp_limb_t; typedef long long int mp_limb_signed_t; #else typedef unsigned long int mp_limb_t; typedef long int mp_limb_signed_t; #endif #endif typedef mp_limb_t * mp_ptr; typedef __gmp_const mp_limb_t * mp_srcptr; #if defined (_CRAY) && ! defined (_CRAYMPP) /* plain `int' is much faster (48 bits) */ typedef int mp_size_t; typedef int mp_exp_t; #else typedef long int mp_size_t; typedef long int mp_exp_t; #endif typedef struct { int _mp_alloc; /* Number of *limbs* allocated and pointed to by the _mp_d field. */ int _mp_size; /* abs(_mp_size) is the number of limbs the last field points to. If _mp_size is negative this is a negative number. */ mp_limb_t *_mp_d; /* Pointer to the limbs. */ } __mpz_struct; #endif /* __GNU_MP__ */ typedef __mpz_struct MP_INT; typedef __mpz_struct mpz_t[1]; typedef struct { __mpz_struct _mp_num; __mpz_struct _mp_den; } __mpq_struct; typedef __mpq_struct MP_RAT; typedef __mpq_struct mpq_t[1]; typedef struct { int _mp_prec; /* Max precision, in number of `mp_limb_t's. Set by mpf_init and modified by mpf_set_prec. The area pointed to by the _mp_d field contains `prec' + 1 limbs. */ int _mp_size; /* abs(_mp_size) is the number of limbs the last field points to. If _mp_size is negative this is a negative number. */ mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */ mp_limb_t *_mp_d; /* Pointer to the limbs. */ } __mpf_struct; /* typedef __mpf_struct MP_FLOAT; */ typedef __mpf_struct mpf_t[1]; /* Available random number generation algorithms. */ typedef enum { GMP_RAND_ALG_DEFAULT = 0, GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */ } gmp_randalg_t; /* Linear congruential data struct. */ typedef struct { mpz_t a; /* Multiplier. */ unsigned long int c; /* Adder. */ mpz_t m; /* Modulus (valid only if m2exp == 0). */ unsigned long int m2exp; /* If != 0, modulus is 2 ^ m2exp. */ } __gmp_randata_lc; /* Random state struct. */ typedef struct { mpz_t seed; /* Current seed. */ gmp_randalg_t alg; /* Algorithm used. */ union { /* Algorithm specific data. */ __gmp_randata_lc *lc; /* Linear congruential. */ } algdata; } __gmp_randstate_struct; typedef __gmp_randstate_struct gmp_randstate_t[1]; /* Types for function declarations in gmp files. */ /* ??? Should not pollute user name space with these ??? */ typedef __gmp_const __mpz_struct *mpz_srcptr; typedef __mpz_struct *mpz_ptr; typedef __gmp_const __mpf_struct *mpf_srcptr; typedef __mpf_struct *mpf_ptr; typedef __gmp_const __mpq_struct *mpq_srcptr; typedef __mpq_struct *mpq_ptr; #ifndef _PROTO #if (__STDC__-0) || defined (__cplusplus) #define _PROTO(x) x #else #define _PROTO(x) () #endif #endif #ifndef __MPN /* Really use `defined (__STDC__)' here; we want it to be true for Sun C */ #if defined (__STDC__) || defined (__cplusplus) || defined(_MSC_VER) #define __MPN(x) __gmpn_##x #else #define __MPN(x) __gmpn_/**/x #endif #endif #if defined (FILE) || defined (H_STDIO) || defined (_H_STDIO) \ || defined (_STDIO_H) || defined (_STDIO_H_) || defined (__STDIO_H__) \ || defined (_STDIO_INCLUDED) || defined (__dj_include_stdio_h_) #define _GMP_H_HAVE_FILE 1 #endif #if defined (__cplusplus) extern "C" { #endif #define mp_set_memory_functions __gmp_set_memory_functions void __GMP_DECLSPEC mp_set_memory_functions _PROTO ((void *(*) (size_t), void *(*) (void *, size_t, size_t), void (*) (void *, size_t))); #define mp_bits_per_limb __gmp_bits_per_limb extern __gmp_const int __GMP_DECLSPEC mp_bits_per_limb; #if defined (__cplusplus) } #endif /**************** Random number routines. ****************/ #define _gmp_rand __gmp_rand #define gmp_randinit __gmp_randinit #define gmp_randinit_lc __gmp_randinit_lc #define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp #define gmp_randseed __gmp_randseed #define gmp_randseed_ui __gmp_randseed_ui #define gmp_randclear __gmp_randclear #if defined (__cplusplus) extern "C" { #endif void __GMP_DECLSPEC _gmp_rand _PROTO ((mp_ptr, gmp_randstate_t, unsigned long int)); void __GMP_DECLSPEC gmp_randinit _PROTO ((gmp_randstate_t, gmp_randalg_t, ...)); void __GMP_DECLSPEC gmp_randinit_lc _PROTO ((gmp_randstate_t, mpz_t, unsigned long int, mpz_t)); void __GMP_DECLSPEC gmp_randinit_lc_2exp _PROTO ((gmp_randstate_t, mpz_t, unsigned long int, unsigned long int)); void __GMP_DECLSPEC gmp_randseed _PROTO ((gmp_randstate_t, mpz_t)); void __GMP_DECLSPEC gmp_randseed_ui _PROTO ((gmp_randstate_t, unsigned long int)); void __GMP_DECLSPEC gmp_randclear _PROTO ((gmp_randstate_t)); #if defined (__cplusplus) } #endif /**************** Integer (i.e. Z) routines. ****************/ #define _mpz_realloc __gmpz_realloc #define mpz_realloc __gmpz_realloc #define mpz_abs __gmpz_abs #define mpz_add __gmpz_add #define mpz_add_ui __gmpz_add_ui #define mpz_addmul_ui __gmpz_addmul_ui #define mpz_and __gmpz_and #define mpz_array_init __gmpz_array_init #define mpz_bin_ui __gmpz_bin_ui #define mpz_bin_uiui __gmpz_bin_uiui #define mpz_cdiv_q __gmpz_cdiv_q #define mpz_cdiv_q_ui __gmpz_cdiv_q_ui #define mpz_cdiv_qr __gmpz_cdiv_qr #define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui #define mpz_cdiv_r __gmpz_cdiv_r #define mpz_cdiv_r_ui __gmpz_cdiv_r_ui #define mpz_cdiv_ui __gmpz_cdiv_ui #define mpz_clear __gmpz_clear #define mpz_clrbit __gmpz_clrbit #define mpz_cmp __gmpz_cmp #define _mpz_cmp_si __gmpz_cmp_si #define _mpz_cmp_ui __gmpz_cmp_ui #define mpz_cmpabs __gmpz_cmpabs #define mpz_cmpabs_ui __gmpz_cmpabs_ui #define mpz_com __gmpz_com #define mpz_divexact __gmpz_divexact #define mpz_dump __gmpz_dump #define mpz_fac_ui __gmpz_fac_ui #define mpz_fdiv_q __gmpz_fdiv_q #define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp #define mpz_fdiv_q_ui __gmpz_fdiv_q_ui #define mpz_fdiv_qr __gmpz_fdiv_qr #define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui #define mpz_fdiv_r __gmpz_fdiv_r #define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp #define mpz_fdiv_r_ui __gmpz_fdiv_r_ui #define mpz_fdiv_ui __gmpz_fdiv_ui #define mpz_fib_ui __gmpz_fib_ui #define mpz_fits_sint_p __gmpz_fits_sint_p #define mpz_fits_slong_p __gmpz_fits_slong_p #define mpz_fits_sshort_p __gmpz_fits_sshort_p #define mpz_fits_uint_p __gmpz_fits_uint_p #define mpz_fits_ulong_p __gmpz_fits_ulong_p #define mpz_fits_ushort_p __gmpz_fits_ushort_p #define mpz_gcd __gmpz_gcd #define mpz_gcd_ui __gmpz_gcd_ui #define mpz_gcdext __gmpz_gcdext #define mpz_get_d __gmpz_get_d #define mpz_get_si __gmpz_get_si #define mpz_get_str __gmpz_get_str #define mpz_get_ui __gmpz_get_ui #define mpz_getlimbn __gmpz_getlimbn #define mpz_hamdist __gmpz_hamdist #define mpz_init __gmpz_init #define mpz_inp_binary __gmpz_inp_binary #define mpz_inp_raw __gmpz_inp_raw #define mpz_inp_str __gmpz_inp_str #define mpz_init_set __gmpz_init_set #define mpz_init_set_d __gmpz_init_set_d #define mpz_init_set_si __gmpz_init_set_si #define mpz_init_set_str __gmpz_init_set_str #define mpz_init_set_ui __gmpz_init_set_ui #define mpz_invert __gmpz_invert #define mpz_ior __gmpz_ior #define mpz_jacobi __gmpz_jacobi #define mpz_lcm __gmpz_lcm #define mpz_legendre __gmpz_legendre #define mpz_mod __gmpz_mod #define mpz_mul __gmpz_mul #define mpz_mul_2exp __gmpz_mul_2exp #define mpz_neg __gmpz_neg #define mpz_nextprime __gmpz_nextprime #define mpz_out_binary __gmpz_out_binary #define mpz_out_raw __gmpz_out_raw #define mpz_out_str __gmpz_out_str #define mpz_perfect_power_p __gmpz_perfect_power_p #define mpz_perfect_square_p __gmpz_perfect_square_p #define mpz_popcount __gmpz_popcount #define mpz_pow_ui __gmpz_pow_ui #define mpz_powm __gmpz_powm #define mpz_powm_ui __gmpz_powm_ui #define mpz_probab_prime_p __gmpz_probab_prime_p #define mpz_random __gmpz_random #define mpz_random2 __gmpz_random2 #define mpz_remove __gmpz_remove #define mpz_root __gmpz_root #define mpz_rrandomb __gmpz_rrandomb #define mpz_scan0 __gmpz_scan0 #define mpz_scan1 __gmpz_scan1 #define mpz_set __gmpz_set #define mpz_set_d __gmpz_set_d #define mpz_set_f __gmpz_set_f #define mpz_set_q __gmpz_set_q #define mpz_set_si __gmpz_set_si #define mpz_set_str __gmpz_set_str #define mpz_set_ui __gmpz_set_ui #define mpz_setbit __gmpz_setbit #define mpz_size __gmpz_size #define mpz_sizeinbase __gmpz_sizeinbase #define mpz_sqrt __gmpz_sqrt #define mpz_sqrtrem __gmpz_sqrtrem #define mpz_sub __gmpz_sub #define mpz_sub_ui __gmpz_sub_ui #define mpz_swap __gmpz_swap #define mpz_tdiv_ui __gmpz_tdiv_ui #define mpz_tdiv_q __gmpz_tdiv_q #define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp #define mpz_tdiv_q_ui __gmpz_tdiv_q_ui #define mpz_tdiv_qr __gmpz_tdiv_qr #define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui #define mpz_tdiv_r __gmpz_tdiv_r #define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp #define mpz_tdiv_r_ui __gmpz_tdiv_r_ui #define mpz_tstbit __gmpz_tstbit #define mpz_ui_pow_ui __gmpz_ui_pow_ui #define mpz_urandomb __gmpz_urandomb #define mpz_urandomm __gmpz_urandomm #define mpz_xor __gmpz_xor #define mpz_eor __gmpz_xor #if defined (__cplusplus) extern "C" { #endif void *_mpz_realloc _PROTO ((mpz_ptr, mp_size_t)); void __GMP_DECLSPEC mpz_abs _PROTO ((mpz_ptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_add _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_add_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_addmul_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_and _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_array_init _PROTO ((mpz_ptr, mp_size_t, mp_size_t)); void __GMP_DECLSPEC mpz_bin_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_bin_uiui _PROTO ((mpz_ptr, unsigned long int, unsigned long int)); void __GMP_DECLSPEC mpz_cdiv_q _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); unsigned long int __GMP_DECLSPEC mpz_cdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_cdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); unsigned long int __GMP_DECLSPEC mpz_cdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_cdiv_r _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); unsigned long int __GMP_DECLSPEC mpz_cdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); unsigned long int __GMP_DECLSPEC mpz_cdiv_ui _PROTO ((mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_clear _PROTO ((mpz_ptr)); void __GMP_DECLSPEC mpz_clrbit _PROTO ((mpz_ptr, unsigned long int)); int __GMP_DECLSPEC mpz_cmp _PROTO ((mpz_srcptr, mpz_srcptr)); int _mpz_cmp_si _PROTO ((mpz_srcptr, signed long int)); int _mpz_cmp_ui _PROTO ((mpz_srcptr, unsigned long int)); int __GMP_DECLSPEC mpz_cmpabs _PROTO ((mpz_srcptr, mpz_srcptr)); int __GMP_DECLSPEC mpz_cmpabs_ui _PROTO ((mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_com _PROTO ((mpz_ptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_divexact _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_dump _PROTO ((mpz_srcptr)); void __GMP_DECLSPEC mpz_fac_ui _PROTO ((mpz_ptr, unsigned long int)); void __GMP_DECLSPEC mpz_fdiv_q _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_fdiv_q_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); unsigned long int __GMP_DECLSPEC mpz_fdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_fdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); unsigned long int __GMP_DECLSPEC mpz_fdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_fdiv_r _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_fdiv_r_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); unsigned long int __GMP_DECLSPEC mpz_fdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); unsigned long int __GMP_DECLSPEC mpz_fdiv_ui _PROTO ((mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_fib_ui _PROTO ((mpz_ptr, unsigned long int)); int __GMP_DECLSPEC mpz_fits_sint_p _PROTO ((mpz_srcptr)); int __GMP_DECLSPEC mpz_fits_slong_p _PROTO ((mpz_srcptr)); int __GMP_DECLSPEC mpz_fits_sshort_p _PROTO ((mpz_srcptr)); int __GMP_DECLSPEC mpz_fits_uint_p _PROTO ((mpz_srcptr)); int __GMP_DECLSPEC mpz_fits_ulong_p _PROTO ((mpz_srcptr)); int __GMP_DECLSPEC mpz_fits_ushort_p _PROTO ((mpz_srcptr)); void __GMP_DECLSPEC mpz_gcd _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); unsigned long int __GMP_DECLSPEC mpz_gcd_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_gcdext _PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); double __GMP_DECLSPEC mpz_get_d _PROTO ((mpz_srcptr)); /* signed */ long int __GMP_DECLSPEC mpz_get_si _PROTO ((mpz_srcptr)); char __GMP_DECLSPEC *mpz_get_str _PROTO ((char *, int, mpz_srcptr)); unsigned long int __GMP_DECLSPEC mpz_get_ui _PROTO ((mpz_srcptr)); mp_limb_t __GMP_DECLSPEC mpz_getlimbn _PROTO ((mpz_srcptr, mp_size_t)); unsigned long int __GMP_DECLSPEC mpz_hamdist _PROTO ((mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_init _PROTO ((mpz_ptr)); #ifdef _GMP_H_HAVE_FILE size_t __GMP_DECLSPEC mpz_inp_binary _PROTO ((mpz_ptr, FILE *)); size_t __GMP_DECLSPEC mpz_inp_raw _PROTO ((mpz_ptr, FILE *)); size_t __GMP_DECLSPEC mpz_inp_str _PROTO ((mpz_ptr, FILE *, int)); #endif void __GMP_DECLSPEC mpz_init_set _PROTO ((mpz_ptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_init_set_d _PROTO ((mpz_ptr, double)); void __GMP_DECLSPEC mpz_init_set_si _PROTO ((mpz_ptr, signed long int)); int __GMP_DECLSPEC mpz_init_set_str _PROTO ((mpz_ptr, __gmp_const char *, int)); void __GMP_DECLSPEC mpz_init_set_ui _PROTO ((mpz_ptr, unsigned long int)); int __GMP_DECLSPEC mpz_invert _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_ior _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); int __GMP_DECLSPEC mpz_jacobi _PROTO ((mpz_srcptr, mpz_srcptr)); #define mpz_kronecker_si __gmpz_kronecker_si int __GMP_DECLSPEC mpz_kronecker_si _PROTO ((mpz_srcptr, long)); #define mpz_kronecker_ui __gmpz_kronecker_ui int __GMP_DECLSPEC mpz_kronecker_ui _PROTO ((mpz_srcptr, unsigned long)); #define mpz_si_kronecker __gmpz_si_kronecker int __GMP_DECLSPEC mpz_si_kronecker _PROTO ((long, mpz_srcptr)); #define mpz_ui_kronecker __gmpz_ui_kronecker int __GMP_DECLSPEC mpz_ui_kronecker _PROTO ((unsigned long, mpz_srcptr)); void __GMP_DECLSPEC mpz_lcm _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); int __GMP_DECLSPEC mpz_legendre _PROTO ((mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_mod _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_mul _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_mul_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_mul_si __gmpz_mul_si void __GMP_DECLSPEC mpz_mul_si _PROTO ((mpz_ptr, mpz_srcptr, long int)); #define mpz_mul_ui __gmpz_mul_ui void __GMP_DECLSPEC mpz_mul_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_neg _PROTO ((mpz_ptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_nextprime _PROTO ((mpz_ptr, mpz_srcptr)); #ifdef _GMP_H_HAVE_FILE size_t __GMP_DECLSPEC mpz_out_binary _PROTO ((FILE *, mpz_srcptr)); size_t __GMP_DECLSPEC mpz_out_raw _PROTO ((FILE *, mpz_srcptr)); size_t __GMP_DECLSPEC mpz_out_str _PROTO ((FILE *, int, mpz_srcptr)); #endif int __GMP_DECLSPEC mpz_perfect_power_p _PROTO ((mpz_srcptr)); int __GMP_DECLSPEC mpz_perfect_square_p _PROTO ((mpz_srcptr)); unsigned long int __GMP_DECLSPEC mpz_popcount _PROTO ((mpz_srcptr)); void __GMP_DECLSPEC mpz_pow_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_powm _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_powm_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr)); int __GMP_DECLSPEC mpz_probab_prime_p _PROTO ((mpz_srcptr, int)); void __GMP_DECLSPEC mpz_random _PROTO ((mpz_ptr, mp_size_t)); void __GMP_DECLSPEC mpz_random2 _PROTO ((mpz_ptr, mp_size_t)); unsigned long int __GMP_DECLSPEC mpz_remove _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); int __GMP_DECLSPEC mpz_root _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_rrandomb _PROTO ((mpz_ptr, gmp_randstate_t, unsigned long int)); unsigned long int __GMP_DECLSPEC mpz_scan0 _PROTO ((mpz_srcptr, unsigned long int)); unsigned long int __GMP_DECLSPEC mpz_scan1 _PROTO ((mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_set _PROTO ((mpz_ptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_set_d _PROTO ((mpz_ptr, double)); void __GMP_DECLSPEC mpz_set_f _PROTO ((mpz_ptr, mpf_srcptr)); void __GMP_DECLSPEC mpz_set_q _PROTO ((mpz_ptr, mpq_srcptr)); void __GMP_DECLSPEC mpz_set_si _PROTO ((mpz_ptr, signed long int)); int __GMP_DECLSPEC mpz_set_str _PROTO ((mpz_ptr, __gmp_const char *, int)); void __GMP_DECLSPEC mpz_set_ui _PROTO ((mpz_ptr, unsigned long int)); void __GMP_DECLSPEC mpz_setbit _PROTO ((mpz_ptr, unsigned long int)); size_t __GMP_DECLSPEC mpz_size _PROTO ((mpz_srcptr)); size_t __GMP_DECLSPEC mpz_sizeinbase _PROTO ((mpz_srcptr, int)); void __GMP_DECLSPEC mpz_sqrt _PROTO ((mpz_ptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_sqrtrem _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_sub _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_sub_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_swap _PROTO ((mpz_ptr, mpz_ptr)); void __GMP_DECLSPEC mpz_tdiv_q _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_tdiv_q_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); unsigned long int __GMP_DECLSPEC mpz_tdiv_ui _PROTO ((mpz_srcptr, unsigned long int)); unsigned long int __GMP_DECLSPEC mpz_tdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_tdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); unsigned long int __GMP_DECLSPEC mpz_tdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_tdiv_r _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); void __GMP_DECLSPEC mpz_tdiv_r_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); unsigned long int __GMP_DECLSPEC mpz_tdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); int __GMP_DECLSPEC mpz_tstbit _PROTO ((mpz_srcptr, unsigned long int)); void __GMP_DECLSPEC mpz_ui_pow_ui _PROTO ((mpz_ptr, unsigned long int, unsigned long int)); void __GMP_DECLSPEC mpz_urandomb _PROTO ((mpz_t, gmp_randstate_t, unsigned long int)); void __GMP_DECLSPEC mpz_urandomm _PROTO ((mpz_t, gmp_randstate_t, mpz_t)); void __GMP_DECLSPEC mpz_xor _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #if defined (__cplusplus) } #endif /**************** Rational (i.e. Q) routines. ****************/ #define mpq_init __gmpq_init #define mpq_clear __gmpq_clear #define mpq_set __gmpq_set #define mpq_set_ui __gmpq_set_ui #define mpq_set_si __gmpq_set_si #define mpq_set_z __gmpq_set_z #define mpq_add __gmpq_add #define mpq_sub __gmpq_sub #define mpq_mul __gmpq_mul #define mpq_div __gmpq_div #define mpq_neg __gmpq_neg #define mpq_cmp __gmpq_cmp #define _mpq_cmp_ui __gmpq_cmp_ui #define mpq_equal __gmpq_equal #define mpq_inv __gmpq_inv #define mpq_set_num __gmpq_set_num #define mpq_set_den __gmpq_set_den #define mpq_get_num __gmpq_get_num #define mpq_get_den __gmpq_get_den #define mpq_get_d __gmpq_get_d #define mpq_set_d __gmpq_set_d #define mpq_canonicalize __gmpq_canonicalize #if defined (__cplusplus) extern "C" { #endif void __GMP_DECLSPEC mpq_init _PROTO ((mpq_ptr)); void __GMP_DECLSPEC mpq_clear _PROTO ((mpq_ptr)); void __GMP_DECLSPEC mpq_set _PROTO ((mpq_ptr, mpq_srcptr)); void __GMP_DECLSPEC mpq_set_ui _PROTO ((mpq_ptr, unsigned long int, unsigned long int)); void __GMP_DECLSPEC mpq_set_si _PROTO ((mpq_ptr, signed long int, unsigned long int)); void __GMP_DECLSPEC mpq_set_z _PROTO ((mpq_ptr, mpz_srcptr)); void __GMP_DECLSPEC mpq_add _PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); void __GMP_DECLSPEC mpq_sub _PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); void __GMP_DECLSPEC mpq_mul _PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); void __GMP_DECLSPEC mpq_div _PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); void __GMP_DECLSPEC mpq_neg _PROTO ((mpq_ptr, mpq_srcptr)); int __GMP_DECLSPEC mpq_cmp _PROTO ((mpq_srcptr, mpq_srcptr)); int _mpq_cmp_ui _PROTO ((mpq_srcptr, unsigned long int, unsigned long int)); int __GMP_DECLSPEC mpq_equal _PROTO ((mpq_srcptr, mpq_srcptr)); void __GMP_DECLSPEC mpq_inv _PROTO ((mpq_ptr, mpq_srcptr)); void __GMP_DECLSPEC mpq_set_num _PROTO ((mpq_ptr, mpz_srcptr)); void __GMP_DECLSPEC mpq_set_den _PROTO ((mpq_ptr, mpz_srcptr)); void __GMP_DECLSPEC mpq_get_num _PROTO ((mpz_ptr, mpq_srcptr)); void __GMP_DECLSPEC mpq_get_den _PROTO ((mpz_ptr, mpq_srcptr)); double __GMP_DECLSPEC mpq_get_d _PROTO ((mpq_srcptr)); void __GMP_DECLSPEC mpq_set_d _PROTO ((mpq_ptr, double)); void __GMP_DECLSPEC mpq_canonicalize _PROTO ((mpq_ptr)); #define mpq_swap __gmpq_swap void __GMP_DECLSPEC mpq_swap _PROTO ((mpq_ptr, mpq_ptr)); #ifdef _GMP_H_HAVE_FILE #define mpq_out_str __gmpq_out_str size_t __GMP_DECLSPEC mpq_out_str _PROTO ((FILE *, int, mpq_srcptr)); #endif #if defined (__cplusplus) } #endif /**************** Float (i.e. F) routines. ****************/ #define mpf_abs __gmpf_abs #define mpf_add __gmpf_add #define mpf_add_ui __gmpf_add_ui #define mpf_ceil __gmpf_ceil #define mpf_clear __gmpf_clear #define mpf_cmp __gmpf_cmp #define mpf_cmp_si __gmpf_cmp_si #define mpf_cmp_ui __gmpf_cmp_ui #define mpf_div __gmpf_div #define mpf_div_2exp __gmpf_div_2exp #define mpf_div_ui __gmpf_div_ui #define mpf_dump __gmpf_dump #define mpf_floor __gmpf_floor #define mpf_eq __gmpf_eq #define mpf_get_d __gmpf_get_d #define mpf_get_prec __gmpf_get_prec #define mpf_get_str __gmpf_get_str #define mpf_init __gmpf_init #define mpf_init2 __gmpf_init2 #define mpf_inp_str __gmpf_inp_str #define mpf_init_set __gmpf_init_set #define mpf_init_set_d __gmpf_init_set_d #define mpf_init_set_si __gmpf_init_set_si #define mpf_init_set_str __gmpf_init_set_str #define mpf_init_set_ui __gmpf_init_set_ui #define mpf_mul __gmpf_mul #define mpf_mul_2exp __gmpf_mul_2exp #define mpf_mul_ui __gmpf_mul_ui #define mpf_neg __gmpf_neg #define mpf_out_str __gmpf_out_str #define mpf_pow_ui __gmpf_pow_ui #define mpf_random2 __gmpf_random2 #define mpf_reldiff __gmpf_reldiff #define mpf_set __gmpf_set #define mpf_set_d __gmpf_set_d #define mpf_set_default_prec __gmpf_set_default_prec #define mpf_set_prec __gmpf_set_prec #define mpf_set_prec_raw __gmpf_set_prec_raw #define mpf_set_q __gmpf_set_q #define mpf_set_si __gmpf_set_si #define mpf_set_str __gmpf_set_str #define mpf_set_ui __gmpf_set_ui #define mpf_set_z __gmpf_set_z #define mpf_size __gmpf_size #define mpf_sqrt __gmpf_sqrt #define mpf_sqrt_ui __gmpf_sqrt_ui #define mpf_sub __gmpf_sub #define mpf_sub_ui __gmpf_sub_ui #define mpf_trunc __gmpf_trunc #define mpf_ui_div __gmpf_ui_div #define mpf_ui_sub __gmpf_ui_sub #define mpf_urandomb __gmpf_urandomb #if defined (__cplusplus) extern "C" { #endif void __GMP_DECLSPEC mpf_abs _PROTO ((mpf_ptr, mpf_srcptr)); void __GMP_DECLSPEC mpf_add _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); void __GMP_DECLSPEC mpf_add_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); void __GMP_DECLSPEC mpf_ceil _PROTO ((mpf_ptr, mpf_srcptr)); void __GMP_DECLSPEC mpf_clear _PROTO ((mpf_ptr)); int __GMP_DECLSPEC mpf_cmp _PROTO ((mpf_srcptr, mpf_srcptr)); int __GMP_DECLSPEC mpf_cmp_si _PROTO ((mpf_srcptr, signed long int)); int __GMP_DECLSPEC mpf_cmp_ui _PROTO ((mpf_srcptr, unsigned long int)); void __GMP_DECLSPEC mpf_div _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); void __GMP_DECLSPEC mpf_div_2exp _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); void __GMP_DECLSPEC mpf_div_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); void __GMP_DECLSPEC mpf_dump _PROTO ((mpf_srcptr)); int __GMP_DECLSPEC mpf_eq _PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int)); void __GMP_DECLSPEC mpf_floor _PROTO ((mpf_ptr, mpf_srcptr)); double __GMP_DECLSPEC mpf_get_d _PROTO ((mpf_srcptr)); unsigned long int __GMP_DECLSPEC mpf_get_prec _PROTO ((mpf_srcptr)); char __GMP_DECLSPEC *mpf_get_str _PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr)); void __GMP_DECLSPEC mpf_init _PROTO ((mpf_ptr)); void __GMP_DECLSPEC mpf_init2 _PROTO ((mpf_ptr, unsigned long int)); #ifdef _GMP_H_HAVE_FILE size_t __GMP_DECLSPEC mpf_inp_str _PROTO ((mpf_ptr, FILE *, int)); #endif void __GMP_DECLSPEC mpf_init_set _PROTO ((mpf_ptr, mpf_srcptr)); void __GMP_DECLSPEC mpf_init_set_d _PROTO ((mpf_ptr, double)); void __GMP_DECLSPEC mpf_init_set_si _PROTO ((mpf_ptr, signed long int)); int __GMP_DECLSPEC mpf_init_set_str _PROTO ((mpf_ptr, __gmp_const char *, int)); void __GMP_DECLSPEC mpf_init_set_ui _PROTO ((mpf_ptr, unsigned long int)); void __GMP_DECLSPEC mpf_mul _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); void __GMP_DECLSPEC mpf_mul_2exp _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); void __GMP_DECLSPEC mpf_mul_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); void __GMP_DECLSPEC mpf_neg _PROTO ((mpf_ptr, mpf_srcptr)); #ifdef _GMP_H_HAVE_FILE size_t __GMP_DECLSPEC mpf_out_str _PROTO ((FILE *, int, size_t, mpf_srcptr)); #endif void __GMP_DECLSPEC mpf_pow_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); void __GMP_DECLSPEC mpf_random2 _PROTO ((mpf_ptr, mp_size_t, mp_exp_t)); void __GMP_DECLSPEC mpf_reldiff _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); void __GMP_DECLSPEC mpf_set _PROTO ((mpf_ptr, mpf_srcptr)); void __GMP_DECLSPEC mpf_set_d _PROTO ((mpf_ptr, double)); void __GMP_DECLSPEC mpf_set_default_prec _PROTO ((unsigned long int)); void __GMP_DECLSPEC mpf_set_prec _PROTO ((mpf_ptr, unsigned long int)); void __GMP_DECLSPEC mpf_set_prec_raw _PROTO ((mpf_ptr, unsigned long int)); void __GMP_DECLSPEC mpf_set_q _PROTO ((mpf_ptr, mpq_srcptr)); void __GMP_DECLSPEC mpf_set_si _PROTO ((mpf_ptr, signed long int)); int __GMP_DECLSPEC mpf_set_str _PROTO ((mpf_ptr, __gmp_const char *, int)); void __GMP_DECLSPEC mpf_set_ui _PROTO ((mpf_ptr, unsigned long int)); void __GMP_DECLSPEC mpf_set_z _PROTO ((mpf_ptr, mpz_srcptr)); size_t __GMP_DECLSPEC mpf_size _PROTO ((mpf_srcptr)); void __GMP_DECLSPEC mpf_sqrt _PROTO ((mpf_ptr, mpf_srcptr)); void __GMP_DECLSPEC mpf_sqrt_ui _PROTO ((mpf_ptr, unsigned long int)); void __GMP_DECLSPEC mpf_sub _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); void __GMP_DECLSPEC mpf_sub_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); void __GMP_DECLSPEC mpf_trunc _PROTO ((mpf_ptr, mpf_srcptr)); void __GMP_DECLSPEC mpf_ui_div _PROTO ((mpf_ptr, unsigned long int, mpf_srcptr)); void __GMP_DECLSPEC mpf_ui_sub _PROTO ((mpf_ptr, unsigned long int, mpf_srcptr)); void __GMP_DECLSPEC mpf_urandomb _PROTO ((mpf_t, gmp_randstate_t, unsigned long int)); #define mpf_swap __gmpf_swap void __GMP_DECLSPEC mpf_swap _PROTO ((mpf_ptr, mpf_ptr)); #if defined (__cplusplus) } #endif /************ Low level positive-integer (i.e. N) routines. ************/ /* This is ugly, but we need to make user calls reach the prefixed function. */ #define mpn_add __MPN(add) #define mpn_add_1 __MPN(add_1) #define mpn_add_n __MPN(add_n) #define mpn_add_nc __MPN(add_nc) #define mpn_addmul_1 __MPN(addmul_1) #define mpn_addsub_n __MPN(addsub_n) #define mpn_addsub_nc __MPN(addsub_nc) /* #define mpn_and_n __MPN(and_n) */ /* #define mpn_andn_n __MPN(andn_n) */ #define mpn_bdivmod __MPN(bdivmod) #define mpn_cmp __MPN(cmp) /* #define mpn_com_n __MPN(com_n) */ #define mpn_copyd __MPN(copyd) #define mpn_copyi __MPN(copyi) #define mpn_divrem __MPN(divrem) #define mpn_divrem_1 __MPN(divrem_1) #define mpn_divrem_2 __MPN(divrem_2) #define mpn_dump __MPN(dump) #define mpn_gcd __MPN(gcd) #define mpn_gcd_1 __MPN(gcd_1) #define mpn_gcdext __MPN(gcdext) #define mpn_get_str __MPN(get_str) #define mpn_hamdist __MPN(hamdist) #define mpn_invert_limb __MPN(invert_limb) /* #define mpn_ior_n __MPN(ior_n) */ /* #define mpn_iorn_n __MPN(iorn_n) */ /* #define mpn_kara_mul_n __MPN(kara_mul_n) internal */ /* #define mpn_kara_sqr_n __MPN(kara_sqr_n) internal */ #define mpn_lshift __MPN(lshift) #define mpn_lshiftc __MPN(lshiftc) #define mpn_mod_1 __MPN(mod_1) #define mpn_mul __MPN(mul) #define mpn_mul_1 __MPN(mul_1) #define mpn_mul_basecase __MPN(mul_basecase) #define mpn_mul_n __MPN(mul_n) #define mpn_perfect_square_p __MPN(perfect_square_p) #define mpn_popcount __MPN(popcount) #define mpn_preinv_mod_1 __MPN(preinv_mod_1) /* #define mpn_nand_n __MPN(nand_n) */ /* #define mpn_nior_n __MPN(nior_n) */ #define mpn_random __MPN(random) #define mpn_random2 __MPN(random2) #define mpn_rshift __MPN(rshift) #define mpn_rshiftc __MPN(rshiftc) #define mpn_scan0 __MPN(scan0) #define mpn_scan1 __MPN(scan1) #define mpn_set_str __MPN(set_str) #define mpn_sqr_basecase __MPN(sqr_basecase) #define mpn_sqr_n __MPN(sqr_n) #define mpn_sqrtrem __MPN(sqrtrem) #define mpn_sub __MPN(sub) #define mpn_sub_1 __MPN(sub_1) #define mpn_sub_n __MPN(sub_n) #define mpn_sub_nc __MPN(sub_nc) #define mpn_submul_1 __MPN(submul_1) /* #define mpn_toom3_mul_n __MPN(toom3_mul_n) internal */ /* #define mpn_toom3_sqr_n __MPN(toom3_sqr_n) internal */ /* #define mpn_xnor_n __MPN(xnor_n) */ /* #define mpn_xor_n __MPN(xor_n) */ #if defined (__cplusplus) extern "C" { #endif mp_limb_t __GMP_DECLSPEC mpn_add _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); mp_limb_t __GMP_DECLSPEC mpn_add_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); mp_limb_t __GMP_DECLSPEC mpn_add_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); mp_limb_t __GMP_DECLSPEC mpn_add_nc _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t, mp_limb_t)); mp_limb_t __GMP_DECLSPEC mpn_addmul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_addmul_1c __MPN(addmul_1c) mp_limb_t __GMP_DECLSPEC mpn_addmul_1c _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)); mp_limb_t __GMP_DECLSPEC mpn_addsub_n _PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); mp_limb_t __GMP_DECLSPEC mpn_bdivmod _PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, unsigned long int)); int __GMP_DECLSPEC mpn_cmp _PROTO ((mp_srcptr, mp_srcptr, mp_size_t)); #define mpn_divexact_by3(dst, src, size) mpn_divexact_by3c (dst, src, size, 0) #define mpn_divexact_by3c __MPN(divexact_by3c) mp_limb_t __GMP_DECLSPEC mpn_divexact_by3c _PROTO ((mp_ptr dst, mp_srcptr src, mp_size_t size, mp_limb_t carry)); #define mpn_divmod_1(qp,np,nsize,dlimb) mpn_divrem_1 (qp,0,np,nsize,dlimb) mp_limb_t __GMP_DECLSPEC mpn_divrem _PROTO((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t)); mp_limb_t __GMP_DECLSPEC mpn_divrem_1 _PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_divrem_1c __MPN(divrem_1c) mp_limb_t __GMP_DECLSPEC mpn_divrem_1c _PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)); mp_limb_t __GMP_DECLSPEC mpn_divrem_2 _PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr)); void __GMP_DECLSPEC mpn_dump _PROTO ((mp_srcptr, mp_size_t)); mp_size_t __GMP_DECLSPEC mpn_gcd _PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); mp_limb_t __GMP_DECLSPEC mpn_gcd_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb_t)); mp_size_t __GMP_DECLSPEC mpn_gcdext _PROTO ((mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); size_t __GMP_DECLSPEC mpn_get_str _PROTO ((unsigned char *, int, mp_ptr, mp_size_t)); unsigned long int __GMP_DECLSPEC mpn_hamdist _PROTO ((mp_srcptr, mp_srcptr, mp_size_t)); #define mpn_jacobi_base __MPN(jacobi_base) int __GMP_DECLSPEC mpn_jacobi_base _PROTO ((mp_limb_t a, mp_limb_t b, int result_bit1)); mp_limb_t __GMP_DECLSPEC mpn_lshift _PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); mp_limb_t __GMP_DECLSPEC mpn_mod_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_mod_1c __MPN(mod_1c) mp_limb_t __GMP_DECLSPEC mpn_mod_1c _PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)); #define mpn_mod_1_rshift __MPN(mod_1_rshift) mp_limb_t __GMP_DECLSPEC mpn_mod_1_rshift _PROTO ((mp_srcptr, mp_size_t, unsigned,mp_limb_t)); mp_limb_t __GMP_DECLSPEC mpn_mul _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); mp_limb_t __GMP_DECLSPEC mpn_mul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_mul_1c __MPN(mul_1c) mp_limb_t __GMP_DECLSPEC mpn_mul_1c _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)); void __GMP_DECLSPEC mpn_mul_basecase _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); void __GMP_DECLSPEC mpn_mul_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); int __GMP_DECLSPEC mpn_perfect_square_p _PROTO ((mp_srcptr, mp_size_t)); unsigned long int __GMP_DECLSPEC mpn_popcount _PROTO ((mp_srcptr, mp_size_t)); mp_limb_t __GMP_DECLSPEC mpn_preinv_mod_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)); void __GMP_DECLSPEC mpn_random _PROTO ((mp_ptr, mp_size_t)); void __GMP_DECLSPEC mpn_random2 _PROTO ((mp_ptr, mp_size_t)); mp_limb_t __GMP_DECLSPEC mpn_rshift _PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); unsigned long int __GMP_DECLSPEC mpn_scan0 _PROTO ((mp_srcptr, unsigned long int)); unsigned long int __GMP_DECLSPEC mpn_scan1 _PROTO ((mp_srcptr, unsigned long int)); mp_size_t __GMP_DECLSPEC mpn_set_str _PROTO ((mp_ptr, __gmp_const unsigned char *, size_t, int)); void __GMP_DECLSPEC mpn_sqr_n _PROTO ((mp_ptr, mp_srcptr, mp_size_t)); void __GMP_DECLSPEC mpn_sqr_basecase _PROTO ((mp_ptr, mp_srcptr, mp_size_t)); mp_size_t __GMP_DECLSPEC mpn_sqrtrem _PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t)); mp_limb_t __GMP_DECLSPEC mpn_sub _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); mp_limb_t __GMP_DECLSPEC mpn_sub_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); mp_limb_t __GMP_DECLSPEC mpn_sub_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); mp_limb_t __GMP_DECLSPEC mpn_sub_nc _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t, mp_limb_t)); mp_limb_t __GMP_DECLSPEC mpn_submul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_submul_1c __MPN(submul_1c) mp_limb_t __GMP_DECLSPEC mpn_submul_1c _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)); #define mpn_tdiv_qr __MPN(tdiv_qr) void __GMP_DECLSPEC mpn_tdiv_qr _PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); #if defined (__cplusplus) } #endif #define mpn_incr_u(p,incr) \ do { mp_limb_t __x; mp_ptr __p = p; \ __x = *__p + incr; \ *__p = __x; \ if (__x < incr) \ while (++(*(++__p)) == 0) \ ; \ } while (0) #define mpn_decr_u(p,incr) \ do { mp_limb_t __x; mp_ptr __p = p; \ __x = *__p; \ *__p = __x - incr; \ if (__x < incr) \ while ((*(++__p))-- == 0) \ ; \ } while (0) #if defined (__GNUC__) || defined (_FORCE_INLINES) _EXTERN_INLINE mp_limb_t #if (__STDC__-0) || defined (__cplusplus) mpn_add_1 (register mp_ptr res_ptr, register mp_srcptr s1_ptr, register mp_size_t s1_size, register mp_limb_t s2_limb) #else mpn_add_1 (res_ptr, s1_ptr, s1_size, s2_limb) register mp_ptr res_ptr; register mp_srcptr s1_ptr; register mp_size_t s1_size; register mp_limb_t s2_limb; #endif { register mp_limb_t x; x = *s1_ptr++; s2_limb = x + s2_limb; *res_ptr++ = s2_limb; if (s2_limb < x) { while (--s1_size != 0) { x = *s1_ptr++ + 1; *res_ptr++ = x; if (x != 0) goto fin; } return 1; } fin: if (res_ptr != s1_ptr) { mp_size_t i; for (i = 0; i < s1_size - 1; i++) res_ptr[i] = s1_ptr[i]; } return 0; } _EXTERN_INLINE mp_limb_t #if (__STDC__-0) || defined (__cplusplus) mpn_add (register mp_ptr res_ptr, register mp_srcptr s1_ptr, register mp_size_t s1_size, register mp_srcptr s2_ptr, register mp_size_t s2_size) #else mpn_add (res_ptr, s1_ptr, s1_size, s2_ptr, s2_size) register mp_ptr res_ptr; register mp_srcptr s1_ptr; register mp_size_t s1_size; register mp_srcptr s2_ptr; register mp_size_t s2_size; #endif { mp_limb_t cy_limb = 0; if (s2_size != 0) cy_limb = mpn_add_n (res_ptr, s1_ptr, s2_ptr, s2_size); if (s1_size - s2_size != 0) cy_limb = mpn_add_1 (res_ptr + s2_size, s1_ptr + s2_size, s1_size - s2_size, cy_limb); return cy_limb; } _EXTERN_INLINE mp_limb_t #if (__STDC__-0) || defined (__cplusplus) mpn_sub_1 (register mp_ptr res_ptr, register mp_srcptr s1_ptr, register mp_size_t s1_size, register mp_limb_t s2_limb) #else mpn_sub_1 (res_ptr, s1_ptr, s1_size, s2_limb) register mp_ptr res_ptr; register mp_srcptr s1_ptr; register mp_size_t s1_size; register mp_limb_t s2_limb; #endif { register mp_limb_t x; x = *s1_ptr++; s2_limb = x - s2_limb; *res_ptr++ = s2_limb; if (s2_limb > x) { while (--s1_size != 0) { x = *s1_ptr++; *res_ptr++ = x - 1; if (x != 0) goto fin; } return 1; } fin: if (res_ptr != s1_ptr) { mp_size_t i; for (i = 0; i < s1_size - 1; i++) res_ptr[i] = s1_ptr[i]; } return 0; } _EXTERN_INLINE mp_limb_t #if (__STDC__-0) || defined (__cplusplus) mpn_sub (register mp_ptr res_ptr, register mp_srcptr s1_ptr, register mp_size_t s1_size, register mp_srcptr s2_ptr, register mp_size_t s2_size) #else mpn_sub (res_ptr, s1_ptr, s1_size, s2_ptr, s2_size) register mp_ptr res_ptr; register mp_srcptr s1_ptr; register mp_size_t s1_size; register mp_srcptr s2_ptr; register mp_size_t s2_size; #endif { mp_limb_t cy_limb = 0; if (s2_size != 0) cy_limb = mpn_sub_n (res_ptr, s1_ptr, s2_ptr, s2_size); if (s1_size - s2_size != 0) cy_limb = mpn_sub_1 (res_ptr + s2_size, s1_ptr + s2_size, s1_size - s2_size, cy_limb); return cy_limb; } #endif /* __GNUC__ */ /* Allow faster testing for negative, zero, and positive. */ #define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0) #define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0) #define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0) /* When using GCC, optimize certain common comparisons. */ #if defined (__GNUC__) #define mpz_cmp_ui(Z,UI) \ (__builtin_constant_p (UI) && (UI) == 0 \ ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI)) #define mpz_cmp_si(Z,SI) \ (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z) \ : __builtin_constant_p (SI) && (SI) > 0 \ ? _mpz_cmp_ui (Z, (unsigned long int) SI) \ : _mpz_cmp_si (Z,SI)) #define mpq_cmp_ui(Q,NUI,DUI) \ (__builtin_constant_p (NUI) && (NUI) == 0 \ ? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI)) #else #define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI) #define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI) #define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI) #endif /* Using "&" rather than "&&" means these can come out branch-free. Every mpz_t has at least one limb allocated, so fetching the low limb is always allowed. */ #define mpz_odd_p(z) ((int) ((z)->_mp_size != 0) & (int) (z)->_mp_d[0]) #define mpz_even_p(z) (! mpz_odd_p (z)) /* Allow direct user access to numerator and denominator of a mpq_t object. */ #define mpq_numref(Q) (&((Q)->_mp_num)) #define mpq_denref(Q) (&((Q)->_mp_den)) /* Compatibility with GMP 2 and earlier. */ #define mpn_divmod(qp,np,nsize,dp,dsize) mpn_divrem (qp,0,np,nsize,dp,dsize) /* Compatibility with GMP 1. */ #define mpz_mdiv mpz_fdiv_q #define mpz_mdivmod mpz_fdiv_qr #define mpz_mmod mpz_fdiv_r #define mpz_mdiv_ui mpz_fdiv_q_ui #define mpz_mdivmod_ui(q,r,n,d) \ ((r == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d)) #define mpz_mmod_ui(r,n,d) \ ((r == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d)) /* Useful synonyms, but not quite compatible with GMP 1. */ #define mpz_div mpz_fdiv_q #define mpz_divmod mpz_fdiv_qr #define mpz_div_ui mpz_fdiv_q_ui #define mpz_divmod_ui mpz_fdiv_qr_ui #define mpz_mod_ui mpz_fdiv_r_ui #define mpz_div_2exp mpz_fdiv_q_2exp #define mpz_mod_2exp mpz_fdiv_r_2exp #define gmp_errno __gmp_errno int __GMP_DECLSPEC gmp_errno; enum { GMP_ERROR_NONE = 0, GMP_ERROR_UNSUPPORTED_ARGUMENT = 1, GMP_ERROR_DIVISION_BY_ZERO = 2, GMP_ERROR_SQRT_OF_NEGATIVE = 4, GMP_ERROR_INVALID_ARGUMENT = 8, GMP_ERROR_ALLOCATE = 16, GMP_ERROR_BAD_STRING = 32, GMP_ERROR_UNUSED_ERROR }; /* Note: major version number is in mp.h too */ #define __GNU_MP_VERSION 3 #define __GNU_MP_VERSION_MINOR 1 #define __GNU_MP_VERSION_PATCHLEVEL 1 #define gmp_version __gmp_version __gmp_const char __GMP_DECLSPEC *gmp_version; #define __GMP_H__ #endif /* __GMP_H__ */ core++-1.7/win32/patches/gmp-3.1.1/gmp.mak0100644000175000001440000075442307437361201017102 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on gmp.dsp !IF "$(CFG)" == "" CFG=gmp - Win32 Debug !MESSAGE No configuration specified. Defaulting to gmp - Win32 Debug. !ENDIF !IF "$(CFG)" != "gmp - Win32 Release" && "$(CFG)" != "gmp - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gmp.mak" CFG="gmp - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gmp - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "gmp - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "gmp - Win32 Release" OUTDIR=.\Release INTDIR=.\Release ALL : "..\lib\gmp.dll" CLEAN : -@erase "$(INTDIR)\mpf\vc60.idb" -@erase "$(INTDIR)\mpfr\vc60.idb" -@erase "$(INTDIR)\mpn\vc60.idb" -@erase "$(INTDIR)\mpq\vc60.idb" -@erase "$(INTDIR)\mpz\vc60.idb" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\gmp.map" -@erase "..\lib\gmp.dll" -@erase "..\lib\gmp.exp" -@erase "..\lib\gmp.lib" -@erase ".\Release\assert.obj" -@erase ".\Release\compat.obj" -@erase ".\Release\errno.obj" -@erase ".\Release\extract-dbl.obj" -@erase ".\Release\insert-dbl.obj" -@erase ".\Release\memory.obj" -@erase ".\Release\mp_bpl.obj" -@erase ".\Release\mp_clz_tab.obj" -@erase ".\Release\mp_minv_tab.obj" -@erase ".\Release\mp_set_fns.obj" -@erase ".\Release\mpf\abs.obj" -@erase ".\Release\mpf\add.obj" -@erase ".\Release\mpf\add_ui.obj" -@erase ".\Release\mpf\ceil.obj" -@erase ".\Release\mpf\clear.obj" -@erase ".\Release\mpf\cmp.obj" -@erase ".\Release\mpf\cmp_si.obj" -@erase ".\Release\mpf\cmp_ui.obj" -@erase ".\Release\mpf\div.obj" -@erase ".\Release\mpf\div_2exp.obj" -@erase ".\Release\mpf\div_ui.obj" -@erase ".\Release\mpf\dump.obj" -@erase ".\Release\mpf\eq.obj" -@erase ".\Release\mpf\floor.obj" -@erase ".\Release\mpf\get_d.obj" -@erase ".\Release\mpf\get_prc.obj" -@erase ".\Release\mpf\get_str.obj" -@erase ".\Release\mpf\init.obj" -@erase ".\Release\mpf\init2.obj" -@erase ".\Release\mpf\inp_str.obj" -@erase ".\Release\mpf\iset.obj" -@erase ".\Release\mpf\iset_d.obj" -@erase ".\Release\mpf\iset_si.obj" -@erase ".\Release\mpf\iset_str.obj" -@erase ".\Release\mpf\iset_ui.obj" -@erase ".\Release\mpf\mul.obj" -@erase ".\Release\mpf\mul_2exp.obj" -@erase ".\Release\mpf\mul_ui.obj" -@erase ".\Release\mpf\neg.obj" -@erase ".\Release\mpf\out_str.obj" -@erase ".\Release\mpf\pow_ui.obj" -@erase ".\Release\mpf\random2.obj" -@erase ".\Release\mpf\reldiff.obj" -@erase ".\Release\mpf\set.obj" -@erase ".\Release\mpf\set_d.obj" -@erase ".\Release\mpf\set_dfl_prec.obj" -@erase ".\Release\mpf\set_prc.obj" -@erase ".\Release\mpf\set_prc_raw.obj" -@erase ".\Release\mpf\set_q.obj" -@erase ".\Release\mpf\set_si.obj" -@erase ".\Release\mpf\set_str.obj" -@erase ".\Release\mpf\set_ui.obj" -@erase ".\Release\mpf\set_z.obj" -@erase ".\Release\mpf\size.obj" -@erase ".\Release\mpf\sqrt.obj" -@erase ".\Release\mpf\sqrt_ui.obj" -@erase ".\Release\mpf\sub.obj" -@erase ".\Release\mpf\sub_ui.obj" -@erase ".\Release\mpf\swap.obj" -@erase ".\Release\mpf\trunc.obj" -@erase ".\Release\mpf\ui_div.obj" -@erase ".\Release\mpf\ui_sub.obj" -@erase ".\Release\mpf\urandomb.obj" -@erase ".\Release\mpfr\add.obj" -@erase ".\Release\mpfr\add_ulp.obj" -@erase ".\Release\mpfr\agm.obj" -@erase ".\Release\mpfr\clear.obj" -@erase ".\Release\mpfr\cmp.obj" -@erase ".\Release\mpfr\cmp_ui.obj" -@erase ".\Release\mpfr\div.obj" -@erase ".\Release\mpfr\div_2exp.obj" -@erase ".\Release\mpfr\div_ui.obj" -@erase ".\Release\mpfr\exp.obj" -@erase ".\Release\mpfr\get_str.obj" -@erase ".\Release\mpfr\init.obj" -@erase ".\Release\mpfr\karadiv.obj" -@erase ".\Release\mpfr\karasqrt.obj" -@erase ".\Release\mpfr\log.obj" -@erase ".\Release\mpfr\log2.obj" -@erase ".\Release\mpfr\mul.obj" -@erase ".\Release\mpfr\mul_2exp.obj" -@erase ".\Release\mpfr\mul_ui.obj" -@erase ".\Release\mpfr\neg.obj" -@erase ".\Release\mpfr\out_str.obj" -@erase ".\Release\mpfr\pi.obj" -@erase ".\Release\mpfr\pow.obj" -@erase ".\Release\mpfr\print_raw.obj" -@erase ".\Release\mpfr\print_rnd_mode.obj" -@erase ".\Release\mpfr\random.obj" -@erase ".\Release\mpfr\round.obj" -@erase ".\Release\mpfr\set.obj" -@erase ".\Release\mpfr\set_d.obj" -@erase ".\Release\mpfr\set_dfl_prec.obj" -@erase ".\Release\mpfr\set_dfl_rnd.obj" -@erase ".\Release\mpfr\set_f.obj" -@erase ".\Release\mpfr\set_prec.obj" -@erase ".\Release\mpfr\set_si.obj" -@erase ".\Release\mpfr\set_str_raw.obj" -@erase ".\Release\mpfr\set_z.obj" -@erase ".\Release\mpfr\sqrt.obj" -@erase ".\Release\mpfr\sub.obj" -@erase ".\Release\mpfr\zeta.obj" -@erase ".\Release\mpn\add_n.obj" -@erase ".\Release\mpn\addmul_1.obj" -@erase ".\Release\mpn\addsub_n.obj" -@erase ".\Release\mpn\bdivmod.obj" -@erase ".\Release\mpn\bz_divrem_n.obj" -@erase ".\Release\mpn\cmp.obj" -@erase ".\Release\mpn\diveby3.obj" -@erase ".\Release\mpn\divrem.obj" -@erase ".\Release\mpn\divrem_1.obj" -@erase ".\Release\mpn\divrem_2.obj" -@erase ".\Release\mpn\dump.obj" -@erase ".\Release\mpn\gcd.obj" -@erase ".\Release\mpn\gcd_1.obj" -@erase ".\Release\mpn\gcdext.obj" -@erase ".\Release\mpn\get_str.obj" -@erase ".\Release\mpn\hamdist.obj" -@erase ".\Release\mpn\inlines.obj" -@erase ".\Release\mpn\jacbase.obj" -@erase ".\Release\mpn\lshift.obj" -@erase ".\Release\mpn\mod_1.obj" -@erase ".\Release\mpn\mod_1_rs.obj" -@erase ".\Release\mpn\mp_bases.obj" -@erase ".\Release\mpn\mul.obj" -@erase ".\Release\mpn\mul_1.obj" -@erase ".\Release\mpn\mul_basecase.obj" -@erase ".\Release\mpn\mul_fft.obj" -@erase ".\Release\mpn\mul_n.obj" -@erase ".\Release\mpn\perfsqr.obj" -@erase ".\Release\mpn\popcount.obj" -@erase ".\Release\mpn\pre_mod_1.obj" -@erase ".\Release\mpn\random.obj" -@erase ".\Release\mpn\random2.obj" -@erase ".\Release\mpn\rshift.obj" -@erase ".\Release\mpn\sb_divrem_mn.obj" -@erase ".\Release\mpn\scan0.obj" -@erase ".\Release\mpn\scan1.obj" -@erase ".\Release\mpn\set_str.obj" -@erase ".\Release\mpn\sqr_basecase.obj" -@erase ".\Release\mpn\sqrtrem.obj" -@erase ".\Release\mpn\sub_n.obj" -@erase ".\Release\mpn\submul_1.obj" -@erase ".\Release\mpn\tdiv_qr.obj" -@erase ".\Release\mpq\add.obj" -@erase ".\Release\mpq\canonicalize.obj" -@erase ".\Release\mpq\clear.obj" -@erase ".\Release\mpq\cmp.obj" -@erase ".\Release\mpq\cmp_ui.obj" -@erase ".\Release\mpq\div.obj" -@erase ".\Release\mpq\equal.obj" -@erase ".\Release\mpq\get_d.obj" -@erase ".\Release\mpq\get_den.obj" -@erase ".\Release\mpq\get_num.obj" -@erase ".\Release\mpq\init.obj" -@erase ".\Release\mpq\inv.obj" -@erase ".\Release\mpq\mul.obj" -@erase ".\Release\mpq\neg.obj" -@erase ".\Release\mpq\out_str.obj" -@erase ".\Release\mpq\set.obj" -@erase ".\Release\mpq\set_d.obj" -@erase ".\Release\mpq\set_den.obj" -@erase ".\Release\mpq\set_num.obj" -@erase ".\Release\mpq\set_si.obj" -@erase ".\Release\mpq\set_ui.obj" -@erase ".\Release\mpq\set_z.obj" -@erase ".\Release\mpq\sub.obj" -@erase ".\Release\mpq\swap.obj" -@erase ".\Release\mpz\abs.obj" -@erase ".\Release\mpz\add.obj" -@erase ".\Release\mpz\add_ui.obj" -@erase ".\Release\mpz\addmul_ui.obj" -@erase ".\Release\mpz\and.obj" -@erase ".\Release\mpz\array_init.obj" -@erase ".\Release\mpz\bin_ui.obj" -@erase ".\Release\mpz\bin_uiui.obj" -@erase ".\Release\mpz\cdiv_q.obj" -@erase ".\Release\mpz\cdiv_q_ui.obj" -@erase ".\Release\mpz\cdiv_qr.obj" -@erase ".\Release\mpz\cdiv_qr_ui.obj" -@erase ".\Release\mpz\cdiv_r.obj" -@erase ".\Release\mpz\cdiv_r_ui.obj" -@erase ".\Release\mpz\cdiv_ui.obj" -@erase ".\Release\mpz\clear.obj" -@erase ".\Release\mpz\clrbit.obj" -@erase ".\Release\mpz\cmp.obj" -@erase ".\Release\mpz\cmp_si.obj" -@erase ".\Release\mpz\cmp_ui.obj" -@erase ".\Release\mpz\cmpabs.obj" -@erase ".\Release\mpz\cmpabs_ui.obj" -@erase ".\Release\mpz\com.obj" -@erase ".\Release\mpz\divexact.obj" -@erase ".\Release\mpz\dump.obj" -@erase ".\Release\mpz\fac_ui.obj" -@erase ".\Release\mpz\fdiv_q.obj" -@erase ".\Release\mpz\fdiv_q_2exp.obj" -@erase ".\Release\mpz\fdiv_q_ui.obj" -@erase ".\Release\mpz\fdiv_qr.obj" -@erase ".\Release\mpz\fdiv_qr_ui.obj" -@erase ".\Release\mpz\fdiv_r.obj" -@erase ".\Release\mpz\fdiv_r_2exp.obj" -@erase ".\Release\mpz\fdiv_r_ui.obj" -@erase ".\Release\mpz\fdiv_ui.obj" -@erase ".\Release\mpz\fib_ui.obj" -@erase ".\Release\mpz\fits_sint_p.obj" -@erase ".\Release\mpz\fits_slong_p.obj" -@erase ".\Release\mpz\fits_sshort_p.obj" -@erase ".\Release\mpz\fits_uint_p.obj" -@erase ".\Release\mpz\fits_ulong_p.obj" -@erase ".\Release\mpz\fits_ushort_p.obj" -@erase ".\Release\mpz\gcd.obj" -@erase ".\Release\mpz\gcd_ui.obj" -@erase ".\Release\mpz\gcdext.obj" -@erase ".\Release\mpz\get_d.obj" -@erase ".\Release\mpz\get_si.obj" -@erase ".\Release\mpz\get_str.obj" -@erase ".\Release\mpz\get_ui.obj" -@erase ".\Release\mpz\getlimbn.obj" -@erase ".\Release\mpz\hamdist.obj" -@erase ".\Release\mpz\init.obj" -@erase ".\Release\mpz\inp_raw.obj" -@erase ".\Release\mpz\inp_str.obj" -@erase ".\Release\mpz\invert.obj" -@erase ".\Release\mpz\ior.obj" -@erase ".\Release\mpz\iset.obj" -@erase ".\Release\mpz\iset_d.obj" -@erase ".\Release\mpz\iset_si.obj" -@erase ".\Release\mpz\iset_str.obj" -@erase ".\Release\mpz\iset_ui.obj" -@erase ".\Release\mpz\jacobi.obj" -@erase ".\Release\mpz\kronsz.obj" -@erase ".\Release\mpz\kronuz.obj" -@erase ".\Release\mpz\kronzs.obj" -@erase ".\Release\mpz\kronzu.obj" -@erase ".\Release\mpz\lcm.obj" -@erase ".\Release\mpz\legendre.obj" -@erase ".\Release\mpz\mod.obj" -@erase ".\Release\mpz\mul.obj" -@erase ".\Release\mpz\mul_2exp.obj" -@erase ".\Release\mpz\mul_si.obj" -@erase ".\Release\mpz\mul_ui.obj" -@erase ".\Release\mpz\neg.obj" -@erase ".\Release\mpz\nextprime.obj" -@erase ".\Release\mpz\out_raw.obj" -@erase ".\Release\mpz\out_str.obj" -@erase ".\Release\mpz\perfpow.obj" -@erase ".\Release\mpz\perfsqr.obj" -@erase ".\Release\mpz\popcount.obj" -@erase ".\Release\mpz\pow_ui.obj" -@erase ".\Release\mpz\powm.obj" -@erase ".\Release\mpz\powm_ui.obj" -@erase ".\Release\mpz\pprime_p.obj" -@erase ".\Release\mpz\random.obj" -@erase ".\Release\mpz\random2.obj" -@erase ".\Release\mpz\realloc.obj" -@erase ".\Release\mpz\remove.obj" -@erase ".\Release\mpz\root.obj" -@erase ".\Release\mpz\rrandomb.obj" -@erase ".\Release\mpz\scan0.obj" -@erase ".\Release\mpz\scan1.obj" -@erase ".\Release\mpz\set.obj" -@erase ".\Release\mpz\set_d.obj" -@erase ".\Release\mpz\set_f.obj" -@erase ".\Release\mpz\set_q.obj" -@erase ".\Release\mpz\set_si.obj" -@erase ".\Release\mpz\set_str.obj" -@erase ".\Release\mpz\set_ui.obj" -@erase ".\Release\mpz\setbit.obj" -@erase ".\Release\mpz\size.obj" -@erase ".\Release\mpz\sizeinbase.obj" -@erase ".\Release\mpz\sqrt.obj" -@erase ".\Release\mpz\sqrtrem.obj" -@erase ".\Release\mpz\sub.obj" -@erase ".\Release\mpz\sub_ui.obj" -@erase ".\Release\mpz\swap.obj" -@erase ".\Release\mpz\tdiv_q.obj" -@erase ".\Release\mpz\tdiv_q_2exp.obj" -@erase ".\Release\mpz\tdiv_q_ui.obj" -@erase ".\Release\mpz\tdiv_qr.obj" -@erase ".\Release\mpz\tdiv_qr_ui.obj" -@erase ".\Release\mpz\tdiv_r.obj" -@erase ".\Release\mpz\tdiv_r_2exp.obj" -@erase ".\Release\mpz\tdiv_r_ui.obj" -@erase ".\Release\mpz\tdiv_ui.obj" -@erase ".\Release\mpz\tstbit.obj" -@erase ".\Release\mpz\ui_pow_ui.obj" -@erase ".\Release\mpz\urandomb.obj" -@erase ".\Release\mpz\urandomm.obj" -@erase ".\Release\mpz\xor.obj" -@erase ".\Release\rand.obj" -@erase ".\Release\randclr.obj" -@erase ".\Release\randlc.obj" -@erase ".\Release\randlc2x.obj" -@erase ".\Release\randraw.obj" -@erase ".\Release\randsd.obj" -@erase ".\Release\randsdui.obj" -@erase ".\Release\stack-alloc.obj" -@erase ".\Release\version.obj" -@erase ".\Release\win32dllstub.obj" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gmp.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1f100000" /version:3.1 /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\gmp.pdb" /map:"$(INTDIR)\gmp.map" /machine:I386 /nodefaultlib:"libc" /out:"../lib/gmp.dll" /implib:"../lib/gmp.lib" LINK32_OBJS= \ ".\Release\mpf\abs.obj" \ ".\Release\mpz\abs.obj" \ ".\Release\mpf\add.obj" \ ".\Release\mpfr\add.obj" \ ".\Release\mpq\add.obj" \ ".\Release\mpz\add.obj" \ ".\Release\mpn\add_n.obj" \ ".\Release\mpf\add_ui.obj" \ ".\Release\mpz\add_ui.obj" \ ".\Release\mpfr\add_ulp.obj" \ ".\Release\mpn\addmul_1.obj" \ ".\Release\mpz\addmul_ui.obj" \ ".\Release\mpn\addsub_n.obj" \ ".\Release\mpfr\agm.obj" \ ".\Release\mpz\and.obj" \ ".\Release\mpz\array_init.obj" \ ".\Release\assert.obj" \ ".\Release\mpn\bdivmod.obj" \ ".\Release\mpz\bin_ui.obj" \ ".\Release\mpz\bin_uiui.obj" \ ".\Release\mpn\bz_divrem_n.obj" \ ".\Release\mpq\canonicalize.obj" \ ".\Release\mpz\cdiv_q.obj" \ ".\Release\mpz\cdiv_q_ui.obj" \ ".\Release\mpz\cdiv_qr.obj" \ ".\Release\mpz\cdiv_qr_ui.obj" \ ".\Release\mpz\cdiv_r.obj" \ ".\Release\mpz\cdiv_r_ui.obj" \ ".\Release\mpz\cdiv_ui.obj" \ ".\Release\mpf\ceil.obj" \ ".\Release\mpf\clear.obj" \ ".\Release\mpfr\clear.obj" \ ".\Release\mpq\clear.obj" \ ".\Release\mpz\clear.obj" \ ".\Release\mpz\clrbit.obj" \ ".\Release\mpf\cmp.obj" \ ".\Release\mpfr\cmp.obj" \ ".\Release\mpn\cmp.obj" \ ".\Release\mpq\cmp.obj" \ ".\Release\mpz\cmp.obj" \ ".\Release\mpf\cmp_si.obj" \ ".\Release\mpz\cmp_si.obj" \ ".\Release\mpf\cmp_ui.obj" \ ".\Release\mpfr\cmp_ui.obj" \ ".\Release\mpq\cmp_ui.obj" \ ".\Release\mpz\cmp_ui.obj" \ ".\Release\mpz\cmpabs.obj" \ ".\Release\mpz\cmpabs_ui.obj" \ ".\Release\mpz\com.obj" \ ".\Release\compat.obj" \ ".\Release\mpf\div.obj" \ ".\Release\mpfr\div.obj" \ ".\Release\mpq\div.obj" \ ".\Release\mpf\div_2exp.obj" \ ".\Release\mpfr\div_2exp.obj" \ ".\Release\mpf\div_ui.obj" \ ".\Release\mpfr\div_ui.obj" \ ".\Release\mpn\diveby3.obj" \ ".\Release\mpz\divexact.obj" \ ".\Release\mpn\divrem.obj" \ ".\Release\mpn\divrem_1.obj" \ ".\Release\mpn\divrem_2.obj" \ ".\Release\mpf\dump.obj" \ ".\Release\mpn\dump.obj" \ ".\Release\mpz\dump.obj" \ ".\Release\mpf\eq.obj" \ ".\Release\mpq\equal.obj" \ ".\Release\errno.obj" \ ".\Release\mpfr\exp.obj" \ ".\Release\extract-dbl.obj" \ ".\Release\mpz\fac_ui.obj" \ ".\Release\mpz\fdiv_q.obj" \ ".\Release\mpz\fdiv_q_2exp.obj" \ ".\Release\mpz\fdiv_q_ui.obj" \ ".\Release\mpz\fdiv_qr.obj" \ ".\Release\mpz\fdiv_qr_ui.obj" \ ".\Release\mpz\fdiv_r.obj" \ ".\Release\mpz\fdiv_r_2exp.obj" \ ".\Release\mpz\fdiv_r_ui.obj" \ ".\Release\mpz\fdiv_ui.obj" \ ".\Release\mpz\fib_ui.obj" \ ".\Release\mpz\fits_sint_p.obj" \ ".\Release\mpz\fits_slong_p.obj" \ ".\Release\mpz\fits_sshort_p.obj" \ ".\Release\mpz\fits_uint_p.obj" \ ".\Release\mpz\fits_ulong_p.obj" \ ".\Release\mpz\fits_ushort_p.obj" \ ".\Release\mpf\floor.obj" \ ".\Release\mpn\gcd.obj" \ ".\Release\mpz\gcd.obj" \ ".\Release\mpn\gcd_1.obj" \ ".\Release\mpz\gcd_ui.obj" \ ".\Release\mpn\gcdext.obj" \ ".\Release\mpz\gcdext.obj" \ ".\Release\mpf\get_d.obj" \ ".\Release\mpq\get_d.obj" \ ".\Release\mpz\get_d.obj" \ ".\Release\mpq\get_den.obj" \ ".\Release\mpq\get_num.obj" \ ".\Release\mpf\get_prc.obj" \ ".\Release\mpz\get_si.obj" \ ".\Release\mpf\get_str.obj" \ ".\Release\mpfr\get_str.obj" \ ".\Release\mpn\get_str.obj" \ ".\Release\mpz\get_str.obj" \ ".\Release\mpz\get_ui.obj" \ ".\Release\mpz\getlimbn.obj" \ ".\Release\mpn\hamdist.obj" \ ".\Release\mpz\hamdist.obj" \ ".\Release\mpf\init.obj" \ ".\Release\mpfr\init.obj" \ ".\Release\mpq\init.obj" \ ".\Release\mpz\init.obj" \ ".\Release\mpf\init2.obj" \ ".\Release\mpn\inlines.obj" \ ".\Release\mpz\inp_raw.obj" \ ".\Release\mpf\inp_str.obj" \ ".\Release\mpz\inp_str.obj" \ ".\Release\insert-dbl.obj" \ ".\Release\mpq\inv.obj" \ ".\Release\mpz\invert.obj" \ ".\Release\mpz\ior.obj" \ ".\Release\mpf\iset.obj" \ ".\Release\mpz\iset.obj" \ ".\Release\mpf\iset_d.obj" \ ".\Release\mpz\iset_d.obj" \ ".\Release\mpf\iset_si.obj" \ ".\Release\mpz\iset_si.obj" \ ".\Release\mpf\iset_str.obj" \ ".\Release\mpz\iset_str.obj" \ ".\Release\mpf\iset_ui.obj" \ ".\Release\mpz\iset_ui.obj" \ ".\Release\mpn\jacbase.obj" \ ".\Release\mpz\jacobi.obj" \ ".\Release\mpfr\karadiv.obj" \ ".\Release\mpfr\karasqrt.obj" \ ".\Release\mpz\kronsz.obj" \ ".\Release\mpz\kronuz.obj" \ ".\Release\mpz\kronzs.obj" \ ".\Release\mpz\kronzu.obj" \ ".\Release\mpz\lcm.obj" \ ".\Release\mpz\legendre.obj" \ ".\Release\mpfr\log.obj" \ ".\Release\mpfr\log2.obj" \ ".\Release\mpn\lshift.obj" \ ".\Release\memory.obj" \ ".\Release\mpz\mod.obj" \ ".\Release\mpn\mod_1.obj" \ ".\Release\mpn\mod_1_rs.obj" \ ".\Release\mpn\mp_bases.obj" \ ".\Release\mp_bpl.obj" \ ".\Release\mp_clz_tab.obj" \ ".\Release\mp_minv_tab.obj" \ ".\Release\mp_set_fns.obj" \ ".\Release\mpf\mul.obj" \ ".\Release\mpfr\mul.obj" \ ".\Release\mpn\mul.obj" \ ".\Release\mpq\mul.obj" \ ".\Release\mpz\mul.obj" \ ".\Release\mpn\mul_1.obj" \ ".\Release\mpf\mul_2exp.obj" \ ".\Release\mpfr\mul_2exp.obj" \ ".\Release\mpz\mul_2exp.obj" \ ".\Release\mpn\mul_basecase.obj" \ ".\Release\mpn\mul_fft.obj" \ ".\Release\mpn\mul_n.obj" \ ".\Release\mpz\mul_si.obj" \ ".\Release\mpf\mul_ui.obj" \ ".\Release\mpfr\mul_ui.obj" \ ".\Release\mpz\mul_ui.obj" \ ".\Release\mpf\neg.obj" \ ".\Release\mpfr\neg.obj" \ ".\Release\mpq\neg.obj" \ ".\Release\mpz\neg.obj" \ ".\Release\mpz\nextprime.obj" \ ".\Release\mpz\out_raw.obj" \ ".\Release\mpf\out_str.obj" \ ".\Release\mpfr\out_str.obj" \ ".\Release\mpq\out_str.obj" \ ".\Release\mpz\out_str.obj" \ ".\Release\mpz\perfpow.obj" \ ".\Release\mpn\perfsqr.obj" \ ".\Release\mpz\perfsqr.obj" \ ".\Release\mpfr\pi.obj" \ ".\Release\mpn\popcount.obj" \ ".\Release\mpz\popcount.obj" \ ".\Release\mpfr\pow.obj" \ ".\Release\mpf\pow_ui.obj" \ ".\Release\mpz\pow_ui.obj" \ ".\Release\mpz\powm.obj" \ ".\Release\mpz\powm_ui.obj" \ ".\Release\mpz\pprime_p.obj" \ ".\Release\mpn\pre_mod_1.obj" \ ".\Release\mpfr\print_raw.obj" \ ".\Release\mpfr\print_rnd_mode.obj" \ ".\Release\rand.obj" \ ".\Release\randclr.obj" \ ".\Release\randlc.obj" \ ".\Release\randlc2x.obj" \ ".\Release\mpfr\random.obj" \ ".\Release\mpn\random.obj" \ ".\Release\mpz\random.obj" \ ".\Release\mpf\random2.obj" \ ".\Release\mpn\random2.obj" \ ".\Release\mpz\random2.obj" \ ".\Release\randraw.obj" \ ".\Release\randsd.obj" \ ".\Release\randsdui.obj" \ ".\Release\mpz\realloc.obj" \ ".\Release\mpf\reldiff.obj" \ ".\Release\mpz\remove.obj" \ ".\Release\mpz\root.obj" \ ".\Release\mpfr\round.obj" \ ".\Release\mpz\rrandomb.obj" \ ".\Release\mpn\rshift.obj" \ ".\Release\mpn\sb_divrem_mn.obj" \ ".\Release\mpn\scan0.obj" \ ".\Release\mpz\scan0.obj" \ ".\Release\mpn\scan1.obj" \ ".\Release\mpz\scan1.obj" \ ".\Release\mpf\set.obj" \ ".\Release\mpfr\set.obj" \ ".\Release\mpq\set.obj" \ ".\Release\mpz\set.obj" \ ".\Release\mpf\set_d.obj" \ ".\Release\mpfr\set_d.obj" \ ".\Release\mpq\set_d.obj" \ ".\Release\mpz\set_d.obj" \ ".\Release\mpq\set_den.obj" \ ".\Release\mpf\set_dfl_prec.obj" \ ".\Release\mpfr\set_dfl_prec.obj" \ ".\Release\mpfr\set_dfl_rnd.obj" \ ".\Release\mpfr\set_f.obj" \ ".\Release\mpz\set_f.obj" \ ".\Release\mpq\set_num.obj" \ ".\Release\mpf\set_prc.obj" \ ".\Release\mpf\set_prc_raw.obj" \ ".\Release\mpfr\set_prec.obj" \ ".\Release\mpf\set_q.obj" \ ".\Release\mpz\set_q.obj" \ ".\Release\mpf\set_si.obj" \ ".\Release\mpfr\set_si.obj" \ ".\Release\mpq\set_si.obj" \ ".\Release\mpz\set_si.obj" \ ".\Release\mpf\set_str.obj" \ ".\Release\mpn\set_str.obj" \ ".\Release\mpz\set_str.obj" \ ".\Release\mpfr\set_str_raw.obj" \ ".\Release\mpf\set_ui.obj" \ ".\Release\mpq\set_ui.obj" \ ".\Release\mpz\set_ui.obj" \ ".\Release\mpf\set_z.obj" \ ".\Release\mpfr\set_z.obj" \ ".\Release\mpq\set_z.obj" \ ".\Release\mpz\setbit.obj" \ ".\Release\mpf\size.obj" \ ".\Release\mpz\size.obj" \ ".\Release\mpz\sizeinbase.obj" \ ".\Release\mpn\sqr_basecase.obj" \ ".\Release\mpf\sqrt.obj" \ ".\Release\mpfr\sqrt.obj" \ ".\Release\mpz\sqrt.obj" \ ".\Release\mpf\sqrt_ui.obj" \ ".\Release\mpn\sqrtrem.obj" \ ".\Release\mpz\sqrtrem.obj" \ ".\Release\stack-alloc.obj" \ ".\Release\mpf\sub.obj" \ ".\Release\mpfr\sub.obj" \ ".\Release\mpq\sub.obj" \ ".\Release\mpz\sub.obj" \ ".\Release\mpn\sub_n.obj" \ ".\Release\mpf\sub_ui.obj" \ ".\Release\mpz\sub_ui.obj" \ ".\Release\mpn\submul_1.obj" \ ".\Release\mpf\swap.obj" \ ".\Release\mpq\swap.obj" \ ".\Release\mpz\swap.obj" \ ".\Release\mpz\tdiv_q.obj" \ ".\Release\mpz\tdiv_q_2exp.obj" \ ".\Release\mpz\tdiv_q_ui.obj" \ ".\Release\mpn\tdiv_qr.obj" \ ".\Release\mpz\tdiv_qr.obj" \ ".\Release\mpz\tdiv_qr_ui.obj" \ ".\Release\mpz\tdiv_r.obj" \ ".\Release\mpz\tdiv_r_2exp.obj" \ ".\Release\mpz\tdiv_r_ui.obj" \ ".\Release\mpz\tdiv_ui.obj" \ ".\Release\mpf\trunc.obj" \ ".\Release\mpz\tstbit.obj" \ ".\Release\mpf\ui_div.obj" \ ".\Release\mpz\ui_pow_ui.obj" \ ".\Release\mpf\ui_sub.obj" \ ".\Release\mpf\urandomb.obj" \ ".\Release\mpz\urandomb.obj" \ ".\Release\mpz\urandomm.obj" \ ".\Release\version.obj" \ ".\Release\win32dllstub.obj" \ ".\Release\mpz\xor.obj" \ ".\Release\mpfr\zeta.obj" "..\lib\gmp.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug ALL : "..\lib\gmpDebug.dll" CLEAN : -@erase "$(INTDIR)\mpf\vc60.idb" -@erase "$(INTDIR)\mpf\vc60.pdb" -@erase "$(INTDIR)\mpfr\vc60.idb" -@erase "$(INTDIR)\mpfr\vc60.pdb" -@erase "$(INTDIR)\mpn\vc60.idb" -@erase "$(INTDIR)\mpn\vc60.pdb" -@erase "$(INTDIR)\mpq\vc60.idb" -@erase "$(INTDIR)\mpq\vc60.pdb" -@erase "$(INTDIR)\mpz\vc60.idb" -@erase "$(INTDIR)\mpz\vc60.pdb" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\gmpDebug.map" -@erase "$(OUTDIR)\gmpDebug.pdb" -@erase "..\lib\gmpDebug.dll" -@erase "..\lib\gmpDebug.exp" -@erase "..\lib\gmpDebug.ilk" -@erase "..\lib\gmpDebug.lib" -@erase ".\Debug\assert.obj" -@erase ".\Debug\compat.obj" -@erase ".\Debug\errno.obj" -@erase ".\Debug\extract-dbl.obj" -@erase ".\Debug\insert-dbl.obj" -@erase ".\Debug\memory.obj" -@erase ".\Debug\mp_bpl.obj" -@erase ".\Debug\mp_clz_tab.obj" -@erase ".\Debug\mp_minv_tab.obj" -@erase ".\Debug\mp_set_fns.obj" -@erase ".\Debug\mpf\abs.obj" -@erase ".\Debug\mpf\add.obj" -@erase ".\Debug\mpf\add_ui.obj" -@erase ".\Debug\mpf\ceil.obj" -@erase ".\Debug\mpf\clear.obj" -@erase ".\Debug\mpf\cmp.obj" -@erase ".\Debug\mpf\cmp_si.obj" -@erase ".\Debug\mpf\cmp_ui.obj" -@erase ".\Debug\mpf\div.obj" -@erase ".\Debug\mpf\div_2exp.obj" -@erase ".\Debug\mpf\div_ui.obj" -@erase ".\Debug\mpf\dump.obj" -@erase ".\Debug\mpf\eq.obj" -@erase ".\Debug\mpf\floor.obj" -@erase ".\Debug\mpf\get_d.obj" -@erase ".\Debug\mpf\get_prc.obj" -@erase ".\Debug\mpf\get_str.obj" -@erase ".\Debug\mpf\init.obj" -@erase ".\Debug\mpf\init2.obj" -@erase ".\Debug\mpf\inp_str.obj" -@erase ".\Debug\mpf\iset.obj" -@erase ".\Debug\mpf\iset_d.obj" -@erase ".\Debug\mpf\iset_si.obj" -@erase ".\Debug\mpf\iset_str.obj" -@erase ".\Debug\mpf\iset_ui.obj" -@erase ".\Debug\mpf\mul.obj" -@erase ".\Debug\mpf\mul_2exp.obj" -@erase ".\Debug\mpf\mul_ui.obj" -@erase ".\Debug\mpf\neg.obj" -@erase ".\Debug\mpf\out_str.obj" -@erase ".\Debug\mpf\pow_ui.obj" -@erase ".\Debug\mpf\random2.obj" -@erase ".\Debug\mpf\reldiff.obj" -@erase ".\Debug\mpf\set.obj" -@erase ".\Debug\mpf\set_d.obj" -@erase ".\Debug\mpf\set_dfl_prec.obj" -@erase ".\Debug\mpf\set_prc.obj" -@erase ".\Debug\mpf\set_prc_raw.obj" -@erase ".\Debug\mpf\set_q.obj" -@erase ".\Debug\mpf\set_si.obj" -@erase ".\Debug\mpf\set_str.obj" -@erase ".\Debug\mpf\set_ui.obj" -@erase ".\Debug\mpf\set_z.obj" -@erase ".\Debug\mpf\size.obj" -@erase ".\Debug\mpf\sqrt.obj" -@erase ".\Debug\mpf\sqrt_ui.obj" -@erase ".\Debug\mpf\sub.obj" -@erase ".\Debug\mpf\sub_ui.obj" -@erase ".\Debug\mpf\swap.obj" -@erase ".\Debug\mpf\trunc.obj" -@erase ".\Debug\mpf\ui_div.obj" -@erase ".\Debug\mpf\ui_sub.obj" -@erase ".\Debug\mpf\urandomb.obj" -@erase ".\Debug\mpfr\add.obj" -@erase ".\Debug\mpfr\add_ulp.obj" -@erase ".\Debug\mpfr\agm.obj" -@erase ".\Debug\mpfr\clear.obj" -@erase ".\Debug\mpfr\cmp.obj" -@erase ".\Debug\mpfr\cmp_ui.obj" -@erase ".\Debug\mpfr\div.obj" -@erase ".\Debug\mpfr\div_2exp.obj" -@erase ".\Debug\mpfr\div_ui.obj" -@erase ".\Debug\mpfr\exp.obj" -@erase ".\Debug\mpfr\get_str.obj" -@erase ".\Debug\mpfr\init.obj" -@erase ".\Debug\mpfr\karadiv.obj" -@erase ".\Debug\mpfr\karasqrt.obj" -@erase ".\Debug\mpfr\log.obj" -@erase ".\Debug\mpfr\log2.obj" -@erase ".\Debug\mpfr\mul.obj" -@erase ".\Debug\mpfr\mul_2exp.obj" -@erase ".\Debug\mpfr\mul_ui.obj" -@erase ".\Debug\mpfr\neg.obj" -@erase ".\Debug\mpfr\out_str.obj" -@erase ".\Debug\mpfr\pi.obj" -@erase ".\Debug\mpfr\pow.obj" -@erase ".\Debug\mpfr\print_raw.obj" -@erase ".\Debug\mpfr\print_rnd_mode.obj" -@erase ".\Debug\mpfr\random.obj" -@erase ".\Debug\mpfr\round.obj" -@erase ".\Debug\mpfr\set.obj" -@erase ".\Debug\mpfr\set_d.obj" -@erase ".\Debug\mpfr\set_dfl_prec.obj" -@erase ".\Debug\mpfr\set_dfl_rnd.obj" -@erase ".\Debug\mpfr\set_f.obj" -@erase ".\Debug\mpfr\set_prec.obj" -@erase ".\Debug\mpfr\set_si.obj" -@erase ".\Debug\mpfr\set_str_raw.obj" -@erase ".\Debug\mpfr\set_z.obj" -@erase ".\Debug\mpfr\sqrt.obj" -@erase ".\Debug\mpfr\sub.obj" -@erase ".\Debug\mpfr\zeta.obj" -@erase ".\Debug\mpn\add_n.obj" -@erase ".\Debug\mpn\addmul_1.obj" -@erase ".\Debug\mpn\addsub_n.obj" -@erase ".\Debug\mpn\bdivmod.obj" -@erase ".\Debug\mpn\bz_divrem_n.obj" -@erase ".\Debug\mpn\cmp.obj" -@erase ".\Debug\mpn\diveby3.obj" -@erase ".\Debug\mpn\divrem.obj" -@erase ".\Debug\mpn\divrem_1.obj" -@erase ".\Debug\mpn\divrem_2.obj" -@erase ".\Debug\mpn\dump.obj" -@erase ".\Debug\mpn\gcd.obj" -@erase ".\Debug\mpn\gcd_1.obj" -@erase ".\Debug\mpn\gcdext.obj" -@erase ".\Debug\mpn\get_str.obj" -@erase ".\Debug\mpn\hamdist.obj" -@erase ".\Debug\mpn\inlines.obj" -@erase ".\Debug\mpn\jacbase.obj" -@erase ".\Debug\mpn\lshift.obj" -@erase ".\Debug\mpn\mod_1.obj" -@erase ".\Debug\mpn\mod_1_rs.obj" -@erase ".\Debug\mpn\mp_bases.obj" -@erase ".\Debug\mpn\mul.obj" -@erase ".\Debug\mpn\mul_1.obj" -@erase ".\Debug\mpn\mul_basecase.obj" -@erase ".\Debug\mpn\mul_fft.obj" -@erase ".\Debug\mpn\mul_n.obj" -@erase ".\Debug\mpn\perfsqr.obj" -@erase ".\Debug\mpn\popcount.obj" -@erase ".\Debug\mpn\pre_mod_1.obj" -@erase ".\Debug\mpn\random.obj" -@erase ".\Debug\mpn\random2.obj" -@erase ".\Debug\mpn\rshift.obj" -@erase ".\Debug\mpn\sb_divrem_mn.obj" -@erase ".\Debug\mpn\scan0.obj" -@erase ".\Debug\mpn\scan1.obj" -@erase ".\Debug\mpn\set_str.obj" -@erase ".\Debug\mpn\sqr_basecase.obj" -@erase ".\Debug\mpn\sqrtrem.obj" -@erase ".\Debug\mpn\sub_n.obj" -@erase ".\Debug\mpn\submul_1.obj" -@erase ".\Debug\mpn\tdiv_qr.obj" -@erase ".\Debug\mpq\add.obj" -@erase ".\Debug\mpq\canonicalize.obj" -@erase ".\Debug\mpq\clear.obj" -@erase ".\Debug\mpq\cmp.obj" -@erase ".\Debug\mpq\cmp_ui.obj" -@erase ".\Debug\mpq\div.obj" -@erase ".\Debug\mpq\equal.obj" -@erase ".\Debug\mpq\get_d.obj" -@erase ".\Debug\mpq\get_den.obj" -@erase ".\Debug\mpq\get_num.obj" -@erase ".\Debug\mpq\init.obj" -@erase ".\Debug\mpq\inv.obj" -@erase ".\Debug\mpq\mul.obj" -@erase ".\Debug\mpq\neg.obj" -@erase ".\Debug\mpq\out_str.obj" -@erase ".\Debug\mpq\set.obj" -@erase ".\Debug\mpq\set_d.obj" -@erase ".\Debug\mpq\set_den.obj" -@erase ".\Debug\mpq\set_num.obj" -@erase ".\Debug\mpq\set_si.obj" -@erase ".\Debug\mpq\set_ui.obj" -@erase ".\Debug\mpq\set_z.obj" -@erase ".\Debug\mpq\sub.obj" -@erase ".\Debug\mpq\swap.obj" -@erase ".\Debug\mpz\abs.obj" -@erase ".\Debug\mpz\add.obj" -@erase ".\Debug\mpz\add_ui.obj" -@erase ".\Debug\mpz\addmul_ui.obj" -@erase ".\Debug\mpz\and.obj" -@erase ".\Debug\mpz\array_init.obj" -@erase ".\Debug\mpz\bin_ui.obj" -@erase ".\Debug\mpz\bin_uiui.obj" -@erase ".\Debug\mpz\cdiv_q.obj" -@erase ".\Debug\mpz\cdiv_q_ui.obj" -@erase ".\Debug\mpz\cdiv_qr.obj" -@erase ".\Debug\mpz\cdiv_qr_ui.obj" -@erase ".\Debug\mpz\cdiv_r.obj" -@erase ".\Debug\mpz\cdiv_r_ui.obj" -@erase ".\Debug\mpz\cdiv_ui.obj" -@erase ".\Debug\mpz\clear.obj" -@erase ".\Debug\mpz\clrbit.obj" -@erase ".\Debug\mpz\cmp.obj" -@erase ".\Debug\mpz\cmp_si.obj" -@erase ".\Debug\mpz\cmp_ui.obj" -@erase ".\Debug\mpz\cmpabs.obj" -@erase ".\Debug\mpz\cmpabs_ui.obj" -@erase ".\Debug\mpz\com.obj" -@erase ".\Debug\mpz\divexact.obj" -@erase ".\Debug\mpz\dump.obj" -@erase ".\Debug\mpz\fac_ui.obj" -@erase ".\Debug\mpz\fdiv_q.obj" -@erase ".\Debug\mpz\fdiv_q_2exp.obj" -@erase ".\Debug\mpz\fdiv_q_ui.obj" -@erase ".\Debug\mpz\fdiv_qr.obj" -@erase ".\Debug\mpz\fdiv_qr_ui.obj" -@erase ".\Debug\mpz\fdiv_r.obj" -@erase ".\Debug\mpz\fdiv_r_2exp.obj" -@erase ".\Debug\mpz\fdiv_r_ui.obj" -@erase ".\Debug\mpz\fdiv_ui.obj" -@erase ".\Debug\mpz\fib_ui.obj" -@erase ".\Debug\mpz\fits_sint_p.obj" -@erase ".\Debug\mpz\fits_slong_p.obj" -@erase ".\Debug\mpz\fits_sshort_p.obj" -@erase ".\Debug\mpz\fits_uint_p.obj" -@erase ".\Debug\mpz\fits_ulong_p.obj" -@erase ".\Debug\mpz\fits_ushort_p.obj" -@erase ".\Debug\mpz\gcd.obj" -@erase ".\Debug\mpz\gcd_ui.obj" -@erase ".\Debug\mpz\gcdext.obj" -@erase ".\Debug\mpz\get_d.obj" -@erase ".\Debug\mpz\get_si.obj" -@erase ".\Debug\mpz\get_str.obj" -@erase ".\Debug\mpz\get_ui.obj" -@erase ".\Debug\mpz\getlimbn.obj" -@erase ".\Debug\mpz\hamdist.obj" -@erase ".\Debug\mpz\init.obj" -@erase ".\Debug\mpz\inp_raw.obj" -@erase ".\Debug\mpz\inp_str.obj" -@erase ".\Debug\mpz\invert.obj" -@erase ".\Debug\mpz\ior.obj" -@erase ".\Debug\mpz\iset.obj" -@erase ".\Debug\mpz\iset_d.obj" -@erase ".\Debug\mpz\iset_si.obj" -@erase ".\Debug\mpz\iset_str.obj" -@erase ".\Debug\mpz\iset_ui.obj" -@erase ".\Debug\mpz\jacobi.obj" -@erase ".\Debug\mpz\kronsz.obj" -@erase ".\Debug\mpz\kronuz.obj" -@erase ".\Debug\mpz\kronzs.obj" -@erase ".\Debug\mpz\kronzu.obj" -@erase ".\Debug\mpz\lcm.obj" -@erase ".\Debug\mpz\legendre.obj" -@erase ".\Debug\mpz\mod.obj" -@erase ".\Debug\mpz\mul.obj" -@erase ".\Debug\mpz\mul_2exp.obj" -@erase ".\Debug\mpz\mul_si.obj" -@erase ".\Debug\mpz\mul_ui.obj" -@erase ".\Debug\mpz\neg.obj" -@erase ".\Debug\mpz\nextprime.obj" -@erase ".\Debug\mpz\out_raw.obj" -@erase ".\Debug\mpz\out_str.obj" -@erase ".\Debug\mpz\perfpow.obj" -@erase ".\Debug\mpz\perfsqr.obj" -@erase ".\Debug\mpz\popcount.obj" -@erase ".\Debug\mpz\pow_ui.obj" -@erase ".\Debug\mpz\powm.obj" -@erase ".\Debug\mpz\powm_ui.obj" -@erase ".\Debug\mpz\pprime_p.obj" -@erase ".\Debug\mpz\random.obj" -@erase ".\Debug\mpz\random2.obj" -@erase ".\Debug\mpz\realloc.obj" -@erase ".\Debug\mpz\remove.obj" -@erase ".\Debug\mpz\root.obj" -@erase ".\Debug\mpz\rrandomb.obj" -@erase ".\Debug\mpz\scan0.obj" -@erase ".\Debug\mpz\scan1.obj" -@erase ".\Debug\mpz\set.obj" -@erase ".\Debug\mpz\set_d.obj" -@erase ".\Debug\mpz\set_f.obj" -@erase ".\Debug\mpz\set_q.obj" -@erase ".\Debug\mpz\set_si.obj" -@erase ".\Debug\mpz\set_str.obj" -@erase ".\Debug\mpz\set_ui.obj" -@erase ".\Debug\mpz\setbit.obj" -@erase ".\Debug\mpz\size.obj" -@erase ".\Debug\mpz\sizeinbase.obj" -@erase ".\Debug\mpz\sqrt.obj" -@erase ".\Debug\mpz\sqrtrem.obj" -@erase ".\Debug\mpz\sub.obj" -@erase ".\Debug\mpz\sub_ui.obj" -@erase ".\Debug\mpz\swap.obj" -@erase ".\Debug\mpz\tdiv_q.obj" -@erase ".\Debug\mpz\tdiv_q_2exp.obj" -@erase ".\Debug\mpz\tdiv_q_ui.obj" -@erase ".\Debug\mpz\tdiv_qr.obj" -@erase ".\Debug\mpz\tdiv_qr_ui.obj" -@erase ".\Debug\mpz\tdiv_r.obj" -@erase ".\Debug\mpz\tdiv_r_2exp.obj" -@erase ".\Debug\mpz\tdiv_r_ui.obj" -@erase ".\Debug\mpz\tdiv_ui.obj" -@erase ".\Debug\mpz\tstbit.obj" -@erase ".\Debug\mpz\ui_pow_ui.obj" -@erase ".\Debug\mpz\urandomb.obj" -@erase ".\Debug\mpz\urandomm.obj" -@erase ".\Debug\mpz\xor.obj" -@erase ".\Debug\rand.obj" -@erase ".\Debug\randclr.obj" -@erase ".\Debug\randlc.obj" -@erase ".\Debug\randlc2x.obj" -@erase ".\Debug\randraw.obj" -@erase ".\Debug\randsd.obj" -@erase ".\Debug\randsdui.obj" -@erase ".\Debug\stack-alloc.obj" -@erase ".\Debug\version.obj" -@erase ".\Debug\win32dllstub.obj" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gmp.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1F100000" /version:3.1 /subsystem:windows /dll /incremental:yes /pdb:"$(OUTDIR)\gmpDebug.pdb" /map:"$(INTDIR)\gmpDebug.map" /debug /debugtype:both /machine:I386 /nodefaultlib:"libc" /out:"../lib/gmpDebug.dll" /implib:"../lib/gmpDebug.lib" /pdbtype:sept LINK32_OBJS= \ ".\Debug\mpf\abs.obj" \ ".\Debug\mpz\abs.obj" \ ".\Debug\mpf\add.obj" \ ".\Debug\mpfr\add.obj" \ ".\Debug\mpq\add.obj" \ ".\Debug\mpz\add.obj" \ ".\Debug\mpn\add_n.obj" \ ".\Debug\mpf\add_ui.obj" \ ".\Debug\mpz\add_ui.obj" \ ".\Debug\mpfr\add_ulp.obj" \ ".\Debug\mpn\addmul_1.obj" \ ".\Debug\mpz\addmul_ui.obj" \ ".\Debug\mpn\addsub_n.obj" \ ".\Debug\mpfr\agm.obj" \ ".\Debug\mpz\and.obj" \ ".\Debug\mpz\array_init.obj" \ ".\Debug\assert.obj" \ ".\Debug\mpn\bdivmod.obj" \ ".\Debug\mpz\bin_ui.obj" \ ".\Debug\mpz\bin_uiui.obj" \ ".\Debug\mpn\bz_divrem_n.obj" \ ".\Debug\mpq\canonicalize.obj" \ ".\Debug\mpz\cdiv_q.obj" \ ".\Debug\mpz\cdiv_q_ui.obj" \ ".\Debug\mpz\cdiv_qr.obj" \ ".\Debug\mpz\cdiv_qr_ui.obj" \ ".\Debug\mpz\cdiv_r.obj" \ ".\Debug\mpz\cdiv_r_ui.obj" \ ".\Debug\mpz\cdiv_ui.obj" \ ".\Debug\mpf\ceil.obj" \ ".\Debug\mpf\clear.obj" \ ".\Debug\mpfr\clear.obj" \ ".\Debug\mpq\clear.obj" \ ".\Debug\mpz\clear.obj" \ ".\Debug\mpz\clrbit.obj" \ ".\Debug\mpf\cmp.obj" \ ".\Debug\mpfr\cmp.obj" \ ".\Debug\mpn\cmp.obj" \ ".\Debug\mpq\cmp.obj" \ ".\Debug\mpz\cmp.obj" \ ".\Debug\mpf\cmp_si.obj" \ ".\Debug\mpz\cmp_si.obj" \ ".\Debug\mpf\cmp_ui.obj" \ ".\Debug\mpfr\cmp_ui.obj" \ ".\Debug\mpq\cmp_ui.obj" \ ".\Debug\mpz\cmp_ui.obj" \ ".\Debug\mpz\cmpabs.obj" \ ".\Debug\mpz\cmpabs_ui.obj" \ ".\Debug\mpz\com.obj" \ ".\Debug\compat.obj" \ ".\Debug\mpf\div.obj" \ ".\Debug\mpfr\div.obj" \ ".\Debug\mpq\div.obj" \ ".\Debug\mpf\div_2exp.obj" \ ".\Debug\mpfr\div_2exp.obj" \ ".\Debug\mpf\div_ui.obj" \ ".\Debug\mpfr\div_ui.obj" \ ".\Debug\mpn\diveby3.obj" \ ".\Debug\mpz\divexact.obj" \ ".\Debug\mpn\divrem.obj" \ ".\Debug\mpn\divrem_1.obj" \ ".\Debug\mpn\divrem_2.obj" \ ".\Debug\mpf\dump.obj" \ ".\Debug\mpn\dump.obj" \ ".\Debug\mpz\dump.obj" \ ".\Debug\mpf\eq.obj" \ ".\Debug\mpq\equal.obj" \ ".\Debug\errno.obj" \ ".\Debug\mpfr\exp.obj" \ ".\Debug\extract-dbl.obj" \ ".\Debug\mpz\fac_ui.obj" \ ".\Debug\mpz\fdiv_q.obj" \ ".\Debug\mpz\fdiv_q_2exp.obj" \ ".\Debug\mpz\fdiv_q_ui.obj" \ ".\Debug\mpz\fdiv_qr.obj" \ ".\Debug\mpz\fdiv_qr_ui.obj" \ ".\Debug\mpz\fdiv_r.obj" \ ".\Debug\mpz\fdiv_r_2exp.obj" \ ".\Debug\mpz\fdiv_r_ui.obj" \ ".\Debug\mpz\fdiv_ui.obj" \ ".\Debug\mpz\fib_ui.obj" \ ".\Debug\mpz\fits_sint_p.obj" \ ".\Debug\mpz\fits_slong_p.obj" \ ".\Debug\mpz\fits_sshort_p.obj" \ ".\Debug\mpz\fits_uint_p.obj" \ ".\Debug\mpz\fits_ulong_p.obj" \ ".\Debug\mpz\fits_ushort_p.obj" \ ".\Debug\mpf\floor.obj" \ ".\Debug\mpn\gcd.obj" \ ".\Debug\mpz\gcd.obj" \ ".\Debug\mpn\gcd_1.obj" \ ".\Debug\mpz\gcd_ui.obj" \ ".\Debug\mpn\gcdext.obj" \ ".\Debug\mpz\gcdext.obj" \ ".\Debug\mpf\get_d.obj" \ ".\Debug\mpq\get_d.obj" \ ".\Debug\mpz\get_d.obj" \ ".\Debug\mpq\get_den.obj" \ ".\Debug\mpq\get_num.obj" \ ".\Debug\mpf\get_prc.obj" \ ".\Debug\mpz\get_si.obj" \ ".\Debug\mpf\get_str.obj" \ ".\Debug\mpfr\get_str.obj" \ ".\Debug\mpn\get_str.obj" \ ".\Debug\mpz\get_str.obj" \ ".\Debug\mpz\get_ui.obj" \ ".\Debug\mpz\getlimbn.obj" \ ".\Debug\mpn\hamdist.obj" \ ".\Debug\mpz\hamdist.obj" \ ".\Debug\mpf\init.obj" \ ".\Debug\mpfr\init.obj" \ ".\Debug\mpq\init.obj" \ ".\Debug\mpz\init.obj" \ ".\Debug\mpf\init2.obj" \ ".\Debug\mpn\inlines.obj" \ ".\Debug\mpz\inp_raw.obj" \ ".\Debug\mpf\inp_str.obj" \ ".\Debug\mpz\inp_str.obj" \ ".\Debug\insert-dbl.obj" \ ".\Debug\mpq\inv.obj" \ ".\Debug\mpz\invert.obj" \ ".\Debug\mpz\ior.obj" \ ".\Debug\mpf\iset.obj" \ ".\Debug\mpz\iset.obj" \ ".\Debug\mpf\iset_d.obj" \ ".\Debug\mpz\iset_d.obj" \ ".\Debug\mpf\iset_si.obj" \ ".\Debug\mpz\iset_si.obj" \ ".\Debug\mpf\iset_str.obj" \ ".\Debug\mpz\iset_str.obj" \ ".\Debug\mpf\iset_ui.obj" \ ".\Debug\mpz\iset_ui.obj" \ ".\Debug\mpn\jacbase.obj" \ ".\Debug\mpz\jacobi.obj" \ ".\Debug\mpfr\karadiv.obj" \ ".\Debug\mpfr\karasqrt.obj" \ ".\Debug\mpz\kronsz.obj" \ ".\Debug\mpz\kronuz.obj" \ ".\Debug\mpz\kronzs.obj" \ ".\Debug\mpz\kronzu.obj" \ ".\Debug\mpz\lcm.obj" \ ".\Debug\mpz\legendre.obj" \ ".\Debug\mpfr\log.obj" \ ".\Debug\mpfr\log2.obj" \ ".\Debug\mpn\lshift.obj" \ ".\Debug\memory.obj" \ ".\Debug\mpz\mod.obj" \ ".\Debug\mpn\mod_1.obj" \ ".\Debug\mpn\mod_1_rs.obj" \ ".\Debug\mpn\mp_bases.obj" \ ".\Debug\mp_bpl.obj" \ ".\Debug\mp_clz_tab.obj" \ ".\Debug\mp_minv_tab.obj" \ ".\Debug\mp_set_fns.obj" \ ".\Debug\mpf\mul.obj" \ ".\Debug\mpfr\mul.obj" \ ".\Debug\mpn\mul.obj" \ ".\Debug\mpq\mul.obj" \ ".\Debug\mpz\mul.obj" \ ".\Debug\mpn\mul_1.obj" \ ".\Debug\mpf\mul_2exp.obj" \ ".\Debug\mpfr\mul_2exp.obj" \ ".\Debug\mpz\mul_2exp.obj" \ ".\Debug\mpn\mul_basecase.obj" \ ".\Debug\mpn\mul_fft.obj" \ ".\Debug\mpn\mul_n.obj" \ ".\Debug\mpz\mul_si.obj" \ ".\Debug\mpf\mul_ui.obj" \ ".\Debug\mpfr\mul_ui.obj" \ ".\Debug\mpz\mul_ui.obj" \ ".\Debug\mpf\neg.obj" \ ".\Debug\mpfr\neg.obj" \ ".\Debug\mpq\neg.obj" \ ".\Debug\mpz\neg.obj" \ ".\Debug\mpz\nextprime.obj" \ ".\Debug\mpz\out_raw.obj" \ ".\Debug\mpf\out_str.obj" \ ".\Debug\mpfr\out_str.obj" \ ".\Debug\mpq\out_str.obj" \ ".\Debug\mpz\out_str.obj" \ ".\Debug\mpz\perfpow.obj" \ ".\Debug\mpn\perfsqr.obj" \ ".\Debug\mpz\perfsqr.obj" \ ".\Debug\mpfr\pi.obj" \ ".\Debug\mpn\popcount.obj" \ ".\Debug\mpz\popcount.obj" \ ".\Debug\mpfr\pow.obj" \ ".\Debug\mpf\pow_ui.obj" \ ".\Debug\mpz\pow_ui.obj" \ ".\Debug\mpz\powm.obj" \ ".\Debug\mpz\powm_ui.obj" \ ".\Debug\mpz\pprime_p.obj" \ ".\Debug\mpn\pre_mod_1.obj" \ ".\Debug\mpfr\print_raw.obj" \ ".\Debug\mpfr\print_rnd_mode.obj" \ ".\Debug\rand.obj" \ ".\Debug\randclr.obj" \ ".\Debug\randlc.obj" \ ".\Debug\randlc2x.obj" \ ".\Debug\mpfr\random.obj" \ ".\Debug\mpn\random.obj" \ ".\Debug\mpz\random.obj" \ ".\Debug\mpf\random2.obj" \ ".\Debug\mpn\random2.obj" \ ".\Debug\mpz\random2.obj" \ ".\Debug\randraw.obj" \ ".\Debug\randsd.obj" \ ".\Debug\randsdui.obj" \ ".\Debug\mpz\realloc.obj" \ ".\Debug\mpf\reldiff.obj" \ ".\Debug\mpz\remove.obj" \ ".\Debug\mpz\root.obj" \ ".\Debug\mpfr\round.obj" \ ".\Debug\mpz\rrandomb.obj" \ ".\Debug\mpn\rshift.obj" \ ".\Debug\mpn\sb_divrem_mn.obj" \ ".\Debug\mpn\scan0.obj" \ ".\Debug\mpz\scan0.obj" \ ".\Debug\mpn\scan1.obj" \ ".\Debug\mpz\scan1.obj" \ ".\Debug\mpf\set.obj" \ ".\Debug\mpfr\set.obj" \ ".\Debug\mpq\set.obj" \ ".\Debug\mpz\set.obj" \ ".\Debug\mpf\set_d.obj" \ ".\Debug\mpfr\set_d.obj" \ ".\Debug\mpq\set_d.obj" \ ".\Debug\mpz\set_d.obj" \ ".\Debug\mpq\set_den.obj" \ ".\Debug\mpf\set_dfl_prec.obj" \ ".\Debug\mpfr\set_dfl_prec.obj" \ ".\Debug\mpfr\set_dfl_rnd.obj" \ ".\Debug\mpfr\set_f.obj" \ ".\Debug\mpz\set_f.obj" \ ".\Debug\mpq\set_num.obj" \ ".\Debug\mpf\set_prc.obj" \ ".\Debug\mpf\set_prc_raw.obj" \ ".\Debug\mpfr\set_prec.obj" \ ".\Debug\mpf\set_q.obj" \ ".\Debug\mpz\set_q.obj" \ ".\Debug\mpf\set_si.obj" \ ".\Debug\mpfr\set_si.obj" \ ".\Debug\mpq\set_si.obj" \ ".\Debug\mpz\set_si.obj" \ ".\Debug\mpf\set_str.obj" \ ".\Debug\mpn\set_str.obj" \ ".\Debug\mpz\set_str.obj" \ ".\Debug\mpfr\set_str_raw.obj" \ ".\Debug\mpf\set_ui.obj" \ ".\Debug\mpq\set_ui.obj" \ ".\Debug\mpz\set_ui.obj" \ ".\Debug\mpf\set_z.obj" \ ".\Debug\mpfr\set_z.obj" \ ".\Debug\mpq\set_z.obj" \ ".\Debug\mpz\setbit.obj" \ ".\Debug\mpf\size.obj" \ ".\Debug\mpz\size.obj" \ ".\Debug\mpz\sizeinbase.obj" \ ".\Debug\mpn\sqr_basecase.obj" \ ".\Debug\mpf\sqrt.obj" \ ".\Debug\mpfr\sqrt.obj" \ ".\Debug\mpz\sqrt.obj" \ ".\Debug\mpf\sqrt_ui.obj" \ ".\Debug\mpn\sqrtrem.obj" \ ".\Debug\mpz\sqrtrem.obj" \ ".\Debug\stack-alloc.obj" \ ".\Debug\mpf\sub.obj" \ ".\Debug\mpfr\sub.obj" \ ".\Debug\mpq\sub.obj" \ ".\Debug\mpz\sub.obj" \ ".\Debug\mpn\sub_n.obj" \ ".\Debug\mpf\sub_ui.obj" \ ".\Debug\mpz\sub_ui.obj" \ ".\Debug\mpn\submul_1.obj" \ ".\Debug\mpf\swap.obj" \ ".\Debug\mpq\swap.obj" \ ".\Debug\mpz\swap.obj" \ ".\Debug\mpz\tdiv_q.obj" \ ".\Debug\mpz\tdiv_q_2exp.obj" \ ".\Debug\mpz\tdiv_q_ui.obj" \ ".\Debug\mpn\tdiv_qr.obj" \ ".\Debug\mpz\tdiv_qr.obj" \ ".\Debug\mpz\tdiv_qr_ui.obj" \ ".\Debug\mpz\tdiv_r.obj" \ ".\Debug\mpz\tdiv_r_2exp.obj" \ ".\Debug\mpz\tdiv_r_ui.obj" \ ".\Debug\mpz\tdiv_ui.obj" \ ".\Debug\mpf\trunc.obj" \ ".\Debug\mpz\tstbit.obj" \ ".\Debug\mpf\ui_div.obj" \ ".\Debug\mpz\ui_pow_ui.obj" \ ".\Debug\mpf\ui_sub.obj" \ ".\Debug\mpf\urandomb.obj" \ ".\Debug\mpz\urandomb.obj" \ ".\Debug\mpz\urandomm.obj" \ ".\Debug\version.obj" \ ".\Debug\win32dllstub.obj" \ ".\Debug\mpz\xor.obj" \ ".\Debug\mpfr\zeta.obj" "..\lib\gmpDebug.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("gmp.dep") !INCLUDE "gmp.dep" !ELSE !MESSAGE Warning: cannot find "gmp.dep" !ENDIF !ENDIF !IF "$(CFG)" == "gmp - Win32 Release" || "$(CFG)" == "gmp - Win32 Debug" SOURCE="mpf\abs.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\abs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\abs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\abs.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\abs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\abs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\add.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\add.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\add.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\add.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\add_n.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\add_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\add_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\add_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\add_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\add_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\add_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\add_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\add_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\add_ulp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\add_ulp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\add_ulp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\addmul_1.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\addmul_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\addmul_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\addmul_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\addmul_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\addmul_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\addsub_n.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\addsub_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\addsub_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\agm.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\agm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\agm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\and.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\and.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\and.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\array_init.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\array_init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\array_init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="assert.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\assert.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\assert.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\bdivmod.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\bdivmod.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\bdivmod.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\bin_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\bin_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\bin_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\bin_uiui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\bin_uiui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\bin_uiui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\bz_divrem_n.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\bz_divrem_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\bz_divrem_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\canonicalize.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\canonicalize.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\canonicalize.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\cdiv_q.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\cdiv_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\cdiv_q_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_q_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\cdiv_q_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\cdiv_qr.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\cdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\cdiv_qr_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_qr_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\cdiv_qr_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\cdiv_r.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_r.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\cdiv_r.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\cdiv_r_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_r_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\cdiv_r_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\cdiv_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\cdiv_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\ceil.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\ceil.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\ceil.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\clear.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\clear.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\clear.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\clear.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\clrbit.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\clrbit.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\clrbit.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\cmp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\cmp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\cmp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\cmp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\cmp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\cmp_si.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\cmp_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\cmp_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\cmp_si.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cmp_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\cmp_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\cmp_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\cmp_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\cmp_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\cmp_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\cmpabs.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cmpabs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\cmpabs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\cmpabs_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cmpabs_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\cmpabs_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\com.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\com.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\com.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="compat.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\compat.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\compat.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\div.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\div.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\div.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\div_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\div_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\div_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\div_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\div_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\div_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\div_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\div_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\div_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\div_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\div_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\div_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\diveby3.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\diveby3.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\diveby3.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\divexact.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\divexact.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\divexact.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\divrem.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\divrem.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\divrem.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\divrem_1.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\divrem_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\divrem_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\divrem_2.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\divrem_2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\divrem_2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\dump.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\dump.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\dump.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\dump.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\dump.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\dump.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\dump.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\dump.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\dump.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\eq.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\eq.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\eq.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\equal.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\equal.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\equal.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="errno.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\errno.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\errno.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\exp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="extract-dbl.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\extract-dbl.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\extract-dbl.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fac_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fac_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fac_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fdiv_q.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fdiv_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fdiv_q_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_q_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fdiv_q_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fdiv_q_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_q_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fdiv_q_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fdiv_qr.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fdiv_qr_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_qr_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fdiv_qr_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fdiv_r.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_r.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fdiv_r.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fdiv_r_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_r_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fdiv_r_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fdiv_r_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_r_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fdiv_r_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fdiv_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fdiv_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fib_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fib_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fib_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fits_sint_p.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fits_sint_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fits_sint_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fits_slong_p.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fits_slong_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fits_slong_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fits_sshort_p.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fits_sshort_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fits_sshort_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fits_uint_p.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fits_uint_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fits_uint_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fits_ulong_p.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fits_ulong_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fits_ulong_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\fits_ushort_p.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fits_ushort_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\fits_ushort_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\floor.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\floor.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\floor.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\gcd.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\gcd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\gcd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\gcd.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\gcd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\gcd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\gcd_1.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\gcd_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\gcd_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\gcd_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\gcd_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\gcd_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\gcdext.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\gcdext.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\gcdext.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\gcdext.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\gcdext.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\gcdext.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\get_d.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\get_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\get_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\get_d.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\get_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\get_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\get_d.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\get_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\get_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\get_den.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\get_den.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\get_den.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\get_num.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\get_num.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\get_num.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\get_prc.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\get_prc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\get_prc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\get_si.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\get_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\get_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\get_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\get_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\get_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\get_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\get_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\get_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\get_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\getlimbn.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\getlimbn.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\getlimbn.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\hamdist.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\hamdist.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\hamdist.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\hamdist.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\hamdist.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\hamdist.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\init.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\init.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\init.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\init.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\init2.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\init2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\init2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\inlines.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\inlines.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\inlines.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\inp_raw.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\inp_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\inp_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\inp_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\inp_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\inp_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\inp_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\inp_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\inp_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="insert-dbl.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\insert-dbl.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\insert-dbl.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\inv.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\inv.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\inv.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\invert.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\invert.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\invert.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\ior.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\ior.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\ior.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\iset.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\iset.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\iset.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\iset.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\iset.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\iset.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\iset_d.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\iset_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\iset_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\iset_d.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\iset_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\iset_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\iset_si.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\iset_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\iset_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\iset_si.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\iset_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\iset_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\iset_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\iset_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\iset_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\iset_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\iset_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\iset_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\iset_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\iset_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\iset_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\iset_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\iset_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\iset_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\jacbase.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\jacbase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\jacbase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\jacobi.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\jacobi.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\jacobi.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\karadiv.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\karadiv.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\karadiv.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\karasqrt.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\karasqrt.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\karasqrt.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\kronsz.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\kronsz.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\kronsz.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\kronuz.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\kronuz.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\kronuz.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\kronzs.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\kronzs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\kronzs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\kronzu.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\kronzu.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\kronzu.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\lcm.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\lcm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\lcm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\legendre.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\legendre.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\legendre.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\log.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\log.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\log.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\log2.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\log2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\log2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\lshift.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\lshift.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\lshift.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="memory.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\memory.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\memory.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\mod.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\mod.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\mod.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\mod_1.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mod_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\mod_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\mod_1_rs.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mod_1_rs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\mod_1_rs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\mp_bases.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mp_bases.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\mp_bases.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mp_bpl.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\mp_bpl.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\mp_bpl.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mp_clz_tab.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\mp_clz_tab.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\mp_clz_tab.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mp_minv_tab.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\mp_minv_tab.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\mp_minv_tab.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mp_set_fns.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\mp_set_fns.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\mp_set_fns.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\mul.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\mul.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\mul.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\mul.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\mul.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\mul_1.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mul_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\mul_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\mul_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\mul_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\mul_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\mul_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\mul_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\mul_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\mul_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\mul_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\mul_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\mul_basecase.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mul_basecase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\mul_basecase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\mul_fft.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mul_fft.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\mul_fft.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\mul_n.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mul_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\mul_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\mul_si.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\mul_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\mul_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\mul_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\mul_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\mul_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\mul_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\mul_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\mul_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\mul_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\mul_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\mul_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\neg.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\neg.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\neg.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\neg.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\nextprime.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\nextprime.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\nextprime.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\out_raw.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\out_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\out_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\out_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\out_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\out_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\out_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\perfpow.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\perfpow.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\perfpow.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\perfsqr.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\perfsqr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\perfsqr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\perfsqr.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\perfsqr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\perfsqr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\pi.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\pi.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\pi.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\popcount.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\popcount.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\popcount.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\popcount.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\popcount.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\popcount.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\pow.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\pow.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\pow.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\pow_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\pow_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\powm.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\powm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\powm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\powm_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\powm_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\powm_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\pprime_p.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\pprime_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\pprime_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\pre_mod_1.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\pre_mod_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\pre_mod_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\print_raw.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\print_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\print_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\print_rnd_mode.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\print_rnd_mode.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\print_rnd_mode.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="rand.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\rand.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\rand.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="randclr.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\randclr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\randclr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="randlc.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\randlc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\randlc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="randlc2x.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\randlc2x.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\randlc2x.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\random.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\random.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\random.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\random.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\random.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\random.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\random.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\random.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\random.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\random2.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\random2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\random2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\random2.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\random2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\random2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\random2.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\random2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\random2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="randraw.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\randraw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\randraw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="randsd.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\randsd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\randsd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="randsdui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\randsdui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\randsdui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\realloc.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\realloc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\realloc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\reldiff.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\reldiff.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\reldiff.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\remove.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\remove.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\remove.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\root.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\root.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\root.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\round.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\round.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\round.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\rrandomb.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\rrandomb.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\rrandomb.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\rshift.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\rshift.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\rshift.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\sb_divrem_mn.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\sb_divrem_mn.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\sb_divrem_mn.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\scan0.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\scan0.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\scan0.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\scan0.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\scan0.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\scan0.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\scan1.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\scan1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\scan1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\scan1.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\scan1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\scan1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\set.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\set.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\set.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\set.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\set_d.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\set_d.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\set_d.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\set_d.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\set_den.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_den.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\set_den.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\set_dfl_prec.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_dfl_prec.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\set_dfl_prec.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\set_dfl_prec.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\set_dfl_prec.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\set_dfl_prec.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\set_dfl_rnd.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\set_dfl_rnd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\set_dfl_rnd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\set_f.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\set_f.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\set_f.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\set_f.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set_f.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\set_f.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\set_num.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_num.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\set_num.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\set_prc.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_prc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\set_prc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\set_prc_raw.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_prc_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\set_prc_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\set_prec.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\set_prec.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\set_prec.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\set_q.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\set_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\set_q.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\set_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\set_si.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\set_si.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\set_si.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\set_si.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\set_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\set_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\set_str.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\set_str_raw.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\set_str_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\set_str_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\set_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\set_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\set_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\set_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\set_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\set_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\set_z.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_z.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\set_z.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\set_z.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\set_z.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\set_z.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\set_z.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_z.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\set_z.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\setbit.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\setbit.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\setbit.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\size.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\size.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\size.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\size.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\size.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\size.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\sizeinbase.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\sizeinbase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\sizeinbase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\sqr_basecase.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\sqr_basecase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\sqr_basecase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\sqrt.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\sqrt.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\sqrt.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\sqrt.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\sqrt.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\sqrt.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\sqrt.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\sqrt.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\sqrt.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\sqrt_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\sqrt_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\sqrt_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\sqrtrem.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\sqrtrem.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\sqrtrem.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\sqrtrem.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\sqrtrem.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\sqrtrem.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="stack-alloc.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\stack-alloc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\stack-alloc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\sub.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\sub.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\sub.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\sub.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\sub_n.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\sub_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\sub_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\sub_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\sub_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\sub_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\sub_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\sub_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\sub_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\submul_1.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\submul_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\submul_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\swap.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\swap.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\swap.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpq\swap.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\swap.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c ".\Debug\mpq\swap.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\swap.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\swap.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\swap.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\tdiv_q.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\tdiv_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\tdiv_q_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_q_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\tdiv_q_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\tdiv_q_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_q_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\tdiv_q_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpn\generic\tdiv_qr.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\tdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c ".\Debug\mpn\tdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\tdiv_qr.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\tdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\tdiv_qr_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_qr_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\tdiv_qr_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\tdiv_r.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_r.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\tdiv_r.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\tdiv_r_2exp.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_r_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\tdiv_r_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\tdiv_r_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_r_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\tdiv_r_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\tdiv_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\tdiv_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\trunc.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\trunc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\trunc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\tstbit.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tstbit.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\tstbit.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\ui_div.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\ui_div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\ui_div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\ui_pow_ui.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\ui_pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\ui_pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\ui_sub.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\ui_sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\ui_sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpf\urandomb.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\urandomb.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c ".\Debug\mpf\urandomb.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\urandomb.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\urandomb.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\urandomb.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\urandomm.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\urandomm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\urandomm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="version.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\version.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\version.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="win32dllstub.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release/" /Fd"Release/" /FD /c ".\Release\win32dllstub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ".\Debug\win32dllstub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpz\xor.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\xor.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c ".\Debug\mpz\xor.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE="mpfr\zeta.c" !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /G5 /MD /W3 /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Release\mpfr/" /Fd"Release\mpfr/" /FD /c ".\Release\mpfr\zeta.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /G5 /MDd /W3 /Gm /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /Fo"Debug\mpfr/" /Fd"Debug\mpfr/" /FD /GZ /c ".\Debug\mpfr\zeta.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF !ENDIF core++-1.7/win32/patches/gmp-3.1.1/longlong.h0100644000175000001440000013616007437361201017605 0ustar joachimusers/* longlong.h -- definitions for mixed size 32/64 bit arithmetic. Copyright (C) 1991, 1992, 1993, 1994, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this file; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* You have to define the following before including this file: UWtype -- An unsigned type, default type for operations (typically a "word") UHWtype -- An unsigned type, at least half the size of UWtype. UDWtype -- An unsigned type, at least twice as large a UWtype W_TYPE_SIZE -- size in bits of UWtype SItype, USItype -- Signed and unsigned 32 bit types. DItype, UDItype -- Signed and unsigned 64 bit types. On a 32 bit machine UWtype should typically be USItype; on a 64 bit machine, UWtype should typically be UDItype. */ #define __BITS4 (W_TYPE_SIZE / 4) #define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2)) #define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1)) #define __ll_highpart(t) ((UWtype) (t) >> (W_TYPE_SIZE / 2)) /* This is used to make sure no undesirable sharing between different libraries that use this file takes place. */ #ifndef __MPN #define __MPN(x) __##x #endif #ifndef _PROTO #if (__STDC__-0) || defined (__cplusplus) #define _PROTO(x) x #else #define _PROTO(x) () #endif #endif /* Define auxiliary asm macros. 1) umul_ppmm(high_prod, low_prod, multipler, multiplicand) multiplies two UWtype integers MULTIPLER and MULTIPLICAND, and generates a two UWtype word product in HIGH_PROD and LOW_PROD. 2) __umulsidi3(a,b) multiplies two UWtype integers A and B, and returns a UDWtype product. This is just a variant of umul_ppmm. 3) udiv_qrnnd(quotient, remainder, high_numerator, low_numerator, denominator) divides a UDWtype, composed by the UWtype integers HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and places the quotient in QUOTIENT and the remainder in REMAINDER. HIGH_NUMERATOR must be less than DENOMINATOR for correct operation. If, in addition, the most significant bit of DENOMINATOR must be 1, then the pre-processor symbol UDIV_NEEDS_NORMALIZATION is defined to 1. 4) sdiv_qrnnd(quotient, remainder, high_numerator, low_numerator, denominator). Like udiv_qrnnd but the numbers are signed. The quotient is rounded towards 0. 5) count_leading_zeros(count, x) counts the number of zero-bits from the msb to the first non-zero bit in the UWtype X. This is the number of steps X needs to be shifted left to set the msb. Undefined for X == 0, unless the symbol COUNT_LEADING_ZEROS_0 is defined to some value. 6) count_trailing_zeros(count, x) like count_leading_zeros, but counts from the least significant end. 7) add_ssaaaa(high_sum, low_sum, high_addend_1, low_addend_1, high_addend_2, low_addend_2) adds two UWtype integers, composed by HIGH_ADDEND_1 and LOW_ADDEND_1, and HIGH_ADDEND_2 and LOW_ADDEND_2 respectively. The result is placed in HIGH_SUM and LOW_SUM. Overflow (i.e. carry out) is not stored anywhere, and is lost. 8) sub_ddmmss(high_difference, low_difference, high_minuend, low_minuend, high_subtrahend, low_subtrahend) subtracts two two-word UWtype integers, composed by HIGH_MINUEND_1 and LOW_MINUEND_1, and HIGH_SUBTRAHEND_2 and LOW_SUBTRAHEND_2 respectively. The result is placed in HIGH_DIFFERENCE and LOW_DIFFERENCE. Overflow (i.e. carry out) is not stored anywhere, and is lost. If any of these macros are left undefined for a particular CPU, C macros are used. */ /* The CPUs come in alphabetical order below. Please add support for more CPUs here, or improve the current support for the CPUs below! */ #if defined (__alpha) && W_TYPE_SIZE == 64 #if defined (__GNUC__) #define umul_ppmm(ph, pl, m0, m1) \ do { \ UDItype __m0 = (m0), __m1 = (m1); \ __asm__ ("umulh %r1,%2,%0" \ : "=r" (ph) \ : "%rJ" (m0), "rI" (m1)); \ (pl) = __m0 * __m1; \ } while (0) #define UMUL_TIME 18 #ifndef LONGLONG_STANDALONE #define udiv_qrnnd(q, r, n1, n0, d) \ do { UDItype __di; \ __di = __MPN(invert_limb) (d); \ udiv_qrnnd_preinv (q, r, n1, n0, d, __di); \ } while (0) #define UDIV_NEEDS_NORMALIZATION 1 #define UDIV_TIME 220 long __MPN(count_leading_zeros) (); #define count_leading_zeros(count, x) \ ((count) = __MPN(count_leading_zeros) (x)) #endif /* LONGLONG_STANDALONE */ #else /* ! __GNUC__ */ #include #define umul_ppmm(ph, pl, m0, m1) \ do { \ UDItype __m0 = (m0), __m1 = (m1); \ (ph) = __UMULH (m0, m1); \ (pl) = __m0 * __m1; \ } while (0) #endif #endif /* __alpha */ #if defined (__hppa) && W_TYPE_SIZE == 64 /* We put the result pointer parameter last here, since it makes passing of the other parameters more efficient. */ #ifndef LONGLONG_STANDALONE #define umul_ppmm(wh, wl, u, v) \ do { \ UDItype __p0; \ (wh) = __MPN(umul_ppmm) (u, v, &__p0); \ (wl) = __p0; \ } while (0) extern UDItype __MPN(umul_ppmm) _PROTO ((UDItype, UDItype, UDItype *)); #define udiv_qrnnd(q, r, n1, n0, d) \ do { UDItype __r; \ (q) = __MPN(udiv_qrnnd) (n1, n0, d, &__r); \ (r) = __r; \ } while (0) extern UDItype __MPN(udiv_qrnnd) _PROTO ((UDItype, UDItype, UDItype, UDItype *)); #define UMUL_TIME 8 #define UDIV_TIME 60 #endif /* LONGLONG_STANDALONE */ #endif /* hppa */ #if defined (__ia64) && W_TYPE_SIZE == 64 #if defined (__GNUC__) #define umul_ppmm(ph, pl, m0, m1) \ do { \ UDItype __m0 = (m0), __m1 = (m1); \ __asm__ ("xma.hu %0 = %1, %2, f0" \ : "=e" (ph) \ : "e" (m0), "e" (m1)); \ (pl) = __m0 * __m1; \ } while (0) #endif #endif #if defined (__GNUC__) && !defined (NO_ASM) /* We sometimes need to clobber "cc" with gcc2, but that would not be understood by gcc1. Use cpp to avoid major code duplication. */ #if __GNUC__ < 2 #define __CLOBBER_CC #define __AND_CLOBBER_CC #else /* __GNUC__ >= 2 */ #define __CLOBBER_CC : "cc" #define __AND_CLOBBER_CC , "cc" #endif /* __GNUC__ < 2 */ #if (defined (__a29k__) || defined (_AM29K)) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add %1,%4,%5\n\taddc %0,%2,%3" \ : "=r" (sh), "=&r" (sl) \ : "%r" (ah), "rI" (bh), "%r" (al), "rI" (bl)) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("sub %1,%4,%5\n\tsubc %0,%2,%3" \ : "=r" (sh), "=&r" (sl) \ : "r" (ah), "rI" (bh), "r" (al), "rI" (bl)) #define umul_ppmm(xh, xl, m0, m1) \ do { \ USItype __m0 = (m0), __m1 = (m1); \ __asm__ ("multiplu %0,%1,%2" \ : "=r" (xl) \ : "r" (__m0), "r" (__m1)); \ __asm__ ("multmu %0,%1,%2" \ : "=r" (xh) \ : "r" (__m0), "r" (__m1)); \ } while (0) #define udiv_qrnnd(q, r, n1, n0, d) \ __asm__ ("dividu %0,%3,%4" \ : "=r" (q), "=q" (r) \ : "1" (n1), "r" (n0), "r" (d)) #define count_leading_zeros(count, x) \ __asm__ ("clz %0,%1" \ : "=r" (count) \ : "r" (x)) #define COUNT_LEADING_ZEROS_0 32 #endif /* __a29k__ */ #if defined (__arm__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("adds\t%1, %4, %5\n\tadc\t%0, %2, %3" \ : "=r" (sh), "=&r" (sl) \ : "%r" (ah), "rI" (bh), "%r" (al), "rI" (bl)) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("subs\t%1, %4, %5\n\tsbc\t%0, %2, %3" \ : "=r" (sh), "=&r" (sl) \ : "r" (ah), "rI" (bh), "r" (al), "rI" (bl)) #if 1 || defined (__arm_m__) /* `M' series has widening multiply support */ #define umul_ppmm(xh, xl, a, b) \ __asm__ ("umull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b)) #define smul_ppmm(xh, xl, a, b) \ __asm__ ("smull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b)) #define UMUL_TIME 5 #else #define umul_ppmm(xh, xl, a, b) \ __asm__ ("%@ Inlined umul_ppmm mov %|r0, %2, lsr #16 mov %|r2, %3, lsr #16 bic %|r1, %2, %|r0, lsl #16 bic %|r2, %3, %|r2, lsl #16 mul %1, %|r1, %|r2 mul %|r2, %|r0, %|r2 mul %|r1, %0, %|r1 mul %0, %|r0, %0 adds %|r1, %|r2, %|r1 addcs %0, %0, #65536 adds %1, %1, %|r1, lsl #16 adc %0, %0, %|r1, lsr #16" \ : "=&r" (xh), "=r" (xl) \ : "r" (a), "r" (b) \ : "r0", "r1", "r2") #define UMUL_TIME 20 #endif #define UDIV_TIME 100 #endif /* __arm__ */ #if defined (__clipper__) && W_TYPE_SIZE == 32 #define umul_ppmm(w1, w0, u, v) \ ({union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __x; \ __asm__ ("mulwux %2,%0" \ : "=r" (__x.__ll) \ : "%0" ((USItype)(u)), "r" ((USItype)(v))); \ (w1) = __x.__i.__h; (w0) = __x.__i.__l;}) #define smul_ppmm(w1, w0, u, v) \ ({union {DItype __ll; \ struct {SItype __l, __h;} __i; \ } __x; \ __asm__ ("mulwx %2,%0" \ : "=r" (__x.__ll) \ : "%0" ((SItype)(u)), "r" ((SItype)(v))); \ (w1) = __x.__i.__h; (w0) = __x.__i.__l;}) #define __umulsidi3(u, v) \ ({UDItype __w; \ __asm__ ("mulwux %2,%0" \ : "=r" (__w) : "%0" ((USItype)(u)), "r" ((USItype)(v))); \ __w; }) #endif /* __clipper__ */ /* Fujitsu vector computers. */ #if defined (__uxp__) && W_TYPE_SIZE == 32 #define umul_ppmm(ph, pl, u, v) \ do { \ union {UDItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __asm__ ("mult.lu %1,%2,%0" : "=r" (__x.__ll) : "%r" (u), "rK" (v));\ (ph) = __x.__i.__h; \ (pl) = __x.__i.__l; \ } while (0) #define smul_ppmm(ph, pl, u, v) \ do { \ union {UDItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __asm__ ("mult.l %1,%2,%0" : "=r" (__x.__ll) : "%r" (u), "rK" (v)); \ (ph) = __x.__i.__h; \ (pl) = __x.__i.__l; \ } while (0) #endif #if defined (__gmicro__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add.w %5,%1\n\taddx %3,%0" \ : "=g" ((USItype)(sh)), "=&g" ((USItype)(sl)) \ : "%0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "%1" ((USItype)(al)), "g" ((USItype)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("sub.w %5,%1\n\tsubx %3,%0" \ : "=g" ((USItype)(sh)), "=&g" ((USItype)(sl)) \ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "1" ((USItype)(al)), "g" ((USItype)(bl))) #define umul_ppmm(ph, pl, m0, m1) \ __asm__ ("mulx %3,%0,%1" \ : "=g" ((USItype)(ph)), "=r" ((USItype)(pl)) \ : "%0" ((USItype)(m0)), "g" ((USItype)(m1))) #define udiv_qrnnd(q, r, nh, nl, d) \ __asm__ ("divx %4,%0,%1" \ : "=g" ((USItype)(q)), "=r" ((USItype)(r)) \ : "1" ((USItype)(nh)), "0" ((USItype)(nl)), "g" ((USItype)(d))) #define count_leading_zeros(count, x) \ __asm__ ("bsch/1 %1,%0" \ : "=g" (count) : "g" ((USItype)(x)), "0" ((USItype)0)) #endif #if defined (__hppa) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add %4,%5,%1\n\taddc %2,%3,%0" \ : "=r" (sh), "=&r" (sl) \ : "%rM" (ah), "rM" (bh), "%rM" (al), "rM" (bl)) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("sub %4,%5,%1\n\tsubb %2,%3,%0" \ : "=r" (sh), "=&r" (sl) \ : "rM" (ah), "rM" (bh), "rM" (al), "rM" (bl)) #if defined (_PA_RISC1_1) #define umul_ppmm(wh, wl, u, v) \ do { \ union {UDItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __asm__ ("xmpyu %1,%2,%0" : "=*f" (__x.__ll) : "*f" (u), "*f" (v)); \ (wh) = __x.__i.__h; \ (wl) = __x.__i.__l; \ } while (0) #define UMUL_TIME 8 #define UDIV_TIME 60 #else #define UMUL_TIME 40 #define UDIV_TIME 80 #endif #ifndef LONGLONG_STANDALONE #define udiv_qrnnd(q, r, n1, n0, d) \ do { USItype __r; \ (q) = __MPN(udiv_qrnnd) (&__r, (n1), (n0), (d)); \ (r) = __r; \ } while (0) extern USItype __MPN(udiv_qrnnd) _PROTO ((USItype *, USItype, USItype, USItype)); #endif /* LONGLONG_STANDALONE */ #define count_leading_zeros(count, x) \ do { \ USItype __tmp; \ __asm__ ( \ "ldi 1,%0 extru,= %1,15,16,%%r0 ; Bits 31..16 zero? extru,tr %1,15,16,%1 ; No. Shift down, skip add. ldo 16(%0),%0 ; Yes. Perform add. extru,= %1,23,8,%%r0 ; Bits 15..8 zero? extru,tr %1,23,8,%1 ; No. Shift down, skip add. ldo 8(%0),%0 ; Yes. Perform add. extru,= %1,27,4,%%r0 ; Bits 7..4 zero? extru,tr %1,27,4,%1 ; No. Shift down, skip add. ldo 4(%0),%0 ; Yes. Perform add. extru,= %1,29,2,%%r0 ; Bits 3..2 zero? extru,tr %1,29,2,%1 ; No. Shift down, skip add. ldo 2(%0),%0 ; Yes. Perform add. extru %1,30,1,%1 ; Extract bit 1. sub %0,%1,%0 ; Subtract it. " : "=r" (count), "=r" (__tmp) : "1" (x)); \ } while (0) #endif /* hppa */ #if (defined (__i370__) || defined (__mvs__)) && W_TYPE_SIZE == 32 #define smul_ppmm(xh, xl, m0, m1) \ do { \ union {DItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __asm__ ("mr %0,%3" \ : "=r" (__x.__i.__h), "=r" (__x.__i.__l) \ : "%1" (m0), "r" (m1)); \ (xh) = __x.__i.__h; (xl) = __x.__i.__l; \ } while (0) #define sdiv_qrnnd(q, r, n1, n0, d) \ do { \ union {DItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __x.__i.__h = n1; __x.__i.__l = n0; \ __asm__ ("dr %0,%2" \ : "=r" (__x.__ll) \ : "0" (__x.__ll), "r" (d)); \ (q) = __x.__i.__l; (r) = __x.__i.__h; \ } while (0) #endif #if (defined (__i386__) || defined (__i486__)) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("addl %5,%1\n\tadcl %3,%0" \ : "=r" ((USItype)(sh)), "=&r" ((USItype)(sl)) \ : "%0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "%1" ((USItype)(al)), "g" ((USItype)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("subl %5,%1\n\tsbbl %3,%0" \ : "=r" ((USItype)(sh)), "=&r" ((USItype)(sl)) \ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "1" ((USItype)(al)), "g" ((USItype)(bl))) #define umul_ppmm(w1, w0, u, v) \ __asm__ ("mull %3" \ : "=a" (w0), "=d" (w1) \ : "%0" ((USItype)(u)), "rm" ((USItype)(v))) #define udiv_qrnnd(q, r, n1, n0, d) \ __asm__ ("divl %4" \ : "=a" (q), "=d" (r) \ : "0" ((USItype)(n0)), "1" ((USItype)(n1)), "rm" ((USItype)(d))) #define count_leading_zeros(count, x) \ do { \ USItype __cbtmp; \ __asm__ ("bsrl %1,%0" : "=r" (__cbtmp) : "rm" ((USItype)(x))); \ (count) = __cbtmp ^ 31; \ } while (0) #define count_trailing_zeros(count, x) \ __asm__ ("bsfl %1,%0" : "=r" (count) : "rm" ((USItype)(x))) #ifndef UMUL_TIME #define UMUL_TIME 10 #endif #ifndef UDIV_TIME #define UDIV_TIME 40 #endif #endif /* 80x86 */ #if defined (__i860__) && W_TYPE_SIZE == 32 #define rshift_rhlc(r,h,l,c) \ __asm__ ("shr %3,r0,r0\;shrd %1,%2,%0" \ "=r" (r) : "r" (h), "r" (l), "rn" (c)) #endif /* i860 */ #if defined (__i960__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("cmpo 1,0\;addc %5,%4,%1\;addc %3,%2,%0" \ : "=r" (sh), "=&r" (sl) \ : "%dI" (ah), "dI" (bh), "%dI" (al), "dI" (bl)) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("cmpo 0,0\;subc %5,%4,%1\;subc %3,%2,%0" \ : "=r" (sh), "=&r" (sl) \ : "dI" (ah), "dI" (bh), "dI" (al), "dI" (bl)) #define umul_ppmm(w1, w0, u, v) \ ({union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __x; \ __asm__ ("emul %2,%1,%0" \ : "=d" (__x.__ll) : "%dI" (u), "dI" (v)); \ (w1) = __x.__i.__h; (w0) = __x.__i.__l;}) #define __umulsidi3(u, v) \ ({UDItype __w; \ __asm__ ("emul %2,%1,%0" : "=d" (__w) : "%dI" (u), "dI" (v)); \ __w; }) #define udiv_qrnnd(q, r, nh, nl, d) \ do { \ union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __nn; \ __nn.__i.__h = (nh); __nn.__i.__l = (nl); \ __asm__ ("ediv %d,%n,%0" \ : "=d" (__rq.__ll) : "dI" (__nn.__ll), "dI" (d)); \ (r) = __rq.__i.__l; (q) = __rq.__i.__h; \ } while (0) #define count_leading_zeros(count, x) \ do { \ USItype __cbtmp; \ __asm__ ("scanbit %1,%0" : "=r" (__cbtmp) : "r" (x)); \ (count) = __cbtmp ^ 31; \ } while (0) #define COUNT_LEADING_ZEROS_0 (-32) /* sic */ #if defined (__i960mx) /* what is the proper symbol to test??? */ #define rshift_rhlc(r,h,l,c) \ do { \ union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __nn; \ __nn.__i.__h = (h); __nn.__i.__l = (l); \ __asm__ ("shre %2,%1,%0" : "=d" (r) : "dI" (__nn.__ll), "dI" (c)); \ } #endif /* i960mx */ #endif /* i960 */ #if (defined (__mc68000__) || defined (__mc68020__) || defined(mc68020) \ || defined (__m68k__) || defined (__mc5200__) || defined (__mc5206e__) \ || defined (__mc5307__)) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add%.l %5,%1\n\taddx%.l %3,%0" \ : "=d" ((USItype)(sh)), "=&d" ((USItype)(sl)) \ : "%0" ((USItype)(ah)), "d" ((USItype)(bh)), \ "%1" ((USItype)(al)), "g" ((USItype)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("sub%.l %5,%1\n\tsubx%.l %3,%0" \ : "=d" ((USItype)(sh)), "=&d" ((USItype)(sl)) \ : "0" ((USItype)(ah)), "d" ((USItype)(bh)), \ "1" ((USItype)(al)), "g" ((USItype)(bl))) /* The '020, '030, '040 and CPU32 have 32x32->64 and 64/32->32q-32r. */ #if defined (__mc68020__) || defined(mc68020) \ || defined (__mc68030__) || defined (mc68030) \ || defined (__mc68040__) || defined (mc68040) \ || defined (__mc68332__) || defined (mc68332) \ || defined (__NeXT__) #define umul_ppmm(w1, w0, u, v) \ __asm__ ("mulu%.l %3,%1:%0" \ : "=d" ((USItype)(w0)), "=d" ((USItype)(w1)) \ : "%0" ((USItype)(u)), "dmi" ((USItype)(v))) #define UMUL_TIME 45 #define udiv_qrnnd(q, r, n1, n0, d) \ __asm__ ("divu%.l %4,%1:%0" \ : "=d" ((USItype)(q)), "=d" ((USItype)(r)) \ : "0" ((USItype)(n0)), "1" ((USItype)(n1)), "dmi" ((USItype)(d))) #define UDIV_TIME 90 #define sdiv_qrnnd(q, r, n1, n0, d) \ __asm__ ("divs%.l %4,%1:%0" \ : "=d" ((USItype)(q)), "=d" ((USItype)(r)) \ : "0" ((USItype)(n0)), "1" ((USItype)(n1)), "dmi" ((USItype)(d))) #else /* for other 68k family members use 16x16->32 multiplication */ #define umul_ppmm(xh, xl, a, b) \ do { USItype __umul_tmp1, __umul_tmp2; \ __asm__ ("| Inlined umul_ppmm move%.l %5,%3 move%.l %2,%0 move%.w %3,%1 swap %3 swap %0 mulu%.w %2,%1 mulu%.w %3,%0 mulu%.w %2,%3 swap %2 mulu%.w %5,%2 add%.l %3,%2 jcc 1f add%.l %#0x10000,%0 1: move%.l %2,%3 clr%.w %2 swap %2 swap %3 clr%.w %3 add%.l %3,%1 addx%.l %2,%0 | End inlined umul_ppmm" \ : "=&d" ((USItype)(xh)), "=&d" ((USItype)(xl)), \ "=d" (__umul_tmp1), "=&d" (__umul_tmp2) \ : "%2" ((USItype)(a)), "d" ((USItype)(b))); \ } while (0) #define UMUL_TIME 100 #define UDIV_TIME 400 #endif /* not mc68020 */ /* The '020, '030, '040 and '060 have bitfield insns. */ #if defined (__mc68020__) || defined (mc68020) \ || defined (__mc68030__) || defined (mc68030) \ || defined (__mc68040__) || defined (mc68040) \ || defined (__mc68060__) || defined (mc68060) \ || defined (__NeXT__) #define count_leading_zeros(count, x) \ __asm__ ("bfffo %1{%b2:%b2},%0" \ : "=d" ((USItype) (count)) \ : "od" ((USItype) (x)), "n" (0)) #define COUNT_LEADING_ZEROS_0 32 #endif #endif /* mc68000 */ #if defined (__m88000__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("addu.co %1,%r4,%r5\n\taddu.ci %0,%r2,%r3" \ : "=r" (sh), "=&r" (sl) \ : "%rJ" (ah), "rJ" (bh), "%rJ" (al), "rJ" (bl)) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("subu.co %1,%r4,%r5\n\tsubu.ci %0,%r2,%r3" \ : "=r" (sh), "=&r" (sl) \ : "rJ" (ah), "rJ" (bh), "rJ" (al), "rJ" (bl)) #define count_leading_zeros(count, x) \ do { \ USItype __cbtmp; \ __asm__ ("ff1 %0,%1" : "=r" (__cbtmp) : "r" (x)); \ (count) = __cbtmp ^ 31; \ } while (0) #define COUNT_LEADING_ZEROS_0 63 /* sic */ #if defined (__m88110__) #define umul_ppmm(wh, wl, u, v) \ do { \ union {UDItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __asm__ ("mulu.d %0,%1,%2" : "=r" (__x.__ll) : "r" (u), "r" (v)); \ (wh) = __x.__i.__h; \ (wl) = __x.__i.__l; \ } while (0) #define udiv_qrnnd(q, r, n1, n0, d) \ ({union {UDItype __ll; \ struct {USItype __h, __l;} __i; \ } __x, __q; \ __x.__i.__h = (n1); __x.__i.__l = (n0); \ __asm__ ("divu.d %0,%1,%2" \ : "=r" (__q.__ll) : "r" (__x.__ll), "r" (d)); \ (r) = (n0) - __q.__l * (d); (q) = __q.__l; }) #define UMUL_TIME 5 #define UDIV_TIME 25 #else #define UMUL_TIME 17 #define UDIV_TIME 150 #endif /* __m88110__ */ #endif /* __m88000__ */ #if defined (__mips) && W_TYPE_SIZE == 32 #if __GNUC__ > 2 || __GNUC_MINOR__ >= 7 #define umul_ppmm(w1, w0, u, v) \ __asm__ ("multu %2,%3" : "=l" (w0), "=h" (w1) : "d" (u), "d" (v)) #else #define umul_ppmm(w1, w0, u, v) \ __asm__ ("multu %2,%3\n\tmflo %0\n\tmfhi %1" \ : "=d" (w0), "=d" (w1) : "d" (u), "d" (v)) #endif #define UMUL_TIME 10 #define UDIV_TIME 100 #endif /* __mips */ #if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64 #if __GNUC__ > 2 || __GNUC_MINOR__ >= 7 #define umul_ppmm(w1, w0, u, v) \ __asm__ ("dmultu %2,%3" : "=l" (w0), "=h" (w1) : "d" (u), "d" (v)) #else #define umul_ppmm(w1, w0, u, v) \ __asm__ ("dmultu %2,%3\n\tmflo %0\n\tmfhi %1" \ : "=d" (w0), "=d" (w1) : "d" (u), "d" (v)) #endif #define UMUL_TIME 20 #define UDIV_TIME 140 #endif /* __mips */ #if defined (__ns32000__) && W_TYPE_SIZE == 32 #define umul_ppmm(w1, w0, u, v) \ ({union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __x; \ __asm__ ("meid %2,%0" \ : "=g" (__x.__ll) \ : "%0" ((USItype)(u)), "g" ((USItype)(v))); \ (w1) = __x.__i.__h; (w0) = __x.__i.__l;}) #define __umulsidi3(u, v) \ ({UDItype __w; \ __asm__ ("meid %2,%0" \ : "=g" (__w) \ : "%0" ((USItype)(u)), "g" ((USItype)(v))); \ __w; }) #define udiv_qrnnd(q, r, n1, n0, d) \ ({union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __x; \ __x.__i.__h = (n1); __x.__i.__l = (n0); \ __asm__ ("deid %2,%0" \ : "=g" (__x.__ll) \ : "0" (__x.__ll), "g" ((USItype)(d))); \ (r) = __x.__i.__l; (q) = __x.__i.__h; }) #define count_trailing_zeros(count,x) \ do { \ __asm__ ("ffsd %2,%0" \ : "=r" ((USItype) (count)) \ : "0" ((USItype) 0), "r" ((USItype) (x))); \ } while (0) #endif /* __ns32000__ */ /* We should test _IBMR2 here when we add assembly support for the system vendor compilers. */ #if (defined (_ARCH_PPC) || defined (_ARCH_PWR) || defined (__powerpc__)) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ do { \ if (__builtin_constant_p (bh) && (bh) == 0) \ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2" \ : "=r" (sh), "=&r" (sl) : "%r" (ah), "%r" (al), "rI" (bl));\ else if (__builtin_constant_p (bh) && (bh) == ~(USItype) 0) \ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2" \ : "=r" (sh), "=&r" (sl) : "%r" (ah), "%r" (al), "rI" (bl));\ else \ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3" \ : "=r" (sh), "=&r" (sl) \ : "%r" (ah), "r" (bh), "%r" (al), "rI" (bl)); \ } while (0) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ do { \ if (__builtin_constant_p (ah) && (ah) == 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\ else if (__builtin_constant_p (ah) && (ah) == ~(USItype) 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\ else if (__builtin_constant_p (bh) && (bh) == 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\ else if (__builtin_constant_p (bh) && (bh) == ~(USItype) 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\ else \ __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2" \ : "=r" (sh), "=&r" (sl) \ : "r" (ah), "r" (bh), "rI" (al), "r" (bl)); \ } while (0) #define count_leading_zeros(count, x) \ __asm__ ("{cntlz|cntlzw} %0,%1" : "=r" (count) : "r" (x)) #define COUNT_LEADING_ZEROS_0 32 #if defined (_ARCH_PPC) || defined (__powerpc__) #define umul_ppmm(ph, pl, m0, m1) \ do { \ USItype __m0 = (m0), __m1 = (m1); \ __asm__ ("mulhwu %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \ (pl) = __m0 * __m1; \ } while (0) #define UMUL_TIME 15 #define smul_ppmm(ph, pl, m0, m1) \ do { \ SItype __m0 = (m0), __m1 = (m1); \ __asm__ ("mulhw %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \ (pl) = __m0 * __m1; \ } while (0) #define SMUL_TIME 14 #define UDIV_TIME 120 #else #define UMUL_TIME 8 #define smul_ppmm(xh, xl, m0, m1) \ __asm__ ("mul %0,%2,%3" : "=r" (xh), "=q" (xl) : "r" (m0), "r" (m1)) #define SMUL_TIME 4 #define sdiv_qrnnd(q, r, nh, nl, d) \ __asm__ ("div %0,%2,%4" : "=r" (q), "=q" (r) : "r" (nh), "1" (nl), "r" (d)) #define UDIV_TIME 100 #endif #endif /* 32-bit POWER architecture variants. */ /* We should test _IBMR2 here when we add assembly support for the system vendor compilers. */ #if (defined (_ARCH_PPC) || defined (__powerpc__)) && W_TYPE_SIZE == 64 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ do { \ if (__builtin_constant_p (bh) && (bh) == 0) \ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2" \ : "=r" (sh), "=&r" (sl) : "%r" (ah), "%r" (al), "rI" (bl));\ else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2" \ : "=r" (sh), "=&r" (sl) : "%r" (ah), "%r" (al), "rI" (bl));\ else \ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3" \ : "=r" (sh), "=&r" (sl) \ : "%r" (ah), "r" (bh), "%r" (al), "rI" (bl)); \ } while (0) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ do { \ if (__builtin_constant_p (ah) && (ah) == 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\ else if (__builtin_constant_p (ah) && (ah) == ~(UDItype) 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\ else if (__builtin_constant_p (bh) && (bh) == 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\ else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\ else \ __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2" \ : "=r" (sh), "=&r" (sl) \ : "r" (ah), "r" (bh), "rI" (al), "r" (bl)); \ } while (0) #define count_leading_zeros(count, x) \ __asm__ ("cntlzd %0,%1" : "=r" (count) : "r" (x)) #define COUNT_LEADING_ZEROS_0 64 #define umul_ppmm(ph, pl, m0, m1) \ do { \ UDItype __m0 = (m0), __m1 = (m1); \ __asm__ ("mulhdu %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \ (pl) = __m0 * __m1; \ } while (0) #define UMUL_TIME 15 #define smul_ppmm(ph, pl, m0, m1) \ do { \ DItype __m0 = (m0), __m1 = (m1); \ __asm__ ("mulhd %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \ (pl) = __m0 * __m1; \ } while (0) #define SMUL_TIME 14 /* ??? */ #define UDIV_TIME 120 /* ??? */ #endif /* 64-bit PowerPC. */ #if defined (__pyr__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("addw %5,%1\n\taddwc %3,%0" \ : "=r" ((USItype)(sh)), "=&r" ((USItype)(sl)) \ : "%0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "%1" ((USItype)(al)), "g" ((USItype)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("subw %5,%1\n\tsubwb %3,%0" \ : "=r" ((USItype)(sh)), "=&r" ((USItype)(sl)) \ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "1" ((USItype)(al)), "g" ((USItype)(bl))) /* This insn works on Pyramids with AP, XP, or MI CPUs, but not with SP. */ #define umul_ppmm(w1, w0, u, v) \ ({union {UDItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __asm__ ("movw %1,%R0\n\tuemul %2,%0" \ : "=&r" (__x.__ll) \ : "g" ((USItype) (u)), "g" ((USItype)(v))); \ (w1) = __x.__i.__h; (w0) = __x.__i.__l;}) #endif /* __pyr__ */ #if defined (__ibm032__) /* RT/ROMP */ && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("a %1,%5\n\tae %0,%3" \ : "=r" ((USItype)(sh)), "=&r" ((USItype)(sl)) \ : "%0" ((USItype)(ah)), "r" ((USItype)(bh)), \ "%1" ((USItype)(al)), "r" ((USItype)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("s %1,%5\n\tse %0,%3" \ : "=r" ((USItype)(sh)), "=&r" ((USItype)(sl)) \ : "0" ((USItype)(ah)), "r" ((USItype)(bh)), \ "1" ((USItype)(al)), "r" ((USItype)(bl))) #define smul_ppmm(ph, pl, m0, m1) \ __asm__ ( \ "s r2,r2 mts r10,%2 m r2,%3 m r2,%3 m r2,%3 m r2,%3 m r2,%3 m r2,%3 m r2,%3 m r2,%3 m r2,%3 m r2,%3 m r2,%3 m r2,%3 m r2,%3 m r2,%3 m r2,%3 m r2,%3 cas %0,r2,r0 mfs r10,%1" \ : "=r" ((USItype)(ph)), "=r" ((USItype)(pl)) \ : "%r" ((USItype)(m0)), "r" ((USItype)(m1)) \ : "r2"); \ #define UMUL_TIME 20 #define UDIV_TIME 200 #define count_leading_zeros(count, x) \ do { \ if ((x) >= 0x10000) \ __asm__ ("clz %0,%1" \ : "=r" ((USItype)(count)) : "r" ((USItype)(x) >> 16)); \ else \ { \ __asm__ ("clz %0,%1" \ : "=r" ((USItype)(count)) : "r" ((USItype)(x))); \ (count) += 16; \ } \ } while (0) #endif /* RT/ROMP */ #if defined (__sh2__) && W_TYPE_SIZE == 32 #define umul_ppmm(w1, w0, u, v) \ __asm__ ("dmulu.l %2,%3\n\tsts macl,%1\n\tsts mach,%0" \ : "=r" (w1), "=r" (w0) : "r" (u), "r" (v) : "macl", "mach") #define UMUL_TIME 5 #endif #if defined (__sparc__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("addcc %r4,%5,%1\n\taddx %r2,%3,%0" \ : "=r" (sh), "=&r" (sl) \ : "%rJ" (ah), "rI" (bh),"%rJ" (al), "rI" (bl) \ __CLOBBER_CC) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("subcc %r4,%5,%1\n\tsubx %r2,%3,%0" \ : "=r" (sh), "=&r" (sl) \ : "rJ" (ah), "rI" (bh), "rJ" (al), "rI" (bl) \ __CLOBBER_CC) #if defined (__sparc_v9__) || defined (__sparcv9) /* Perhaps we should use floating-point operations here? */ #if 0 /* Triggers a bug making mpz/tests/t-gcd.c fail. Perhaps we simply need explicitly zero-extend the inputs? */ #define umul_ppmm(w1, w0, u, v) \ __asm__ ("mulx %2,%3,%%g1; srl %%g1,0,%1; srlx %%g1,32,%0" : \ "=r" (w1), "=r" (w0) : "r" (u), "r" (v) : "g1") #else /* Use v8 umul until above bug is fixed. */ #define umul_ppmm(w1, w0, u, v) \ __asm__ ("umul %2,%3,%1;rd %%y,%0" : "=r" (w1), "=r" (w0) : "r" (u), "r" (v)) #endif /* Use a plain v8 divide for v9. */ #define udiv_qrnnd(q, r, n1, n0, d) \ do { \ USItype __q; \ __asm__ ("mov %1,%%y;nop;nop;nop;udiv %2,%3,%0" \ : "=r" (__q) : "r" (n1), "r" (n0), "r" (d)); \ (r) = (n0) - __q * (d); \ (q) = __q; \ } while (0) #else #if defined (__sparc_v8__) /* Don't match immediate range because, 1) it is not often useful, 2) the 'I' flag thinks of the range as a 13 bit signed interval, while we want to match a 13 bit interval, sign extended to 32 bits, but INTERPRETED AS UNSIGNED. */ #define umul_ppmm(w1, w0, u, v) \ __asm__ ("umul %2,%3,%1;rd %%y,%0" : "=r" (w1), "=r" (w0) : "r" (u), "r" (v)) #define UMUL_TIME 5 #ifndef SUPERSPARC /* SuperSPARC's udiv only handles 53 bit dividends */ #define udiv_qrnnd(q, r, n1, n0, d) \ do { \ USItype __q; \ __asm__ ("mov %1,%%y;nop;nop;nop;udiv %2,%3,%0" \ : "=r" (__q) : "r" (n1), "r" (n0), "r" (d)); \ (r) = (n0) - __q * (d); \ (q) = __q; \ } while (0) #define UDIV_TIME 25 #else #define UDIV_TIME 60 /* SuperSPARC timing */ #endif /* SUPERSPARC */ #else /* ! __sparc_v8__ */ #if defined (__sparclite__) /* This has hardware multiply but not divide. It also has two additional instructions scan (ffs from high bit) and divscc. */ #define umul_ppmm(w1, w0, u, v) \ __asm__ ("umul %2,%3,%1;rd %%y,%0" : "=r" (w1), "=r" (w0) : "r" (u), "r" (v)) #define UMUL_TIME 5 #define udiv_qrnnd(q, r, n1, n0, d) \ __asm__ ("! Inlined udiv_qrnnd wr %%g0,%2,%%y ! Not a delayed write for sparclite tst %%g0 divscc %3,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%%g1 divscc %%g1,%4,%0 rd %%y,%1 bl,a 1f add %1,%4,%1 1: ! End of inline udiv_qrnnd" \ : "=r" (q), "=r" (r) : "r" (n1), "r" (n0), "rI" (d) : "%g1" __AND_CLOBBER_CC) #define UDIV_TIME 37 #define count_leading_zeros(count, x) \ __asm__ ("scan %1,0,%0" : "=r" (x) : "r" (count)) /* Early sparclites return 63 for an argument of 0, but they warn that future implementations might change this. Therefore, leave COUNT_LEADING_ZEROS_0 undefined. */ #endif /* __sparclite__ */ #endif /* __sparc_v8__ */ #endif /* __sparc_v9__ */ /* Default to sparc v7 versions of umul_ppmm and udiv_qrnnd. */ #ifndef umul_ppmm #define umul_ppmm(w1, w0, u, v) \ __asm__ ("! Inlined umul_ppmm wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr sra %3,31,%%g2 ! Don't move this insn and %2,%%g2,%%g2 ! Don't move this insn andcc %%g0,0,%%g1 ! Don't move this insn mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,%3,%%g1 mulscc %%g1,0,%%g1 add %%g1,%%g2,%0 rd %%y,%1" \ : "=r" (w1), "=r" (w0) : "%rI" (u), "r" (v) \ : "%g1", "%g2" __AND_CLOBBER_CC) #define UMUL_TIME 39 /* 39 instructions */ #endif #ifndef udiv_qrnnd #ifndef LONGLONG_STANDALONE #define udiv_qrnnd(q, r, n1, n0, d) \ do { USItype __r; \ (q) = __MPN(udiv_qrnnd) (&__r, (n1), (n0), (d)); \ (r) = __r; \ } while (0) extern USItype __MPN(udiv_qrnnd) _PROTO ((USItype *, USItype, USItype, USItype)); #ifndef UDIV_TIME #define UDIV_TIME 140 #endif #endif /* LONGLONG_STANDALONE */ #endif /* udiv_qrnnd */ #endif /* __sparc__ */ #if defined (__vax__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("addl2 %5,%1\n\tadwc %3,%0" \ : "=g" ((USItype)(sh)), "=&g" ((USItype)(sl)) \ : "%0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "%1" ((USItype)(al)), "g" ((USItype)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("subl2 %5,%1\n\tsbwc %3,%0" \ : "=g" ((USItype)(sh)), "=&g" ((USItype)(sl)) \ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "1" ((USItype)(al)), "g" ((USItype)(bl))) #define smul_ppmm(xh, xl, m0, m1) \ do { \ union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __x; \ USItype __m0 = (m0), __m1 = (m1); \ __asm__ ("emul %1,%2,$0,%0" \ : "=g" (__x.__ll) : "g" (__m0), "g" (__m1)); \ (xh) = __x.__i.__h; (xl) = __x.__i.__l; \ } while (0) #define sdiv_qrnnd(q, r, n1, n0, d) \ do { \ union {DItype __ll; \ struct {SItype __l, __h;} __i; \ } __x; \ __x.__i.__h = n1; __x.__i.__l = n0; \ __asm__ ("ediv %3,%2,%0,%1" \ : "=g" (q), "=g" (r) : "g" (__x.__ll), "g" (d)); \ } while (0) #endif /* __vax__ */ #if defined (__z8000__) && W_TYPE_SIZE == 16 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add %H1,%H5\n\tadc %H0,%H3" \ : "=r" ((unsigned int)(sh)), "=&r" ((unsigned int)(sl)) \ : "%0" ((unsigned int)(ah)), "r" ((unsigned int)(bh)), \ "%1" ((unsigned int)(al)), "rQR" ((unsigned int)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("sub %H1,%H5\n\tsbc %H0,%H3" \ : "=r" ((unsigned int)(sh)), "=&r" ((unsigned int)(sl)) \ : "0" ((unsigned int)(ah)), "r" ((unsigned int)(bh)), \ "1" ((unsigned int)(al)), "rQR" ((unsigned int)(bl))) #define umul_ppmm(xh, xl, m0, m1) \ do { \ union {long int __ll; \ struct {unsigned int __h, __l;} __i; \ } __x; \ unsigned int __m0 = (m0), __m1 = (m1); \ __asm__ ("mult %S0,%H3" \ : "=r" (__x.__i.__h), "=r" (__x.__i.__l) \ : "%1" (m0), "rQR" (m1)); \ (xh) = __x.__i.__h; (xl) = __x.__i.__l; \ (xh) += ((((signed int) __m0 >> 15) & __m1) \ + (((signed int) __m1 >> 15) & __m0)); \ } while (0) #endif /* __z8000__ */ #endif /* __GNUC__ */ #if !defined (umul_ppmm) && defined (__umulsidi3) #define umul_ppmm(ph, pl, m0, m1) \ { \ UDWtype __ll = __umulsidi3 (m0, m1); \ ph = (UWtype) (__ll >> W_TYPE_SIZE); \ pl = (UWtype) __ll; \ } #endif #if !defined (__umulsidi3) #define __umulsidi3(u, v) \ ({UWtype __hi, __lo; \ umul_ppmm (__hi, __lo, u, v); \ ((UDWtype) __hi << W_TYPE_SIZE) | __lo; }) #endif /* Note the prototypes are under !define(umul_ppmm) etc too, since the HPPA versions above are different and we don't want to conflict. */ #if ! defined (umul_ppmm) && HAVE_NATIVE_mpn_umul_ppmm #define mpn_umul_ppmm __MPN(umul_ppmm) extern mp_limb_t mpn_umul_ppmm _PROTO ((mp_limb_t *, mp_limb_t, mp_limb_t)); #define umul_ppmm(wh, wl, u, v) \ do { \ mp_limb_t __umul_ppmm__p0; \ (wh) = __MPN(umul_ppmm) (&__umul_ppmm__p0, \ (mp_limb_t) (u), (mp_limb_t) (v)); \ (wl) = __umul_ppmm__p0; \ } while (0) #endif #if ! defined (udiv_qrnnd) && HAVE_NATIVE_mpn_udiv_qrnnd #define mpn_udiv_qrnnd __MPN(udiv_qrnnd) extern mp_limb_t mpn_udiv_qrnnd _PROTO ((mp_limb_t *, mp_limb_t, mp_limb_t, mp_limb_t)); #define udiv_qrnnd(q, r, n1, n0, d) \ do { \ mp_limb_t __udiv_qrnnd__r; \ (q) = mpn_udiv_qrnnd (&__udiv_qrnnd__r, \ (mp_limb_t) (n1), (mp_limb_t) (n0), (mp_limb_t) d); \ (r) = __udiv_qrnnd__r; \ } while (0) #endif /* If this machine has no inline assembler, use C macros. */ #if !defined (add_ssaaaa) #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ do { \ UWtype __x; \ __x = (al) + (bl); \ (sh) = (ah) + (bh) + (__x < (al)); \ (sl) = __x; \ } while (0) #endif #if !defined (sub_ddmmss) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ do { \ UWtype __x; \ __x = (al) - (bl); \ (sh) = (ah) - (bh) - (__x > (al)); \ (sl) = __x; \ } while (0) #endif /* If we lack umul_ppmm but have smul_ppmm, define umul_ppmm in terms of smul_ppmm. */ #if !defined (umul_ppmm) && defined (smul_ppmm) #define umul_ppmm(w1, w0, u, v) \ do { \ UWtype __w1; \ UWtype __xm0 = (u), __xm1 = (v); \ smul_ppmm (__w1, w0, __xm0, __xm1); \ (w1) = __w1 + (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \ + (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \ } while (0) #endif /* If we still don't have umul_ppmm, define it using plain C. */ #if !defined (umul_ppmm) #define umul_ppmm(w1, w0, u, v) \ do { \ UWtype __x0, __x1, __x2, __x3; \ UHWtype __ul, __vl, __uh, __vh; \ UWtype __u = (u), __v = (v); \ \ __ul = __ll_lowpart (__u); \ __uh = __ll_highpart (__u); \ __vl = __ll_lowpart (__v); \ __vh = __ll_highpart (__v); \ \ __x0 = (UWtype) __ul * __vl; \ __x1 = (UWtype) __ul * __vh; \ __x2 = (UWtype) __uh * __vl; \ __x3 = (UWtype) __uh * __vh; \ \ __x1 += __ll_highpart (__x0);/* this can't give carry */ \ __x1 += __x2; /* but this indeed can */ \ if (__x1 < __x2) /* did we get it? */ \ __x3 += __ll_B; /* yes, add it in the proper pos. */ \ \ (w1) = __x3 + __ll_highpart (__x1); \ (w0) = (__x1 << W_TYPE_SIZE/2) + __ll_lowpart (__x0); \ } while (0) #endif /* If we don't have smul_ppmm, define it using umul_ppmm (which surely will exist in one form or another. */ #if !defined (smul_ppmm) #define smul_ppmm(w1, w0, u, v) \ do { \ UWtype __w1; \ UWtype __xm0 = (u), __xm1 = (v); \ umul_ppmm (__w1, w0, __xm0, __xm1); \ (w1) = __w1 - (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \ - (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \ } while (0) #endif /* Define this unconditionally, so it can be used for debugging. */ #define __udiv_qrnnd_c(q, r, n1, n0, d) \ do { \ UWtype __d1, __d0, __q1, __q0, __r1, __r0, __m; \ __d1 = __ll_highpart (d); \ __d0 = __ll_lowpart (d); \ \ __q1 = (n1) / __d1; \ __r1 = (n1) - __q1 * __d1; \ __m = (UWtype) __q1 * __d0; \ __r1 = __r1 * __ll_B | __ll_highpart (n0); \ if (__r1 < __m) \ { \ __q1--, __r1 += (d); \ if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\ if (__r1 < __m) \ __q1--, __r1 += (d); \ } \ __r1 -= __m; \ \ __q0 = __r1 / __d1; \ __r0 = __r1 - __q0 * __d1; \ __m = (UWtype) __q0 * __d0; \ __r0 = __r0 * __ll_B | __ll_lowpart (n0); \ if (__r0 < __m) \ { \ __q0--, __r0 += (d); \ if (__r0 >= (d)) \ if (__r0 < __m) \ __q0--, __r0 += (d); \ } \ __r0 -= __m; \ \ (q) = (UWtype) __q1 * __ll_B | __q0; \ (r) = __r0; \ } while (0) /* If the processor has no udiv_qrnnd but sdiv_qrnnd, go through __udiv_w_sdiv (defined in libgcc or elsewhere). */ #if !defined (udiv_qrnnd) && defined (sdiv_qrnnd) #define udiv_qrnnd(q, r, nh, nl, d) \ do { \ UWtype __r; \ (q) = __MPN(udiv_w_sdiv) (&__r, nh, nl, d); \ (r) = __r; \ } while (0) #endif /* If udiv_qrnnd was not defined for this processor, use __udiv_qrnnd_c. */ #if !defined (udiv_qrnnd) #define UDIV_NEEDS_NORMALIZATION 1 #define udiv_qrnnd __udiv_qrnnd_c #endif #if !defined (count_leading_zeros) extern #if __STDC__ const #endif unsigned char __GMP_DECLSPEC __clz_tab[]; #define count_leading_zeros(count, x) \ do { \ UWtype __xr = (x); \ UWtype __a; \ \ if (W_TYPE_SIZE <= 32) \ { \ __a = __xr < ((UWtype) 1 << 2*__BITS4) \ ? (__xr < ((UWtype) 1 << __BITS4) ? 0 : __BITS4) \ : (__xr < ((UWtype) 1 << 3*__BITS4) ? 2*__BITS4 : 3*__BITS4);\ } \ else \ { \ for (__a = W_TYPE_SIZE - 8; __a > 0; __a -= 8) \ if (((__xr >> __a) & 0xff) != 0) \ break; \ } \ \ (count) = W_TYPE_SIZE - (__clz_tab[__xr >> __a] + __a); \ } while (0) /* This version gives a well-defined value for zero. */ #define COUNT_LEADING_ZEROS_0 W_TYPE_SIZE #define COUNT_LEADING_ZEROS_NEED_CLZ_TAB #endif #if !defined (count_trailing_zeros) /* Define count_trailing_zeros using count_leading_zeros. The latter might be defined in asm, but if it is not, the C version above is good enough. */ #define count_trailing_zeros(count, x) \ do { \ UWtype __ctz_x = (x); \ UWtype __ctz_c; \ count_leading_zeros (__ctz_c, __ctz_x & -__ctz_x); \ (count) = W_TYPE_SIZE - 1 - __ctz_c; \ } while (0) #endif #ifndef UDIV_NEEDS_NORMALIZATION #define UDIV_NEEDS_NORMALIZATION 0 #endif /* Give defaults for UMUL_TIME and UDIV_TIME. */ #ifndef UMUL_TIME #define UMUL_TIME 1 #endif #ifndef UDIV_TIME #define UDIV_TIME UMUL_TIME #endif /* count_trailing_zeros is often on the slow side, so make that the default */ #ifndef COUNT_TRAILING_ZEROS_TIME #define COUNT_TRAILING_ZEROS_TIME 15 /* cycles */ #endif core++-1.7/win32/patches/gmp-3.1.1/mp_bpl.c0100644000175000001440000000172707437361201017232 0ustar joachimusers/* Copyright (C) 1996 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gmp.h" #include "gmp-impl.h" __gmp_const int mp_bits_per_limb = BITS_PER_MP_LIMB; __gmp_const int __gmp_0 = 0; int __gmp_junk; core++-1.7/win32/patches/gmp-3.1.1/mp_clz_tab.c0100644000175000001440000000305407437361201020066 0ustar joachimusers/* __clz_tab -- support for longlong.h Copyright (C) 1991, 1993, 1994, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gmp.h" #include "gmp-impl.h" #include "longlong.h" const unsigned char __clz_tab[] = { 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, }; core++-1.7/win32/patches/gmp-3.1.1/rand.c0100644000175000001440000001110207437361201016671 0ustar joachimusers/* gmp_randinit (state, algorithm, ...) -- Initialize a random state. Copyright (C) 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include /* for NULL */ #include "gmp.h" #include "gmp-impl.h" #if __STDC__ # include #else # include #endif /* Array of CL-schemes, ordered in increasing order of the first member (the 'm2exp' value). The end of the array is indicated with an entry containing all zeros. */ /* All multipliers are in the range 0.01*m and 0.99*m, and are congruent to 5 (mod 8). They all pass the spectral test with Vt >= 2^(30/t) and merit >= 1. (Up to and including 196 bits, merit is >= 3.) */ struct __gmp_rand_lc_scheme_struct { unsigned long int m2exp; /* Modulus is 2 ^ m2exp. */ char *astr; /* Multiplier in string form. */ unsigned long int c; /* Adder. */ }; struct __gmp_rand_lc_scheme_struct __gmp_rand_lc_scheme[] = { {32, "43840821", 1}, {33, "85943917", 1}, {34, "171799469", 1}, {35, "343825285", 1}, {36, "687285701", 1}, {37, "1374564613", 1}, {38, "2749193437", 1}, {39, "5497652029", 1}, {40, "10995212661", 1}, {56, "47988680294711517", 1}, {64, "13469374875402548381", 1}, {100, "203786806069096950756900463357", 1}, {128, "96573135900076068624591706046897650309", 1}, {156, "43051576988660538262511726153887323360449035333", 1}, {196, "1611627857640767981443524165616850972435303571524033586421", 1}, {200, "491824250216153841876046962368396460896019632211283945747141", 1}, {256, "79336254595106925775099152154558630917988041692672147726148065355845551082677", 1}, {0, NULL, 0} /* End of array. */ }; void #if __STDC__ gmp_randinit (gmp_randstate_t rstate, gmp_randalg_t alg, ...) #else gmp_randinit (va_alist) va_dcl #endif { va_list ap; #if __STDC__ #else __gmp_randstate_struct *rstate; gmp_randalg_t alg; #endif #if __STDC__ va_start (ap, alg); #else va_start (ap); rstate = va_arg (ap, __gmp_randstate_struct *); alg = va_arg (ap, gmp_randalg_t); #endif switch (alg) { case GMP_RAND_ALG_LC: /* Linear congruential. */ { unsigned long int size; struct __gmp_rand_lc_scheme_struct *sp; mpz_t a; size = va_arg (ap, unsigned long int); /* Pick a scheme. */ for (sp = __gmp_rand_lc_scheme; sp->m2exp != 0; sp++) if (sp->m2exp / 2 >= size) break; if (sp->m2exp == 0) /* Nothing big enough found. */ { gmp_errno |= GMP_ERROR_INVALID_ARGUMENT; return; } /* Install scheme. */ mpz_init_set_str (a, sp->astr, 0); gmp_randinit_lc_2exp (rstate, a, sp->c, sp->m2exp); mpz_clear (a); break; } #if 0 case GMP_RAND_ALG_BBS: /* Blum, Blum, and Shub. */ { mpz_t p, q; mpz_t ztmp; /* FIXME: Generate p and q. They must be ``large'' primes, congruent to 3 mod 4. Should we ensure that they meet some of the criterias for being ``hard primes''?*/ /* These are around 128 bits. */ mpz_init_set_str (p, "148028650191182616877187862194899201391", 10); mpz_init_set_str (q, "315270837425234199477225845240496832591", 10); /* Allocate algorithm specific data. */ rstate->data.bbs = (__gmp_rand_data_bbs *) (*_mp_allocate_func) (sizeof (__gmp_rand_data_bbs)); mpz_init (rstate->data.bbs->bi); /* The Blum integer. */ mpz_mul (rstate->data.bbs->bi, p, q); /* Find a seed, x, with gcd (x, bi) == 1. */ mpz_init (ztmp); while (1) { mpz_gcd (ztmp, seed, rstate->data.bbs->bi); if (!mpz_cmp_ui (ztmp, 1)) break; mpz_add_ui (seed, seed, 1); } rstate->alg = alg; rstate->size = size; /* FIXME: Remove. */ mpz_set (rstate->seed, seed); mpz_clear (p); mpz_clear (q); mpz_clear (ztmp); break; } #endif /* 0 */ default: /* Bad choice. */ gmp_errno |= GMP_ERROR_UNSUPPORTED_ARGUMENT; } va_end (ap); } core++-1.7/win32/patches/gmp-3.1.1/urandom.h0100644000175000001440000000372207437361201017430 0ustar joachimusers/* urandom.h -- define urandom returning a full unsigned long random value. Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #if defined (__hpux) || defined (__svr4__) || defined (__SVR4) /* HPUX lacks random(). */ static inline mp_limb_t urandom () { return mrand48 (); } #define __URANDOM #endif #if defined (__alpha) && !defined (__URANDOM) /* DEC OSF/1 1.2 random() returns a double. */ long mrand48 (); static inline mp_limb_t urandom () { return mrand48 () | (mrand48 () << 32); } #define __URANDOM #endif #ifndef __URANDOM #endif #if BITS_PER_MP_LIMB == 32 && !defined (__URANDOM) #if defined (__cplusplus) extern "C" { #endif long random (); #if defined (__cplusplus) } #endif static inline mp_limb_t urandom () { /* random() returns 31 bits, we want 32. */ return random () ^ (random () << 1); } #define __URANDOM #endif #if BITS_PER_MP_LIMB == 64 && !defined (__URANDOM) #if defined (__cplusplus) extern "C" { #endif long random (); #if defined (__cplusplus) } #endif static inline mp_limb_t urandom () { /* random() returns 31 bits, we want 64. */ return random () ^ ((mp_limb_t) random () << 31) ^ ((mp_limb_t) random () << 62); } #define __URANDOM #endif core++-1.7/win32/patches/gmp-3.1.1/version.c0100644000175000001440000000175307437361201017445 0ustar joachimusers/* gmp_version -- version number compiled into the library */ /* Copyright (C) 1996, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gmp.h" #include "gmp-impl.h" __gmp_const char *gmp_version = VERSION; core++-1.7/win32/patches/gmp-3.1.1/win32dllstub.c0100644000175000001440000000056107437361201020310 0ustar joachimusers/* Win32 DLL Entry Point */ #include "windows.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } core++-1.7/win32/patches/gmp-3.1.1/mpfr/0040755000175000001440000000000010147210064016545 5ustar joachimuserscore++-1.7/win32/patches/gmp-3.1.1/mpfr/random.c0100644000175000001440000000343407437361201020202 0ustar joachimusers/* mpfr_random -- generate a random floating-point number Copyright (C) 1999 PolKA project, Inria Lorraine and Loria This file is part of the MPFR Library. The MPFR Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The MPFR Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the MPFR Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include "gmp.h" #include "gmp-impl.h" #include "longlong.h" #include "mpfr.h" /* Computes a random mpfr in [0, 1[ with precision PREC */ void #if __STDC__ mpfr_random(mpfr_ptr x) #else mpfr_random(x) mpfr_ptr x; #endif { mp_limb_t *xp; unsigned long xn, i, cnt, prec=PREC(x); xp = MANT(x); xn = (prec-1)/BITS_PER_MP_LIMB + 1; for (i = 0; i < xn; i++) { /* random() c/sh/ould be replaced by a homemade random number generator. Indeed, if on Linux random is a good RNG, this is definitely not the case in most Un*xes. */ xp[i] = random(); } count_leading_zeros(cnt, xp[xn - 1]); if (cnt) mpn_lshift(xp, xp, xn, cnt); EXP(x) = -cnt; cnt = xn*BITS_PER_MP_LIMB - prec; /* cnt is the number of non significant bits in the low limb */ xp[0] &= ~((((mp_limb_t)1)< # define isnan _isnan #endif #include #include "longlong.h" #include "mpfr.h" #define NaN sqrt(-1) /* ensures a machine-independent NaN */ /* Included from gmp-2.0.2, patched to support denorms */ #ifdef XDEBUG #undef _GMP_IEEE_FLOATS #endif #ifndef _GMP_IEEE_FLOATS #define _GMP_IEEE_FLOATS 0 #endif int #if __STDC__ __mpfr_extract_double (mp_ptr rp, double d, int e) #else __mpfr_extract_double (rp, d, e) mp_ptr rp; double d; int e; #endif /* e=0 iff BITS_PER_MP_LIMB=32 and rp has only one limb */ { long exp; mp_limb_t manl; #if BITS_PER_MP_LIMB == 32 mp_limb_t manh; #endif /* BUGS 1. Should handle Inf and NaN in IEEE specific code. 2. Handle Inf and NaN also in default code, to avoid hangs. 3. Generalize to handle all BITS_PER_MP_LIMB >= 32. 4. This lits is incomplete and misspelled. */ if (d == 0.0) { rp[0] = 0; #if BITS_PER_MP_LIMB == 32 if (e) rp[1] = 0; #endif return 0; } #if _GMP_IEEE_FLOATS { union ieee_double_extract x; x.d = d; exp = x.s.exp; if (exp) { #if BITS_PER_MP_LIMB == 64 manl = (((mp_limb_t) 1 << 63) | ((mp_limb_t) x.s.manh << 43) | ((mp_limb_t) x.s.manl << 11)); #else manh = ((mp_limb_t) 1 << 31) | (x.s.manh << 11) | (x.s.manl >> 21); manl = x.s.manl << 11; #endif } else { #if BITS_PER_MP_LIMB == 64 manl = ((mp_limb_t) x.s.manh << 43) | ((mp_limb_t) x.s.manl << 11); #else manh = (x.s.manh << 11) | (x.s.manl >> 21); manl = x.s.manl << 11; #endif } } #else { /* Unknown (or known to be non-IEEE) double format. */ exp = 0; if (d >= 1.0) { if (d * 0.5 == d) abort (); while (d >= 32768.0) { d *= (1.0 / 65536.0); exp += 16; } while (d >= 1.0) { d *= 0.5; exp += 1; } } else if (d < 0.5) { while (d < (1.0 / 65536.0)) { d *= 65536.0; exp -= 16; } while (d < 0.5) { d *= 2.0; exp -= 1; } } d *= MP_BASE_AS_DOUBLE; #if BITS_PER_MP_LIMB == 64 manl = d; #else manh = d; manl = (d - manh) * MP_BASE_AS_DOUBLE; #endif exp += 1022; } #endif if (exp) exp = (unsigned) exp - 1022; else exp = -1021; #if BITS_PER_MP_LIMB == 64 rp[0] = manl; #else if (e) { rp[1] = manh; rp[0] = manl; } else { rp[0] = manh; } #endif return exp; } /* End of part included from gmp-2.0.2 */ /* Part included from gmp temporary releases */ double #if __STDC__ __mpfr_scale2 (double d, int exp) #else __mpfr_scale2 (d, exp) double d; int exp; #endif { #if _GMP_IEEE_FLOATS { union ieee_double_extract x; x.d = d; exp += x.s.exp; x.s.exp = exp; if (exp >= 2047) { /* Return +-infinity */ x.s.exp = 2047; x.s.manl = x.s.manh = 0; } else if (exp < 1) { x.s.exp = 1; /* smallest exponent (biased) */ /* Divide result by 2 until we have scaled it to the right IEEE denormalized number, but stop if it becomes zero. */ while (exp < 1 && x.d != 0) { x.d *= 0.5; exp++; } } return x.d; } #else { double factor, r; factor = 2.0; if (exp < 0) { factor = 0.5; exp = -exp; } r = d; if (exp != 0) { if ((exp & 1) != 0) r *= factor; exp >>= 1; while (exp != 0) { factor *= factor; if ((exp & 1) != 0) r *= factor; exp >>= 1; } } return r; } #endif } /* End of part included from gmp */ void #if __STDC__ mpfr_set_d(mpfr_t r, double d, unsigned char rnd_mode) #else mpfr_set_d(r, d, rnd_mode) mpfr_t r; double d; unsigned char rnd_mode; #endif { int signd, sizer; unsigned int cnt; if (d == 0) { SET_ZERO(r); return; } else if (isnan(d)) { SET_NAN(r); return; } signd = (d < 0) ? -1 : 1; d = ABS (d); sizer = (PREC(r)-1)/BITS_PER_MP_LIMB + 1; /* warning: __mpfr_extract_double requires at least two limbs */ if (sizer < MPFR_LIMBS_PER_DOUBLE) EXP(r) = __mpfr_extract_double (MANT(r), d, 0); else EXP(r) = __mpfr_extract_double (MANT(r) + sizer - MPFR_LIMBS_PER_DOUBLE, d, 1); if (sizer > MPFR_LIMBS_PER_DOUBLE) MPN_ZERO(MANT(r), sizer - MPFR_LIMBS_PER_DOUBLE); count_leading_zeros(cnt, MANT(r)[sizer-1]); if (cnt) mpn_lshift(MANT(r), MANT(r), sizer, cnt); EXP(r) -= cnt; if (SIZE(r)*signd<0) CHANGE_SIGN(r); mpfr_round(r, rnd_mode, PREC(r)); return; } double #if __STDC__ mpfr_get_d2(mpfr_srcptr src, long e) #else mpfr_get_d2(src, e) mpfr_srcptr(src); long e; #endif { double res; mp_size_t size, i, n_limbs_to_use; mp_ptr qp; int negative; if (FLAG_NAN(src)) { #ifdef DEBUG printf("recognized NaN\n"); #endif return NaN; } if (NOTZERO(src)==0) return 0.0; size = 1+(PREC(src)-1)/BITS_PER_MP_LIMB; qp = MANT(src); negative = (SIGN(src)==-1); /* Warning: don't compute the abs(res) and set the sign afterwards, otherwise the current machine rounding mode will not be taken correctly into account. */ /* res = (negative) ? -(double)qp[size - 1] : qp[size - 1]; */ res = 0.0; /* Warning: an arbitrary number of limbs may be required for an exact rounding. The following code is correct but not optimal since one may be able to decide without considering all limbs. */ /* n_limbs_to_use = MIN (MPFR_LIMBS_PER_DOUBLE, size); */ n_limbs_to_use = size; /* Accumulate the limbs from less significant to most significant otherwise due to rounding we may accumulate several ulps, especially in rounding towards -/+infinity. */ for (i = n_limbs_to_use; i>=1; i--) res = res / MP_BASE_AS_DOUBLE + ((negative) ? -(double)qp[size - i] : qp[size - i]); res = __mpfr_scale2 (res, e - BITS_PER_MP_LIMB); return res; } double #if __STDC__ mpfr_get_d(mpfr_srcptr src) #else mpfr_get_d(src) mpfr_srcptr src; #endif { return mpfr_get_d2(src, EXP(src)); } core++-1.7/win32/patches/gmp-3.1.1/mpfr/set_str_raw.c0100644000175000001440000000607107437361201021256 0ustar joachimusers/* mpfr_set_str_raw -- set a floating-point number from a binary string Copyright (C) 1999 PolKA project, Inria Lorraine and Loria This file is part of the MPFR Library. The MPFR Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The MPFR Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the MPFR Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include "gmp.h" #include "gmp-impl.h" #ifdef HAVE_STRING_H #include #else #include #endif #include "longlong.h" #include "mpfr.h" /* Currently the number should be of the form +/- xxxx.xxxxxxEyy, with decimal exponent. The mantissa of x is supposed to be large enough to hold all the bits of str. */ void #if __STDC__ mpfr_set_str_raw(mpfr_ptr x, char *str) #else mpfr_set_str_raw(x, str) mpfr_ptr x; char *str; #endif { char *str2, *str0, negative = 0; unsigned long j, l, k = 0, xsize, cnt; mp_limb_t *xp; long expn = 0, e; char *endstr2; xp = x -> _mp_d; xsize = 1 + (PREC(x)-1)/BITS_PER_MP_LIMB; str0 = str2 = (char *) malloc((strlen(str)+1)*sizeof(char)); if (*str == '-') { negative = 1; str++; } else if (*str == '+') str++; while (*str == '0') { str++; } while (*str == '0' || *str == '1') { *(str2++) = *(str++); k++; } if (*str == '.') { str++; while (*str == '0' || *str == '1') { *(str2++) = *(str++); } if (*str == '[') { while (*str != ']') str++; } } if (*str == '[') { while (*str != ']') str++; } if (*str == 'e' || *str == 'E') { e = atol(++str); /* signed exponent after 'e' or 'E' */ expn = k + e; if (expn < e) fprintf(stderr, "Warning: overflow in exponent in Str -> mpfr\n"); } else expn=k; endstr2 = str2; *str2 = (char) 0; /* end of string */ l = (strlen(str0) - 1) / BITS_PER_MP_LIMB + 1; str2 = str0; /* str2[0]..endstr2[-1] contains the mantissa */ for (k = 1; k <= l; k++) { j = 0; xp[xsize - k] = 0; while (str2 _mp_exp = expn - cnt; x -> _mp_size = xsize; if (negative) CHANGE_SIGN(x); free(str0); /* May change to take into account : syntax errors, overflow in exponent, string truncated because of size of x */ } core++-1.7/win32/patches/gmp-3.1.1/mpn/0040755000175000001440000000000010145432320016372 5ustar joachimuserscore++-1.7/win32/patches/gmp-3.1.1/mpn/generic/0040755000175000001440000000000010147210064020007 5ustar joachimuserscore++-1.7/win32/patches/gmp-3.1.1/mpn/generic/random2.c0100644000175000001440000000475307437361201021533 0ustar joachimusers/* mpn_random2 -- Generate random numbers with relatively long strings of ones and zeroes. Suitable for border testing. Copyright (C) 1992, 1993, 1994, 1996, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gmp.h" #include "gmp-impl.h" /* It's a bit tricky to get this right, so please test the code well if you hack with it. Some early versions of the function produced random numbers with the leading limb == 0, and some versions never made the most significant bit set. */ void #if __STDC__ mpn_random2 (mp_ptr res_ptr, mp_size_t size) #else mpn_random2 (res_ptr, size) mp_ptr res_ptr; mp_size_t size; #endif { int n_bits; int bit_pos; mp_size_t limb_pos; unsigned int ran; mp_limb_t limb; limb = 0; /* Start off in a random bit position in the most significant limb. */ bit_pos = random () & (BITS_PER_MP_LIMB - 1); /* Least significant bit of RAN chooses string of ones/string of zeroes. Make most significant limb be non-zero by setting bit 0 of RAN. */ ran = random () | 1; for (limb_pos = size - 1; limb_pos >= 0; ) { n_bits = (ran >> 1) % BITS_PER_MP_LIMB + 1; if ((ran & 1) != 0) { /* Generate a string of ones. */ if (n_bits >= bit_pos) { res_ptr[limb_pos--] = limb | ((((mp_limb_t) 2) << bit_pos) - 1); bit_pos += BITS_PER_MP_LIMB; limb = (~(mp_limb_t) 0) << (bit_pos - n_bits); } else { limb |= ((((mp_limb_t) 1) << n_bits) - 1) << (bit_pos - n_bits + 1); } } else { /* Generate a string of zeroes. */ if (n_bits >= bit_pos) { res_ptr[limb_pos--] = limb; limb = 0; bit_pos += BITS_PER_MP_LIMB; } } bit_pos -= n_bits; ran = random (); } } core++-1.7/win32/patches/gmp-3.1.1/mpz/0040755000175000001440000000000010147210064016407 5ustar joachimuserscore++-1.7/win32/patches/gmp-3.1.1/mpz/mul_si.c0100644000175000001440000000206207437361201020050 0ustar joachimusers/* mpz_mul_ui/si (product, multiplier, small_multiplicand) -- Set PRODUCT to MULTIPLICATOR times SMALL_MULTIPLICAND. Copyright (C) 1991, 1993, 1994, 1996, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gmp.h" #include "gmp-impl.h" #define OPERATION_mul_si #include "mul_siui.h" core++-1.7/win32/patches/gmp-3.1.1/mpz/mul_siui.h0100644000175000001440000000427507437361201020423 0ustar joachimusers/* mpz_mul_ui/si (product, multiplier, small_multiplicand) -- Set PRODUCT to MULTIPLICATOR times SMALL_MULTIPLICAND. Copyright (C) 1991, 1993, 1994, 1996, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef OPERATION_mul_ui #define FUNCTION mpz_mul_ui #define MULTIPLICAND_UNSIGNED unsigned #define MULTIPLICAND_ABS(x) x #else #ifdef OPERATION_mul_si #define FUNCTION mpz_mul_si #define MULTIPLICAND_UNSIGNED #define MULTIPLICAND_ABS(x) ABS(x) #else #error "Please compile this file with either -D OPERATION_mul_si or -D OPERATION_mul_ui" #endif #endif void #if __STDC__ FUNCTION (mpz_ptr prod, mpz_srcptr mult, MULTIPLICAND_UNSIGNED long int small_mult) #else FUNCTION (prod, mult, small_mult) mpz_ptr prod; mpz_srcptr mult; MULTIPLICAND_UNSIGNED long int small_mult; #endif { mp_size_t size = mult->_mp_size; mp_size_t sign_product = size; mp_limb_t cy; mp_size_t prod_size; mp_ptr prod_ptr; if (size == 0 || small_mult == 0) { prod->_mp_size = 0; return; } size = ABS (size); prod_size = size + 1; if (prod->_mp_alloc < prod_size) _mpz_realloc (prod, prod_size); prod_ptr = prod->_mp_d; cy = mpn_mul_1 (prod_ptr, mult->_mp_d, size, (mp_limb_t) MULTIPLICAND_ABS (small_mult)); if (cy != 0) { prod_ptr[size] = cy; size++; } prod->_mp_size = ((sign_product < 0) ^ (small_mult < 0)) ? -size : size; } core++-1.7/win32/patches/gmp-3.1.1/mpz/mul_ui.c0100644000175000001440000000206207437361201020052 0ustar joachimusers/* mpz_mul_ui/si (product, multiplier, small_multiplicand) -- Set PRODUCT to MULTIPLICATOR times SMALL_MULTIPLICAND. Copyright (C) 1991, 1993, 1994, 1996, 2000 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gmp.h" #include "gmp-impl.h" #define OPERATION_mul_ui #include "mul_siui.h" core++-1.7/win32/patches/gmp-4.0.1/0040755000175000001440000000000010147210064015601 5ustar joachimuserscore++-1.7/win32/patches/gmp-4.0.1/config.h0100644000175000001440000002743407437361201017236 0ustar joachimusers/* config.h. Generated automatically by configure. */ /* config.in. Generated automatically from configure.in by autoheader. */ /* Templates for defines setup by configure. Copyright 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Define one (and only one) of these for the CPU host. Only hosts that are going to be tested for need to be in this list, not everything that can possibly be selected. */ /* #undef HAVE_HOST_CPU_alpha */ /* #undef HAVE_HOST_CPU_alphaev5 */ /* #undef HAVE_HOST_CPU_alphaev6 */ /* #undef HAVE_HOST_CPU_alphaev67 */ /* #undef HAVE_HOST_CPU_sparc */ /* #undef HAVE_HOST_CPU_sparcv8 */ /* #undef HAVE_HOST_CPU_supersparc */ /* #undef HAVE_HOST_CPU_sparclite */ /* #undef HAVE_HOST_CPU_microsparc */ /* #undef HAVE_HOST_CPU_ultrasparc1 */ /* #undef HAVE_HOST_CPU_ultrasparc2 */ /* #undef HAVE_HOST_CPU_sparc64 */ /* #undef HAVE_HOST_CPU_hppa1_0 */ /* #undef HAVE_HOST_CPU_hppa1_1 */ /* #undef HAVE_HOST_CPU_hppa2_0n */ /* #undef HAVE_HOST_CPU_hppa2_0w */ #define HAVE_HOST_CPU_i386 1 /* #undef HAVE_HOST_CPU_i486 */ /* #undef HAVE_HOST_CPU_i586 */ /* #undef HAVE_HOST_CPU_i686 */ /* #undef HAVE_HOST_CPU_pentium */ /* #undef HAVE_HOST_CPU_pentiummmx */ /* #undef HAVE_HOST_CPU_pentiumpro */ /* #undef HAVE_HOST_CPU_pentium2 */ /* #undef HAVE_HOST_CPU_pentium3 */ /* #undef HAVE_HOST_CPU_k5 */ /* #undef HAVE_HOST_CPU_k6 */ /* #undef HAVE_HOST_CPU_k62 */ /* #undef HAVE_HOST_CPU_k63 */ /* #undef HAVE_HOST_CPU_athlon */ /* a dummy to make autoheader happy */ /* #undef HAVE_HOST_CPU_ */ /* Define one (and only one) of these for the CPU host family. Only hosts that are going to be tested for need to be in this list, not everything that can possibly be selected. */ /* #undef HAVE_HOST_CPU_FAMILY_power */ /* #undef HAVE_HOST_CPU_FAMILY_powerpc */ #define HAVE_HOST_CPU_FAMILY_x86 1 /* Define if we have native implementation of function. */ /* #define HAVE_NATIVE_mpn_add_1 0 #define HAVE_NATIVE_mpn_add_nc 0 #define HAVE_NATIVE_mpn_addmul_1 0 #define HAVE_NATIVE_mpn_addmul_1c 0 #define HAVE_NATIVE_mpn_addsub_n 0 #define HAVE_NATIVE_mpn_addsub_nc 0 #define HAVE_NATIVE_mpn_and_n 0 #define HAVE_NATIVE_mpn_andn_n 0 #define HAVE_NATIVE_mpn_bdivmod 0 #define HAVE_NATIVE_mpn_cmp 0 #define HAVE_NATIVE_mpn_com_n 0 #define HAVE_NATIVE_mpn_copyd 0 #define HAVE_NATIVE_mpn_copyi 0*/ /* #define HAVE_NATIVE_mpn_divexact_1 1 #define HAVE_NATIVE_mpn_divexact_by3c 1 */ /* #undef HAVE_NATIVE_mpn_divrem */ /* #define HAVE_NATIVE_mpn_divrem_1 1 #define HAVE_NATIVE_mpn_divrem_1c 1 */ /* #undef HAVE_NATIVE_mpn_divrem_2 */ /* #undef HAVE_NATIVE_mpn_divrem_newton */ /* #undef HAVE_NATIVE_mpn_divrem_classic */ /* #undef HAVE_NATIVE_mpn_dump */ /* #undef HAVE_NATIVE_mpn_gcd */ /* #undef HAVE_NATIVE_mpn_gcd_1 */ /* #undef HAVE_NATIVE_mpn_gcd_finda */ /* #undef HAVE_NATIVE_mpn_gcdext */ /* #undef HAVE_NATIVE_mpn_get_str */ /* #undef HAVE_NATIVE_mpn_hamdist */ /* #undef HAVE_NATIVE_mpn_invert_limb */ /* #undef HAVE_NATIVE_mpn_ior_n */ /* #undef HAVE_NATIVE_mpn_iorn_n */ /* #define HAVE_NATIVE_mpn_lshift 1 #define HAVE_NATIVE_mpn_mod_1 1 #define HAVE_NATIVE_mpn_mod_1c 1 */ /* #undef HAVE_NATIVE_mpn_modexact_1_odd */ /* #undef HAVE_NATIVE_mpn_modexact_1c_odd */ /* #undef HAVE_NATIVE_mpn_mul */ /* #define HAVE_NATIVE_mpn_mul_1 1 */ /* #undef HAVE_NATIVE_mpn_mul_1c */ /* #undef HAVE_NATIVE_mpn_mul_2 */ /* #define HAVE_NATIVE_mpn_mul_basecase 1 */ /* #undef HAVE_NATIVE_mpn_mul_n */ /* #undef HAVE_NATIVE_mpn_nand_n */ /* #undef HAVE_NATIVE_mpn_nior_n */ /* #undef HAVE_NATIVE_mpn_perfect_square_p */ /* #undef HAVE_NATIVE_mpn_popcount */ /* #undef HAVE_NATIVE_mpn_preinv_mod_1 */ /* #undef HAVE_NATIVE_mpn_random2 */ /* #undef HAVE_NATIVE_mpn_random */ /* #undef HAVE_NATIVE_mpn_rawrandom */ /* #define HAVE_NATIVE_mpn_rshift 1 */ /* #undef HAVE_NATIVE_mpn_scan0 */ /* #undef HAVE_NATIVE_mpn_scan1 */ /* #undef HAVE_NATIVE_mpn_set_str */ /* #undef HAVE_NATIVE_mpn_sqrtrem */ /* #undef HAVE_NATIVE_mpn_sqr_basecase */ /* #undef HAVE_NATIVE_mpn_sqr_diagonal */ /* #undef HAVE_NATIVE_mpn_sub */ /*#define HAVE_NATIVE_mpn_sub_1 0*/ /* #define HAVE_NATIVE_mpn_sub_n 1 #define HAVE_NATIVE_mpn_sub_nc 1 #define HAVE_NATIVE_mpn_submul_1 1 */ /* #undef HAVE_NATIVE_mpn_submul_1c */ /* #undef HAVE_NATIVE_mpn_udiv_w_sdiv */ /*#define HAVE_NATIVE_mpn_umul_ppmm 0*/ /* #define HAVE_NATIVE_mpn_udiv_qrnnd 1 */ /* #undef HAVE_NATIVE_mpn_xor_n */ /* #undef HAVE_NATIVE_mpn_xnor_n */ /* a dummy to make autoheader happy */ /* #undef HAVE_NATIVE_ */ /* bits per unsigned long, if not in gmp-mparam.h */ #define BITS_PER_ULONG BITS_PER_MP_LIMB /* bytes per mp_limb_t, if not in gmp-mparam.h */ /* #undef BYTES_PER_MP_LIMB */ /* Define if you have the `alarm' function. */ /* #undef HAVE_ALARM */ /* Define if alloca() works (via gmp-impl.h). */ #define HAVE_ALLOCA 1 /* Define if you have and it should be used (not on Ultrix). */ /* #undef HAVE_ALLOCA_H */ /* Define if the compiler accepts gcc style __attribute__ ((const)) */ /* #define HAVE_ATTRIBUTE_CONST 1 */ /* Define if the compiler accepts gcc style __attribute__ ((malloc)) */ /* #undef HAVE_ATTRIBUTE_MALLOC */ /* Define if the compiler accepts gcc style __attribute__ ((mode (XX))) */ /* #define HAVE_ATTRIBUTE_MODE 1 */ /* Define if the compiler accepts gcc style __attribute__ ((noreturn)) */ /* #define HAVE_ATTRIBUTE_NORETURN 1 */ /* Define if tests/libtests has calling conventions checking for the CPU */ #define HAVE_CALLING_CONVENTIONS 1 /* Define to 1 if you have the declaration of `fgetc', and to 0 if you don't. */ #define HAVE_DECL_FGETC 1 /* Define to 1 if you have the declaration of `fscanf', and to 0 if you don't. */ #define HAVE_DECL_FSCANF 1 /* Define to 1 if you have the declaration of `optarg', and to 0 if you don't. */ #define HAVE_DECL_OPTARG 0 /* Define to 1 if you have the declaration of `ungetc', and to 0 if you don't. */ #define HAVE_DECL_UNGETC 1 /* Define to 1 if you have the declaration of `vfprintf', and to 0 if you don't. */ #define HAVE_DECL_VFPRINTF 1 /* Define if you have the header file. */ /* #undef HAVE_DLFCN_H */ /* Define if you have the `getpagesize' function. */ #define HAVE_GETPAGESIZE 1 /* Define if you have the `getrusage' function. */ /* #undef HAVE_GETRUSAGE */ /* Define if you have the `gettimeofday' function. */ /* #undef HAVE_GETTIMEOFDAY */ /* Define if the system has the type `intmax_t'. */ #define HAVE_INTMAX_T 1 /* Define if you have the header file. */ /* #undef HAVE_INTTYPES_H */ /* Define if you have the `localeconv' function. */ #define HAVE_LOCALECONV 1 /* Define if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define if the system has the type `long double'. */ #define HAVE_LONG_DOUBLE 1 /* Define if the system has the type `long long'. */ /* #define HAVE_LONG_LONG 1 */ /* Define if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define if you have the `memset' function. */ #define HAVE_MEMSET 1 /* Define if you have the `mmap' function. */ /* #undef HAVE_MMAP */ /* Define if you have the `mprotect' function. */ /* #define HAVE_MPROTECT 1 */ /* Define if you have the `obstack_vprintf' function. */ /* #undef HAVE_OBSTACK_VPRINTF */ /* Define if you have the `popen' function. */ #define HAVE_POPEN 1 /* Define if you have the `processor_info' function. */ /* #undef HAVE_PROCESSOR_INFO */ /* Define if the system has the type `ptrdiff_t'. */ #define HAVE_PTRDIFF_T 1 /* Define if the system has the type `quad_t'. */ #define HAVE_QUAD_T 1 /* Define if you have the `read_real_time' function. */ /* #undef HAVE_READ_REAL_TIME */ /* Tune directory speed_cyclecounter, undef=none, 1=32bits, 2=64bits) */ #define HAVE_SPEED_CYCLECOUNTER 2 /* Define if exists and works */ #define HAVE_STDARG 1 /* Define if you have the header file. */ /* #define HAVE_STDINT_H 1 */ /* Define if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define if cpp supports the ANSI # stringizing operator. */ #define HAVE_STRINGIZE 1 /* Define if you have the header file. */ /* #undef HAVE_STRINGS_H */ /* Define if you have the header file. */ #define HAVE_STRING_H 1 /* Define if you have the `strnlen' function. */ /* #undef HAVE_STRNLEN */ /* Define if you have the `strtoul' function. */ #define HAVE_STRTOUL 1 /* Define if you have the `sysconf' function. */ /* #undef HAVE_SYSCONF */ /* Define if you have the `sysctl' function. */ /* #undef HAVE_SYSCTL */ /* Define if you have the `sysctlbyname' function. */ /* #undef HAVE_SYSCTLBYNAME */ /* Define if you have the header file. */ /* #undef HAVE_SYS_MMAN_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_PARAM_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_PROCESSOR_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_RESOURCE_H */ /* Define if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYS_SYSCTL_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_SYSTEMCFG_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_TIMES_H */ /* Define if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define if you have the `times' function. */ /* #undef HAVE_TIMES */ /* Define if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define if you have vsnprintf and it works properly. */ /* #undef HAVE_VSNPRINTF */ /* Assembler local label prefix */ #define LSYM_PREFIX "L" /* Name of package */ #define PACKAGE "gmp" /* Define if compiler has function prototypes */ #define PROTOTYPES 1 /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void /* The size of a `mp_limb_t', as computed by sizeof. */ /* #undef SIZEOF_MP_LIMB_T */ /* The size of a `unsigned long', as computed by sizeof. */ /* #undef SIZEOF_UNSIGNED_LONG */ /* Define if sscanf requires writable inputs */ /* #undef SSCANF_WRITABLE_INPUT */ /* Define if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Maximum size the tune program can test for KARATSUBA_SQR_THRESHOLD */ #define TUNE_KARATSUBA_SQR_MAX KARATSUBA_SQR_MAX_GENERIC /* Version number of package */ #define VERSION "4.0" /* ./configure --enable-assert option, to enable some ASSERT()s */ /* #undef WANT_ASSERT */ /* ./configure --enable-fft option, to enable FFTs for multiplication */ #define WANT_FFT 1 /* --enable-alloca=yes */ #define WANT_TMP_ALLOCA 1 /* --enable-alloca=debug */ /* #undef WANT_TMP_DEBUG */ /* --enable-alloca=malloc-notreentrant */ /* #undef WANT_TMP_NOTREENTRANT */ /* --enable-alloca=malloc-reentrant */ /* #undef WANT_TMP_REENTRANT */ /* Define as `__inline' if that's what the C compiler calls it, or to nothing if it is not supported. */ #define inline __inline core++-1.7/win32/patches/gmp-4.0.1/gmp-mparam.h0100644000175000001440000000321507437361201020016 0ustar joachimusers/* Generic x86 gmp-mparam.h -- Compiler/machine parameter header file. Copyright 1991, 1993, 1994, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define BITS_PER_MP_LIMB 32 #define BYTES_PER_MP_LIMB 4 /* close-ish for p5 and up, though 386/486 are much slower */ #ifndef UMUL_TIME #define UMUL_TIME 10 /* cycles */ #endif /* about right for most x86s */ #ifndef UDIV_TIME #define UDIV_TIME 40 /* cycles */ #endif /* udiv_qrnnd_preinv is a bit complicated and doesn't really suit the x86s without careful assembler coding, so mark it as slower then plain division. */ #ifndef UDIV_NORM_PREINV_TIME #define UDIV_NORM_PREINV_TIME 50 /* cycles */ #endif /* Generic x86 mpn_divexact_1 is faster than generic x86 mpn_divrem_1 on all of p5, p6, k6 and k7, so use it always. It's probably slower on 386 and 486, but that's too bad. */ #define DIVEXACT_1_THRESHOLD 0 core++-1.7/win32/patches/gmp-4.0.1/gmp.dsp0100644000175000001440000022555510017704502017110 0ustar joachimusers# Microsoft Developer Studio Project File - Name="gmp" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=gmp - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "gmp.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gmp.mak" CFG="gmp - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gmp - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "gmp - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "gmp - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "../lib" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD BASE RSC /l 0x407 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /pdb:none /machine:I386 !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "../lib" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD BASE RSC /l 0x407 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"../lib/gmpDebug.dll" !ENDIF # Begin Target # Name "gmp - Win32 Release" # Name "gmp - Win32 Debug" # Begin Source File SOURCE=.\mpf\abs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\abs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\abs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\add.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\add.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\add.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\add_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\add_n.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" # ADD CPP /D "OPERATION_add_n" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" # ADD CPP /D "OPERATION_add_n" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\add_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\add_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\addmul_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" # ADD CPP /D "OPERATION_addmul_1" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" # ADD CPP /D "OPERATION_addmul_1" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\and.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\aors.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\aorsmul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\aorsmul_i.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\array_init.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\asprintf.c # End Source File # Begin Source File SOURCE=.\printf\asprntffuns.c # End Source File # Begin Source File SOURCE=.\assert.c # End Source File # Begin Source File SOURCE=.\mpn\generic\bdivmod.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\bin_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\bin_uiui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\canonicalize.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\ceilfloor.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cfdiv_q_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cfdiv_r_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\clear.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\clear.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\clear.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\clrbit.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\cmp_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmp_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmpabs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmpabs_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmpabs_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\com.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\compat.c # End Source File # Begin Source File SOURCE=.\mpz\cong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cong_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cong_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\dc_divrem_n.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\div.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\div.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\div_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\div_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\dive_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\dive_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\diveby3.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divegcd.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divexact.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\divis.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divis.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divis_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divis_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\divrem.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\divrem_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\divrem_2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\doprnt.c # End Source File # Begin Source File SOURCE=.\printf\doprntf.c # End Source File # Begin Source File SOURCE=.\printf\doprnti.c # End Source File # Begin Source File SOURCE=.\scanf\doscan.c # End Source File # Begin Source File SOURCE=.\mpf\dump.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\dump.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\dump.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\eq.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\equal.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\errno.c # End Source File # Begin Source File SOURCE=".\extract-dbl.c" # End Source File # Begin Source File SOURCE=.\mpz\fac_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\fib2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fib2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fib_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_sint.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_sint.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_slong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_slong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_sshort.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_sshort.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_uint.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_uint.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_ulong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_ulong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_ushort.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_ushort.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\fprintf.c # End Source File # Begin Source File SOURCE=.\scanf\fscanf.c # End Source File # Begin Source File SOURCE=.\scanf\fscanffuns.c # End Source File # Begin Source File SOURCE=.\mpn\generic\gcd.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\gcd.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\gcd_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\gcd_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\gcdext.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\gcdext.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_d_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_d_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\get_den.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_dfl_prec.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\get_num.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_prc.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\getlimbn.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\hamdist.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\hamdist.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\init.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\init.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\init.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\init2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\init2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\inp_raw.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=".\insert-dbl.c" # End Source File # Begin Source File SOURCE=.\mpf\int_p.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\inv.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\invert.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\ior.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\jacbase.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\jacobi.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\kronsz.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\kronuz.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\kronzs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\kronzu.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\lcm.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\lcm_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\lshift.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\lucnum2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\lucnum_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\md_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\memory.c # End Source File # Begin Source File SOURCE=.\mpz\millerrabin.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mod.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mod_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mod_34lsub1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mode1o.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\mp_bases.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mp_bpl.c # End Source File # Begin Source File SOURCE=.\mp_clz_tab.c # End Source File # Begin Source File SOURCE=.\mp_minv_tab.c # End Source File # Begin Source File SOURCE=.\mp_set_fns.c # End Source File # Begin Source File SOURCE=.\mpf\mul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\mul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\mul_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mul_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul_basecase.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul_fft.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul_n.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mul_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\mul_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mul_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\n_pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\neg.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\neg.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\neg.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\nextprime.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\obprintf.c # End Source File # Begin Source File SOURCE=.\printf\obprntffuns.c # End Source File # Begin Source File SOURCE=.\printf\obvprintf.c # End Source File # Begin Source File SOURCE=.\mpz\out_raw.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\perfpow.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\perfsqr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\perfsqr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\popcount.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\popcount.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\powm.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\powm_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\pprime_p.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\pre_mod_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\printf.c # End Source File # Begin Source File SOURCE=.\printf\printffuns.c # End Source File # Begin Source File SOURCE=.\rand.c # End Source File # Begin Source File SOURCE=.\randclr.c # End Source File # Begin Source File SOURCE=.\randdef.c # End Source File # Begin Source File SOURCE=.\randlc.c # End Source File # Begin Source File SOURCE=.\randlc2s.c # End Source File # Begin Source File SOURCE=.\randlc2x.c # End Source File # Begin Source File SOURCE=.\mpn\generic\random.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\random.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\random2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\random2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\random2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\randraw.c # End Source File # Begin Source File SOURCE=.\rands.c # End Source File # Begin Source File SOURCE=.\randsd.c # End Source File # Begin Source File SOURCE=.\randsdui.c # End Source File # Begin Source File SOURCE=.\mpz\realloc.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\realloc2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\reldiff.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\remove.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=".\printf\repl-vsnprintf.c" # End Source File # Begin Source File SOURCE=.\mpz\root.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\rrandomb.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\rshift.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sb_divrem_mn.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\scan0.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\scan0.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\scan1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\scan1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\scanf\scanf.c # End Source File # Begin Source File SOURCE=.\mpf\set.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_den.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_dfl_prec.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_f.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_f.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_num.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_prc.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_prc_raw.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_z.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_z.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\setbit.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\size.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\size.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sizeinbase.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\snprintf.c # End Source File # Begin Source File SOURCE=.\printf\snprntffuns.c # End Source File # Begin Source File SOURCE=.\printf\sprintf.c # End Source File # Begin Source File SOURCE=.\printf\sprintffuns.c # End Source File # Begin Source File SOURCE=.\mpn\generic\sqr_basecase.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\sqrt.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sqrt.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\sqrt_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sqrtrem.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sqrtrem.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\scanf\sscanf.c # End Source File # Begin Source File SOURCE=.\scanf\sscanffuns.c # End Source File # Begin Source File SOURCE=.\mpf\sub.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sub.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sub.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sub_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sub_n.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" # ADD CPP /D "OPERATION_sub_n" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" # ADD CPP /D "OPERATION_sub_n" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\sub_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sub_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\submul_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" # ADD CPP /D "OPERATION_submul_1" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" # ADD CPP /D "OPERATION_submul_1" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\swap.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\swap.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\swap.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_q_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\tdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_r_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\trunc.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tstbit.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\ui_div.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\ui_pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\ui_sub.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\urandomb.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\urandomb.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\urandomm.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\vasprintf.c # End Source File # Begin Source File SOURCE=.\version.c # End Source File # Begin Source File SOURCE=.\printf\vfprintf.c # End Source File # Begin Source File SOURCE=.\scanf\vfscanf.c # End Source File # Begin Source File SOURCE=.\printf\vprintf.c # End Source File # Begin Source File SOURCE=.\scanf\vscanf.c # End Source File # Begin Source File SOURCE=.\printf\vsnprintf.c # End Source File # Begin Source File SOURCE=.\printf\vsprintf.c # End Source File # Begin Source File SOURCE=.\scanf\vsscanf.c # End Source File # Begin Source File SOURCE=.\mpz\xor.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # End Target # End Project core++-1.7/win32/patches/gmp-4.0.1/gmp.dsw0100644000175000001440000000102107437361201017102 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "gmp"=.\gmp.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/patches/gmp-4.0.1/gmp.h0100644000175000001440000021533207437361201016550 0ustar joachimusers/* Definitions for GNU multiple precision functions. -*- mode: c -*- Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __GMP_H__ /* Instantiated by configure, for internal use only. */ #if ! __GMP_WITHIN_CONFIGURE #define __GMP_BITS_PER_MP_LIMB 32 #define __GMP_HAVE_HOST_CPU_FAMILY_power 0 #define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0 #endif /* The following (everything under ifndef __GNU_MP__) must be identical in gmp.h and mp.h to allow both to be included in an application or during the library build. */ #ifndef __GNU_MP__ #define __GNU_MP__ 4 #define __need_size_t #include #undef __need_size_t /* Instantiated by configure, for internal use only */ #if ! __GMP_WITHIN_CONFIGURE /* #undef _LONG_LONG_LIMB */ /* Whether static, shared or both has been built. */ #define __GMP_LIBGMP_STATIC 0 #define __GMP_LIBGMP_SHARED 1 #endif /* __STDC__ - some ANSI compilers define this only to 0, hence the use of "defined" and not "__STDC__-0". In particular Sun workshop C 5.0 sets __STDC__ to 0, but requires "##" for token pasting. _AIX - gnu ansidecl.h asserts that all known AIX compilers are ANSI but don't always define __STDC__. _mips - gnu ansidecl.h says the RISC/OS MIPS compiler is ANSI in SVR4 mode, but doesn't define __STDC__. _MSC_VER - Microsoft C is ANSI, but __STDC__ is undefined unless the /Za option is given (in which case it's 1). _WIN32 - tested for by gnu ansidecl.h, no doubt on the assumption that all w32 compilers are ansi. */ #if defined (__STDC__) \ || defined (__cplusplus) \ || defined (_AIX) \ || defined (__DECC) \ || (defined (__mips) && defined (_SYSTYPE_SVR4)) \ || defined (_MSC_VER) \ || defined (_WIN32) #define __GMP_HAVE_CONST 1 #define __GMP_HAVE_PROTOTYPES 1 #define __GMP_HAVE_TOKEN_PASTE 1 #else #define __GMP_HAVE_CONST 0 #define __GMP_HAVE_PROTOTYPES 0 #define __GMP_HAVE_TOKEN_PASTE 0 #endif #if __GMP_HAVE_CONST #define __gmp_const const #define __gmp_signed signed #else #define __gmp_const #define __gmp_signed #endif /* __GMP_DECLSPEC marks a function or variable for import or export for a windows DLL, or is empty on other systems. When building GMP, libtool gives us DLL_EXPORT when making objects that will go into a DLL and hence should have export directives. Notice DLL_EXPORT is only tested under __GMP_WITHIN_GMP, since if some other libtool based package is using gmp.h then DLL_EXPORT will be telling it what to do, not us. When compiling an application, __GMP_LIBGMP_SHARED indicates whether the installed GMP is a DLL or not. For a DLL we use import directives. There's no attempt here to support GMP installed both static and DLL, doing so would mean applications would have to tell us which of the two is going to be used, and that seems very tedious and error prone when using GMP by hand, and equally tedious from a package since autoconf and automake don't give much help. Note that __GMP_DECLSPEC is only wanted on documented global functions and variables. Internals in gmp-impl.h etc should be left unadorned and won't be visible to applications using a DLL. For testing on a non-windows system, __GMP_DECLSPEC can be set to __attribute__ ((section ("foo"))) or similar, and the resulting objects checked with readelf or whatever to see if all the expected globals have ended up with that attribute. PORTME: What does Borland use? */ #if defined (__GNUC__) || defined (_MSC_VER) #define __GMP_DECLSPEC_EXPORT __declspec(dllexport) #define __GMP_DECLSPEC_IMPORT __declspec(dllimport) #endif #ifdef __WATCOMC__ #define __GMP_DECLSPEC_EXPORT __export #define __GMP_DECLSPEC_IMPORT __import #endif #ifdef __IBMC__ #define __GMP_DECLSPEC_EXPORT _Export #define __GMP_DECLSPEC_IMPORT _Import #endif #if __GMP_WITHIN_GMP #ifdef DLL_EXPORT #define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT #endif #else #if defined (_WIN32) && __GMP_LIBGMP_SHARED #define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT #endif #endif #ifndef __GMP_DECLSPEC #define __GMP_DECLSPEC #endif #ifdef _SHORT_LIMB typedef unsigned int mp_limb_t; typedef int mp_limb_signed_t; #else #ifdef _LONG_LONG_LIMB typedef unsigned long long int mp_limb_t; typedef long long int mp_limb_signed_t; #else typedef unsigned long int mp_limb_t; typedef long int mp_limb_signed_t; #endif #endif typedef mp_limb_t * mp_ptr; typedef __gmp_const mp_limb_t * mp_srcptr; #if defined (_CRAY) && ! defined (_CRAYMPP) /* plain `int' is much faster (48 bits) */ #define __GMP_MP_SIZE_T_INT 1 typedef int mp_size_t; typedef int mp_exp_t; #else #define __GMP_MP_SIZE_T_INT 0 typedef long int mp_size_t; typedef long int mp_exp_t; #endif typedef struct { int _mp_alloc; /* Number of *limbs* allocated and pointed to by the _mp_d field. */ int _mp_size; /* abs(_mp_size) is the number of limbs the last field points to. If _mp_size is negative this is a negative number. */ mp_limb_t *_mp_d; /* Pointer to the limbs. */ } __mpz_struct; #endif /* __GNU_MP__ */ typedef __mpz_struct MP_INT; typedef __mpz_struct mpz_t[1]; typedef struct { __mpz_struct _mp_num; __mpz_struct _mp_den; } __mpq_struct; typedef __mpq_struct MP_RAT; typedef __mpq_struct mpq_t[1]; typedef struct { int _mp_prec; /* Max precision, in number of `mp_limb_t's. Set by mpf_init and modified by mpf_set_prec. The area pointed to by the _mp_d field contains `prec' + 1 limbs. */ int _mp_size; /* abs(_mp_size) is the number of limbs the last field points to. If _mp_size is negative this is a negative number. */ mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */ mp_limb_t *_mp_d; /* Pointer to the limbs. */ } __mpf_struct; /* typedef __mpf_struct MP_FLOAT; */ typedef __mpf_struct mpf_t[1]; /* Available random number generation algorithms. */ typedef enum { GMP_RAND_ALG_DEFAULT = 0, GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */ } gmp_randalg_t; /* Linear congruential data struct. */ typedef struct { mpz_t _mp_a; /* Multiplier. */ unsigned long int _mp_c; /* Adder. */ mpz_t _mp_m; /* Modulus (valid only if m2exp == 0). */ unsigned long int _mp_m2exp; /* If != 0, modulus is 2 ^ m2exp. */ } __gmp_randata_lc; /* Random state struct. */ typedef struct { mpz_t _mp_seed; /* Current seed. */ gmp_randalg_t _mp_alg; /* Algorithm used. */ union { /* Algorithm specific data. */ __gmp_randata_lc *_mp_lc; /* Linear congruential. */ } _mp_algdata; } __gmp_randstate_struct; typedef __gmp_randstate_struct gmp_randstate_t[1]; /* Types for function declarations in gmp files. */ /* ??? Should not pollute user name space with these ??? */ typedef __gmp_const __mpz_struct *mpz_srcptr; typedef __mpz_struct *mpz_ptr; typedef __gmp_const __mpf_struct *mpf_srcptr; typedef __mpf_struct *mpf_ptr; typedef __gmp_const __mpq_struct *mpq_srcptr; typedef __mpq_struct *mpq_ptr; #ifndef _PROTO #if __GMP_HAVE_PROTOTYPES #define _PROTO(x) x #else #define _PROTO(x) () #endif #endif #ifndef __MPN #if __GMP_HAVE_TOKEN_PASTE #define __MPN(x) __gmpn_##x #else #define __MPN(x) __gmpn_/**/x #endif #endif #if defined (FILE) \ || defined (H_STDIO) \ || defined (_H_STDIO) /* AIX */ \ || defined (_STDIO_H) /* glibc, Sun, SCO */ \ || defined (_STDIO_H_) /* BSD, OSF */ \ || defined (__STDIO_H__) /* IRIX */ \ || defined (_STDIO_INCLUDED) /* HPUX */ \ || defined (__dj_include_stdio_h_) /* DJGPP */ \ || defined (_FILE_DEFINED) /* Microsoft */ \ || defined (__STDIO__) /* Apple MPW MrC */ #define _GMP_H_HAVE_FILE 1 #endif /* In ISO C, if a prototype involving "struct obstack *" is given without that structure defined, then the struct is scoped down to just the prototype, causing a conflict if it's subsequently defined for real. So only give prototypes if we've got obstack.h. */ #if defined (_OBSTACK_H) /* glibc */ #define _GMP_H_HAVE_OBSTACK 1 #endif /* The prototypes for gmp_vprintf etc are provided only if va_list is available, via an application having included or . Usually va_list is a typedef so can't be tested directly, but va_start is almost certainly a macro, so look for that. will define some sort of va_list for vprintf and vfprintf, but let's not bother trying to use that since it's not standard and since application uses for gmp_vprintf etc will almost certainly require the whole or anyway. */ #ifdef va_start #define _GMP_H_HAVE_VA_LIST 1 #endif /* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ #if defined (__GNUC__) && defined (__GNUC_MINOR__) #define __GMP_GNUC_PREREQ(maj, min) \ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) #else #define __GMP_GNUC_PREREQ(maj, min) 0 #endif /* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically it means a function does nothing but examine its arguments and memory (global or via arguments) to generate a return value, but changes nothing and has no side-effects. */ #if __GMP_GNUC_PREREQ (2,96) #define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else #define __GMP_ATTRIBUTE_PURE #endif /* PORTME: What other compilers have a useful "extern inline"? "static inline" would be an acceptable substitute if the compiler (or linker) discards unused statics. */ /* gcc has __inline__ in all modes, including strict ansi. Give a prototype for an inline too, so as to correctly specify "dllimport" on windows, in case the function is called rather than inlined. */ #ifdef __GNUC__ #define __GMP_EXTERN_INLINE extern __inline__ #define __GMP_INLINE_PROTOTYPES 1 #endif /* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes place under -O. Without -O "foo" seems to be emitted whether it's used or not, which is wasteful. "extern inline foo()" isn't useful, the "extern" is apparently ignored, so foo is inlined if possible but also emitted as a global, which causes multiple definition errors when building a shared libgmp. */ #if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \ && ! defined (__GMP_EXTERN_INLINE) #define __GMP_EXTERN_INLINE static inline #endif /* C++ always has "inline" and since it's a normal feature the linker should discard duplicate non-inlined copies, or if it doesn't then that's a problem for everyone, not just GMP. */ #if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE) #ifdef _MSC_VER #define __GMP_EXTERN_INLINE static inline #else #define __GMP_EXTERN_INLINE inline #endif #endif /* By default, don't give a prototype when there's going to be an inline version. Note in particular that Cray C++ objects to the combination of prototype and inline. */ #ifdef __GMP_EXTERN_INLINE #ifndef __GMP_INLINE_PROTOTYPES #define __GMP_INLINE_PROTOTYPES 0 #endif #else #define __GMP_INLINE_PROTOTYPES 1 #endif #define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x)) #define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i)) #define __GMP_UINT_MAX (~ (unsigned) 0) #define __GMP_ULONG_MAX (~ (unsigned long) 0) #define __GMP_USHRT_MAX ((unsigned short) ~0) /* Allow direct user access to numerator and denominator of a mpq_t object. */ #define mpq_numref(Q) (&((Q)->_mp_num)) #define mpq_denref(Q) (&((Q)->_mp_den)) #if defined (__cplusplus) extern "C" { #endif #define mp_set_memory_functions __gmp_set_memory_functions void __GMP_DECLSPEC mp_set_memory_functions _PROTO ((void *(*) (size_t), void *(*) (void *, size_t, size_t), void (*) (void *, size_t))); #define mp_bits_per_limb __gmp_bits_per_limb extern __gmp_const int __GMP_DECLSPEC mp_bits_per_limb; /* the following for internal use only */ __GMP_DECLSPEC extern void * (* __gmp_allocate_func) _PROTO ((size_t)); __GMP_DECLSPEC extern void * (* __gmp_reallocate_func) _PROTO ((void *, size_t, size_t)); __GMP_DECLSPEC extern void (* __gmp_free_func) _PROTO ((void *, size_t)); /**************** Random number routines. ****************/ /* obsolete */ #define gmp_randinit __gmp_randinit void __GMP_DECLSPEC gmp_randinit _PROTO ((gmp_randstate_t, gmp_randalg_t, ...)); #define gmp_randinit_default __gmp_randinit_default void __GMP_DECLSPEC gmp_randinit_default _PROTO ((gmp_randstate_t)); #define gmp_randinit_lc __gmp_randinit_lc void __GMP_DECLSPEC gmp_randinit_lc _PROTO ((gmp_randstate_t, mpz_srcptr, unsigned long int, mpz_srcptr)); #define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp void __GMP_DECLSPEC gmp_randinit_lc_2exp _PROTO ((gmp_randstate_t, mpz_srcptr, unsigned long int, unsigned long int)); #define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size int __GMP_DECLSPEC gmp_randinit_lc_2exp_size _PROTO ((gmp_randstate_t, unsigned long)); #define gmp_randseed __gmp_randseed void __GMP_DECLSPEC gmp_randseed _PROTO ((gmp_randstate_t, mpz_srcptr)); #define gmp_randseed_ui __gmp_randseed_ui void __GMP_DECLSPEC gmp_randseed_ui _PROTO ((gmp_randstate_t, unsigned long int)); #define gmp_randclear __gmp_randclear void __GMP_DECLSPEC gmp_randclear _PROTO ((gmp_randstate_t)); /**************** Formatted output routines. ****************/ #define gmp_asprintf __gmp_asprintf int __GMP_DECLSPEC gmp_asprintf _PROTO ((char **, const char *, ...)); #define gmp_fprintf __gmp_fprintf #if _GMP_H_HAVE_FILE int __GMP_DECLSPEC gmp_fprintf _PROTO ((FILE *, const char *, ...)); #endif #define gmp_obstack_printf __gmp_obstack_printf #if _GMP_H_HAVE_OBSTACK int __GMP_DECLSPEC gmp_obstack_printf _PROTO ((struct obstack *, const char *, ...)); #endif #define gmp_obstack_vprintf __gmp_obstack_vprintf #if _GMP_H_HAVE_OBSTACK && _GMP_H_HAVE_VA_LIST int __GMP_DECLSPEC gmp_obstack_vprintf _PROTO ((struct obstack *, const char *, va_list)); #endif #define gmp_printf __gmp_printf int __GMP_DECLSPEC gmp_printf _PROTO ((const char *, ...)); #define gmp_snprintf __gmp_snprintf int __GMP_DECLSPEC gmp_snprintf _PROTO ((char *, size_t, const char *, ...)); #define gmp_sprintf __gmp_sprintf int __GMP_DECLSPEC gmp_sprintf _PROTO ((char *, const char *, ...)); #define gmp_vasprintf __gmp_vasprintf #if _GMP_H_HAVE_VA_LIST int __GMP_DECLSPEC gmp_vasprintf _PROTO ((char **, const char *, va_list)); #endif #define gmp_vfprintf __gmp_vfprintf #if _GMP_H_HAVE_FILE && _GMP_H_HAVE_VA_LIST int __GMP_DECLSPEC gmp_vfprintf _PROTO ((FILE *, const char *, va_list)); #endif #define gmp_vprintf __gmp_vprintf #if _GMP_H_HAVE_VA_LIST int __GMP_DECLSPEC gmp_vprintf _PROTO ((const char *, va_list)); #endif #define gmp_vsnprintf __gmp_vsnprintf #if _GMP_H_HAVE_VA_LIST int __GMP_DECLSPEC gmp_vsnprintf _PROTO ((char *, size_t, const char *, va_list)); #endif #define gmp_vsprintf __gmp_vsprintf #if _GMP_H_HAVE_VA_LIST int __GMP_DECLSPEC gmp_vsprintf _PROTO ((char *, const char *, va_list)); #endif /**************** Formatted input routines. ****************/ #define gmp_fscanf __gmp_fscanf #if _GMP_H_HAVE_FILE int __GMP_DECLSPEC gmp_fscanf _PROTO ((FILE *, const char *, ...)); #endif #define gmp_scanf __gmp_scanf int __GMP_DECLSPEC gmp_scanf _PROTO ((const char *, ...)); #define gmp_sscanf __gmp_sscanf int __GMP_DECLSPEC gmp_sscanf _PROTO ((const char *, const char *, ...)); #define gmp_vfscanf __gmp_vfscanf #if _GMP_H_HAVE_FILE && _GMP_H_HAVE_VA_LIST int __GMP_DECLSPEC gmp_vfscanf _PROTO ((FILE *, const char *, va_list)); #endif #define gmp_vscanf __gmp_vscanf #if _GMP_H_HAVE_VA_LIST int __GMP_DECLSPEC gmp_vscanf _PROTO ((const char *, va_list)); #endif #define gmp_vsscanf __gmp_vsscanf #if _GMP_H_HAVE_VA_LIST int __GMP_DECLSPEC gmp_vsscanf _PROTO ((const char *, const char *, va_list)); #endif /**************** Integer (i.e. Z) routines. ****************/ #define _mpz_realloc __gmpz_realloc #define mpz_realloc __gmpz_realloc __GMP_DECLSPEC void * _mpz_realloc _PROTO ((mpz_ptr, mp_size_t)); #define mpz_abs __gmpz_abs #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_abs void __GMP_DECLSPEC mpz_abs _PROTO ((mpz_ptr, mpz_srcptr)); #endif #define mpz_add __gmpz_add void __GMP_DECLSPEC mpz_add _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_add_ui __gmpz_add_ui void __GMP_DECLSPEC mpz_add_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_addmul __gmpz_addmul void __GMP_DECLSPEC mpz_addmul _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_addmul_ui __gmpz_addmul_ui void __GMP_DECLSPEC mpz_addmul_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_and __gmpz_and void __GMP_DECLSPEC mpz_and _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_array_init __gmpz_array_init void __GMP_DECLSPEC mpz_array_init _PROTO ((mpz_ptr, mp_size_t, mp_size_t)); #define mpz_bin_ui __gmpz_bin_ui void __GMP_DECLSPEC mpz_bin_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_bin_uiui __gmpz_bin_uiui void __GMP_DECLSPEC mpz_bin_uiui _PROTO ((mpz_ptr, unsigned long int, unsigned long int)); #define mpz_cdiv_q __gmpz_cdiv_q void __GMP_DECLSPEC mpz_cdiv_q _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp void __GMP_DECLSPEC mpz_cdiv_q_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); #define mpz_cdiv_q_ui __gmpz_cdiv_q_ui unsigned long int __GMP_DECLSPEC mpz_cdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_cdiv_qr __gmpz_cdiv_qr void __GMP_DECLSPEC mpz_cdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui unsigned long int __GMP_DECLSPEC mpz_cdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_cdiv_r __gmpz_cdiv_r void __GMP_DECLSPEC mpz_cdiv_r _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp void __GMP_DECLSPEC mpz_cdiv_r_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); #define mpz_cdiv_r_ui __gmpz_cdiv_r_ui unsigned long int __GMP_DECLSPEC mpz_cdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_cdiv_ui __gmpz_cdiv_ui unsigned long int __GMP_DECLSPEC mpz_cdiv_ui _PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_clear __gmpz_clear void __GMP_DECLSPEC mpz_clear _PROTO ((mpz_ptr)); #define mpz_clrbit __gmpz_clrbit void __GMP_DECLSPEC mpz_clrbit _PROTO ((mpz_ptr, unsigned long int)); #define mpz_cmp __gmpz_cmp int __GMP_DECLSPEC mpz_cmp _PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_cmp_d __gmpz_cmp_d int __GMP_DECLSPEC mpz_cmp_d _PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; #define _mpz_cmp_si __gmpz_cmp_si int __GMP_DECLSPEC _mpz_cmp_si _PROTO ((mpz_srcptr, signed long int)) __GMP_ATTRIBUTE_PURE; #define _mpz_cmp_ui __gmpz_cmp_ui int __GMP_DECLSPEC _mpz_cmp_ui _PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_cmpabs __gmpz_cmpabs int __GMP_DECLSPEC mpz_cmpabs _PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_cmpabs_d __gmpz_cmpabs_d int __GMP_DECLSPEC mpz_cmpabs_d _PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; #define mpz_cmpabs_ui __gmpz_cmpabs_ui int __GMP_DECLSPEC mpz_cmpabs_ui _PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_com __gmpz_com void __GMP_DECLSPEC mpz_com _PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_congruent_p __gmpz_congruent_p int __GMP_DECLSPEC mpz_congruent_p _PROTO ((mpz_srcptr, mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_congruent_2exp_p __gmpz_congruent_2exp_p int __GMP_DECLSPEC mpz_congruent_2exp_p _PROTO ((mpz_srcptr, mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE; #define mpz_congruent_ui_p __gmpz_congruent_ui_p int __GMP_DECLSPEC mpz_congruent_ui_p _PROTO ((mpz_srcptr, unsigned long, unsigned long)) __GMP_ATTRIBUTE_PURE; #define mpz_divexact __gmpz_divexact void __GMP_DECLSPEC mpz_divexact _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_divexact_ui __gmpz_divexact_ui void __GMP_DECLSPEC mpz_divexact_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); #define mpz_divisible_p __gmpz_divisible_p int __GMP_DECLSPEC mpz_divisible_p _PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_divisible_ui_p __gmpz_divisible_ui_p int __GMP_DECLSPEC mpz_divisible_ui_p _PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE; #define mpz_divisible_2exp_p __gmpz_divisible_2exp_p int __GMP_DECLSPEC mpz_divisible_2exp_p _PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE; #define mpz_dump __gmpz_dump void __GMP_DECLSPEC mpz_dump _PROTO ((mpz_srcptr)); #define mpz_fac_ui __gmpz_fac_ui void __GMP_DECLSPEC mpz_fac_ui _PROTO ((mpz_ptr, unsigned long int)); #define mpz_fdiv_q __gmpz_fdiv_q void __GMP_DECLSPEC mpz_fdiv_q _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp void __GMP_DECLSPEC mpz_fdiv_q_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_q_ui __gmpz_fdiv_q_ui unsigned long int __GMP_DECLSPEC mpz_fdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_qr __gmpz_fdiv_qr void __GMP_DECLSPEC mpz_fdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui unsigned long int __GMP_DECLSPEC mpz_fdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_r __gmpz_fdiv_r void __GMP_DECLSPEC mpz_fdiv_r _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp void __GMP_DECLSPEC mpz_fdiv_r_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_r_ui __gmpz_fdiv_r_ui unsigned long int __GMP_DECLSPEC mpz_fdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_ui __gmpz_fdiv_ui unsigned long int __GMP_DECLSPEC mpz_fdiv_ui _PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_fib_ui __gmpz_fib_ui void __GMP_DECLSPEC mpz_fib_ui _PROTO ((mpz_ptr, unsigned long int)); #define mpz_fib2_ui __gmpz_fib2_ui void __GMP_DECLSPEC mpz_fib2_ui _PROTO ((mpz_ptr, mpz_ptr, unsigned long int)); #define mpz_fits_sint_p __gmpz_fits_sint_p int __GMP_DECLSPEC mpz_fits_sint_p _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_fits_slong_p __gmpz_fits_slong_p int __GMP_DECLSPEC mpz_fits_slong_p _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_fits_sshort_p __gmpz_fits_sshort_p int __GMP_DECLSPEC mpz_fits_sshort_p _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_fits_uint_p __gmpz_fits_uint_p #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_fits_uint_p int __GMP_DECLSPEC mpz_fits_uint_p _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #endif #define mpz_fits_ulong_p __gmpz_fits_ulong_p #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_fits_ulong_p int __GMP_DECLSPEC mpz_fits_ulong_p _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #endif #define mpz_fits_ushort_p __gmpz_fits_ushort_p #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_fits_ushort_p int __GMP_DECLSPEC mpz_fits_ushort_p _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #endif #define mpz_gcd __gmpz_gcd void __GMP_DECLSPEC mpz_gcd _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_gcd_ui __gmpz_gcd_ui unsigned long int __GMP_DECLSPEC mpz_gcd_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_gcdext __gmpz_gcdext void __GMP_DECLSPEC mpz_gcdext _PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_get_d __gmpz_get_d double __GMP_DECLSPEC mpz_get_d _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_get_d_2exp __gmpz_get_d_2exp double __GMP_DECLSPEC mpz_get_d_2exp _PROTO ((signed long int *, mpz_srcptr)); #define mpz_get_si __gmpz_get_si /* signed */ long int __GMP_DECLSPEC mpz_get_si _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_get_str __gmpz_get_str __GMP_DECLSPEC char * mpz_get_str _PROTO ((char *, int, mpz_srcptr)); #define mpz_get_ui __gmpz_get_ui #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_get_ui unsigned long int __GMP_DECLSPEC mpz_get_ui _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #endif #define mpz_getlimbn __gmpz_getlimbn #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_getlimbn mp_limb_t __GMP_DECLSPEC mpz_getlimbn _PROTO ((mpz_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE; #endif #define mpz_hamdist __gmpz_hamdist unsigned long int __GMP_DECLSPEC mpz_hamdist _PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_init __gmpz_init void __GMP_DECLSPEC mpz_init _PROTO ((mpz_ptr)); #define mpz_init2 __gmpz_init2 void __GMP_DECLSPEC mpz_init2 _PROTO ((mpz_ptr, unsigned long)); #define mpz_init_set __gmpz_init_set void __GMP_DECLSPEC mpz_init_set _PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_init_set_d __gmpz_init_set_d void __GMP_DECLSPEC mpz_init_set_d _PROTO ((mpz_ptr, double)); #define mpz_init_set_si __gmpz_init_set_si void __GMP_DECLSPEC mpz_init_set_si _PROTO ((mpz_ptr, signed long int)); #define mpz_init_set_str __gmpz_init_set_str int __GMP_DECLSPEC mpz_init_set_str _PROTO ((mpz_ptr, __gmp_const char *, int)); #define mpz_init_set_ui __gmpz_init_set_ui void __GMP_DECLSPEC mpz_init_set_ui _PROTO ((mpz_ptr, unsigned long int)); #define mpz_inp_raw __gmpz_inp_raw #ifdef _GMP_H_HAVE_FILE size_t __GMP_DECLSPEC mpz_inp_raw _PROTO ((mpz_ptr, FILE *)); #endif #define mpz_inp_str __gmpz_inp_str #ifdef _GMP_H_HAVE_FILE size_t __GMP_DECLSPEC mpz_inp_str _PROTO ((mpz_ptr, FILE *, int)); #endif #define mpz_invert __gmpz_invert int __GMP_DECLSPEC mpz_invert _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_ior __gmpz_ior void __GMP_DECLSPEC mpz_ior _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_jacobi __gmpz_jacobi int __GMP_DECLSPEC mpz_jacobi _PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_kronecker mpz_jacobi /* alias */ #define mpz_kronecker_si __gmpz_kronecker_si int __GMP_DECLSPEC mpz_kronecker_si _PROTO ((mpz_srcptr, long)) __GMP_ATTRIBUTE_PURE; #define mpz_kronecker_ui __gmpz_kronecker_ui int __GMP_DECLSPEC mpz_kronecker_ui _PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE; #define mpz_si_kronecker __gmpz_si_kronecker int __GMP_DECLSPEC mpz_si_kronecker _PROTO ((long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_ui_kronecker __gmpz_ui_kronecker int __GMP_DECLSPEC mpz_ui_kronecker _PROTO ((unsigned long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_lcm __gmpz_lcm void __GMP_DECLSPEC mpz_lcm _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_lcm_ui __gmpz_lcm_ui void __GMP_DECLSPEC mpz_lcm_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); #define mpz_legendre mpz_jacobi /* alias */ #define mpz_lucnum_ui __gmpz_lucnum_ui void __GMP_DECLSPEC mpz_lucnum_ui _PROTO ((mpz_ptr, unsigned long int)); #define mpz_lucnum2_ui __gmpz_lucnum2_ui void __GMP_DECLSPEC mpz_lucnum2_ui _PROTO ((mpz_ptr, mpz_ptr, unsigned long int)); #define mpz_millerrabin __gmpz_millerrabin int __GMP_DECLSPEC mpz_millerrabin _PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; #define mpz_mod __gmpz_mod void __GMP_DECLSPEC mpz_mod _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_mul __gmpz_mul void __GMP_DECLSPEC mpz_mul _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_mul_2exp __gmpz_mul_2exp void __GMP_DECLSPEC mpz_mul_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_mul_si __gmpz_mul_si void __GMP_DECLSPEC mpz_mul_si _PROTO ((mpz_ptr, mpz_srcptr, long int)); #define mpz_mul_ui __gmpz_mul_ui void __GMP_DECLSPEC mpz_mul_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_neg __gmpz_neg #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_neg void __GMP_DECLSPEC mpz_neg _PROTO ((mpz_ptr, mpz_srcptr)); #endif #define mpz_nextprime __gmpz_nextprime void __GMP_DECLSPEC mpz_nextprime _PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_out_raw __gmpz_out_raw #ifdef _GMP_H_HAVE_FILE size_t __GMP_DECLSPEC mpz_out_raw _PROTO ((FILE *, mpz_srcptr)); #endif #define mpz_out_str __gmpz_out_str #ifdef _GMP_H_HAVE_FILE size_t __GMP_DECLSPEC mpz_out_str _PROTO ((FILE *, int, mpz_srcptr)); #endif #define mpz_perfect_power_p __gmpz_perfect_power_p int __GMP_DECLSPEC mpz_perfect_power_p _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_perfect_square_p __gmpz_perfect_square_p #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_perfect_square_p int __GMP_DECLSPEC mpz_perfect_square_p _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #endif #define mpz_popcount __gmpz_popcount #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_popcount unsigned long int __GMP_DECLSPEC mpz_popcount _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #endif #define mpz_pow_ui __gmpz_pow_ui void __GMP_DECLSPEC mpz_pow_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_powm __gmpz_powm void __GMP_DECLSPEC mpz_powm _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr)); #define mpz_powm_ui __gmpz_powm_ui void __GMP_DECLSPEC mpz_powm_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr)); #define mpz_probab_prime_p __gmpz_probab_prime_p int __GMP_DECLSPEC mpz_probab_prime_p _PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; #define mpz_random __gmpz_random void __GMP_DECLSPEC mpz_random _PROTO ((mpz_ptr, mp_size_t)); #define mpz_random2 __gmpz_random2 void __GMP_DECLSPEC mpz_random2 _PROTO ((mpz_ptr, mp_size_t)); #define mpz_realloc2 __gmpz_realloc2 void __GMP_DECLSPEC mpz_realloc2 _PROTO ((mpz_ptr, unsigned long)); #define mpz_remove __gmpz_remove unsigned long int __GMP_DECLSPEC mpz_remove _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_root __gmpz_root int __GMP_DECLSPEC mpz_root _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_rrandomb __gmpz_rrandomb void __GMP_DECLSPEC mpz_rrandomb _PROTO ((mpz_ptr, gmp_randstate_t, unsigned long int)); #define mpz_scan0 __gmpz_scan0 unsigned long int __GMP_DECLSPEC mpz_scan0 _PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_scan1 __gmpz_scan1 unsigned long int __GMP_DECLSPEC mpz_scan1 _PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_set __gmpz_set void __GMP_DECLSPEC mpz_set _PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_set_d __gmpz_set_d void __GMP_DECLSPEC mpz_set_d _PROTO ((mpz_ptr, double)); #define mpz_set_f __gmpz_set_f void __GMP_DECLSPEC mpz_set_f _PROTO ((mpz_ptr, mpf_srcptr)); #define mpz_set_q __gmpz_set_q #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_set_q void __GMP_DECLSPEC mpz_set_q _PROTO ((mpz_ptr, mpq_srcptr)); #endif #define mpz_set_si __gmpz_set_si void __GMP_DECLSPEC mpz_set_si _PROTO ((mpz_ptr, signed long int)); #define mpz_set_str __gmpz_set_str int __GMP_DECLSPEC mpz_set_str _PROTO ((mpz_ptr, __gmp_const char *, int)); #define mpz_set_ui __gmpz_set_ui void __GMP_DECLSPEC mpz_set_ui _PROTO ((mpz_ptr, unsigned long int)); #define mpz_setbit __gmpz_setbit void __GMP_DECLSPEC mpz_setbit _PROTO ((mpz_ptr, unsigned long int)); #define mpz_size __gmpz_size #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_size size_t __GMP_DECLSPEC mpz_size _PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #endif #define mpz_sizeinbase __gmpz_sizeinbase size_t __GMP_DECLSPEC mpz_sizeinbase _PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; #define mpz_sqrt __gmpz_sqrt void __GMP_DECLSPEC mpz_sqrt _PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_sqrtrem __gmpz_sqrtrem void __GMP_DECLSPEC mpz_sqrtrem _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr)); #define mpz_sub __gmpz_sub void __GMP_DECLSPEC mpz_sub _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_sub_ui __gmpz_sub_ui void __GMP_DECLSPEC mpz_sub_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_submul __gmpz_submul void __GMP_DECLSPEC mpz_submul _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_submul_ui __gmpz_submul_ui void __GMP_DECLSPEC mpz_submul_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_swap __gmpz_swap void __GMP_DECLSPEC mpz_swap _PROTO ((mpz_ptr, mpz_ptr)); #define mpz_tdiv_ui __gmpz_tdiv_ui unsigned long int __GMP_DECLSPEC mpz_tdiv_ui _PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_tdiv_q __gmpz_tdiv_q void __GMP_DECLSPEC mpz_tdiv_q _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp void __GMP_DECLSPEC mpz_tdiv_q_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tdiv_q_ui __gmpz_tdiv_q_ui unsigned long int __GMP_DECLSPEC mpz_tdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tdiv_qr __gmpz_tdiv_qr void __GMP_DECLSPEC mpz_tdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui unsigned long int __GMP_DECLSPEC mpz_tdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tdiv_r __gmpz_tdiv_r void __GMP_DECLSPEC mpz_tdiv_r _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp void __GMP_DECLSPEC mpz_tdiv_r_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tdiv_r_ui __gmpz_tdiv_r_ui unsigned long int __GMP_DECLSPEC mpz_tdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tstbit __gmpz_tstbit int __GMP_DECLSPEC mpz_tstbit _PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_ui_pow_ui __gmpz_ui_pow_ui void __GMP_DECLSPEC mpz_ui_pow_ui _PROTO ((mpz_ptr, unsigned long int, unsigned long int)); #define mpz_urandomb __gmpz_urandomb void __GMP_DECLSPEC mpz_urandomb _PROTO ((mpz_ptr, gmp_randstate_t, unsigned long int)); #define mpz_urandomm __gmpz_urandomm void __GMP_DECLSPEC mpz_urandomm _PROTO ((mpz_ptr, gmp_randstate_t, mpz_srcptr)); #define mpz_xor __gmpz_xor #define mpz_eor __gmpz_xor void __GMP_DECLSPEC mpz_xor _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); /**************** Rational (i.e. Q) routines. ****************/ #define mpq_abs __gmpq_abs #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpq_abs void __GMP_DECLSPEC mpq_abs _PROTO ((mpq_ptr, mpq_srcptr)); #endif #define mpq_add __gmpq_add void __GMP_DECLSPEC mpq_add _PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); #define mpq_canonicalize __gmpq_canonicalize void __GMP_DECLSPEC mpq_canonicalize _PROTO ((mpq_ptr)); #define mpq_clear __gmpq_clear void __GMP_DECLSPEC mpq_clear _PROTO ((mpq_ptr)); #define mpq_cmp __gmpq_cmp int __GMP_DECLSPEC mpq_cmp _PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_ATTRIBUTE_PURE; #define _mpq_cmp_si __gmpq_cmp_si int __GMP_DECLSPEC _mpq_cmp_si _PROTO ((mpq_srcptr, long, unsigned long)) __GMP_ATTRIBUTE_PURE; #define _mpq_cmp_ui __gmpq_cmp_ui int __GMP_DECLSPEC _mpq_cmp_ui _PROTO ((mpq_srcptr, unsigned long int, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpq_div __gmpq_div void __GMP_DECLSPEC mpq_div _PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); #define mpq_div_2exp __gmpq_div_2exp void __GMP_DECLSPEC mpq_div_2exp _PROTO ((mpq_ptr, mpq_srcptr, unsigned long)); #define mpq_equal __gmpq_equal int __GMP_DECLSPEC mpq_equal _PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpq_get_num __gmpq_get_num void __GMP_DECLSPEC mpq_get_num _PROTO ((mpz_ptr, mpq_srcptr)); #define mpq_get_den __gmpq_get_den void __GMP_DECLSPEC mpq_get_den _PROTO ((mpz_ptr, mpq_srcptr)); #define mpq_get_d __gmpq_get_d double __GMP_DECLSPEC mpq_get_d _PROTO ((mpq_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpq_get_str __gmpq_get_str __GMP_DECLSPEC char * mpq_get_str _PROTO ((char *, int, mpq_srcptr)); #define mpq_init __gmpq_init void __GMP_DECLSPEC mpq_init _PROTO ((mpq_ptr)); #define mpq_inp_str __gmpq_inp_str #ifdef _GMP_H_HAVE_FILE size_t mpq_inp_str _PROTO ((mpq_ptr, FILE *, int)); #endif #define mpq_inv __gmpq_inv void __GMP_DECLSPEC mpq_inv _PROTO ((mpq_ptr, mpq_srcptr)); #define mpq_mul __gmpq_mul void __GMP_DECLSPEC mpq_mul _PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); #define mpq_mul_2exp __gmpq_mul_2exp void __GMP_DECLSPEC mpq_mul_2exp _PROTO ((mpq_ptr, mpq_srcptr, unsigned long)); #define mpq_neg __gmpq_neg #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpq_neg void __GMP_DECLSPEC mpq_neg _PROTO ((mpq_ptr, mpq_srcptr)); #endif #define mpq_out_str __gmpq_out_str #ifdef _GMP_H_HAVE_FILE size_t __GMP_DECLSPEC mpq_out_str _PROTO ((FILE *, int, mpq_srcptr)); #endif #define mpq_set __gmpq_set void __GMP_DECLSPEC mpq_set _PROTO ((mpq_ptr, mpq_srcptr)); #define mpq_set_d __gmpq_set_d void __GMP_DECLSPEC mpq_set_d _PROTO ((mpq_ptr, double)); #define mpq_set_den __gmpq_set_den void __GMP_DECLSPEC mpq_set_den _PROTO ((mpq_ptr, mpz_srcptr)); #define mpq_set_f __gmpq_set_f void __GMP_DECLSPEC mpq_set_f _PROTO ((mpq_ptr, mpf_srcptr)); #define mpq_set_num __gmpq_set_num void __GMP_DECLSPEC mpq_set_num _PROTO ((mpq_ptr, mpz_srcptr)); #define mpq_set_si __gmpq_set_si void __GMP_DECLSPEC mpq_set_si _PROTO ((mpq_ptr, signed long int, unsigned long int)); #define mpq_set_str __gmpq_set_str int __GMP_DECLSPEC mpq_set_str _PROTO ((mpq_ptr, const char *, int)); #define mpq_set_ui __gmpq_set_ui void __GMP_DECLSPEC mpq_set_ui _PROTO ((mpq_ptr, unsigned long int, unsigned long int)); #define mpq_set_z __gmpq_set_z void __GMP_DECLSPEC mpq_set_z _PROTO ((mpq_ptr, mpz_srcptr)); #define mpq_sub __gmpq_sub void __GMP_DECLSPEC mpq_sub _PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); #define mpq_swap __gmpq_swap void __GMP_DECLSPEC mpq_swap _PROTO ((mpq_ptr, mpq_ptr)); /**************** Float (i.e. F) routines. ****************/ #define mpf_abs __gmpf_abs void __GMP_DECLSPEC mpf_abs _PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_add __gmpf_add void __GMP_DECLSPEC mpf_add _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_add_ui __gmpf_add_ui void __GMP_DECLSPEC mpf_add_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_ceil __gmpf_ceil void __GMP_DECLSPEC mpf_ceil _PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_clear __gmpf_clear void __GMP_DECLSPEC mpf_clear _PROTO ((mpf_ptr)); #define mpf_cmp __gmpf_cmp int __GMP_DECLSPEC mpf_cmp _PROTO ((mpf_srcptr, mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_cmp_d __gmpf_cmp_d int __GMP_DECLSPEC mpf_cmp_d _PROTO ((mpf_srcptr, double)) __GMP_ATTRIBUTE_PURE; #define mpf_cmp_si __gmpf_cmp_si int __GMP_DECLSPEC mpf_cmp_si _PROTO ((mpf_srcptr, signed long int)) __GMP_ATTRIBUTE_PURE; #define mpf_cmp_ui __gmpf_cmp_ui int __GMP_DECLSPEC mpf_cmp_ui _PROTO ((mpf_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpf_div __gmpf_div void __GMP_DECLSPEC mpf_div _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_div_2exp __gmpf_div_2exp void __GMP_DECLSPEC mpf_div_2exp _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_div_ui __gmpf_div_ui void __GMP_DECLSPEC mpf_div_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_dump __gmpf_dump void __GMP_DECLSPEC mpf_dump _PROTO ((mpf_srcptr)); #define mpf_eq __gmpf_eq int __GMP_DECLSPEC mpf_eq _PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpf_fits_sint_p __gmpf_fits_sint_p int __GMP_DECLSPEC mpf_fits_sint_p _PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_fits_slong_p __gmpf_fits_slong_p int __GMP_DECLSPEC mpf_fits_slong_p _PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_fits_sshort_p __gmpf_fits_sshort_p int __GMP_DECLSPEC mpf_fits_sshort_p _PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_fits_uint_p __gmpf_fits_uint_p int __GMP_DECLSPEC mpf_fits_uint_p _PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_fits_ulong_p __gmpf_fits_ulong_p int __GMP_DECLSPEC mpf_fits_ulong_p _PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_fits_ushort_p __gmpf_fits_ushort_p int __GMP_DECLSPEC mpf_fits_ushort_p _PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_floor __gmpf_floor void __GMP_DECLSPEC mpf_floor _PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_get_d __gmpf_get_d double __GMP_DECLSPEC mpf_get_d _PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_get_d_2exp __gmpf_get_d_2exp double __GMP_DECLSPEC mpf_get_d_2exp _PROTO ((signed long int *, mpf_srcptr)); #define mpf_get_default_prec __gmpf_get_default_prec unsigned long int __GMP_DECLSPEC mpf_get_default_prec _PROTO ((void)) __GMP_ATTRIBUTE_PURE; #define mpf_get_prec __gmpf_get_prec unsigned long int __GMP_DECLSPEC mpf_get_prec _PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_get_si __gmpf_get_si long __GMP_DECLSPEC mpf_get_si _PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_get_str __gmpf_get_str __GMP_DECLSPEC char * mpf_get_str _PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr)); #define mpf_get_ui __gmpf_get_ui unsigned long __GMP_DECLSPEC mpf_get_ui _PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_init __gmpf_init void __GMP_DECLSPEC mpf_init _PROTO ((mpf_ptr)); #define mpf_init2 __gmpf_init2 void __GMP_DECLSPEC mpf_init2 _PROTO ((mpf_ptr, unsigned long int)); #define mpf_init_set __gmpf_init_set void __GMP_DECLSPEC mpf_init_set _PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_init_set_d __gmpf_init_set_d void __GMP_DECLSPEC mpf_init_set_d _PROTO ((mpf_ptr, double)); #define mpf_init_set_si __gmpf_init_set_si void __GMP_DECLSPEC mpf_init_set_si _PROTO ((mpf_ptr, signed long int)); #define mpf_init_set_str __gmpf_init_set_str int __GMP_DECLSPEC mpf_init_set_str _PROTO ((mpf_ptr, __gmp_const char *, int)); #define mpf_init_set_ui __gmpf_init_set_ui void __GMP_DECLSPEC mpf_init_set_ui _PROTO ((mpf_ptr, unsigned long int)); #define mpf_inp_str __gmpf_inp_str #ifdef _GMP_H_HAVE_FILE size_t __GMP_DECLSPEC mpf_inp_str _PROTO ((mpf_ptr, FILE *, int)); #endif #define mpf_integer_p __gmpf_integer_p int __GMP_DECLSPEC mpf_integer_p _PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_mul __gmpf_mul void __GMP_DECLSPEC mpf_mul _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_mul_2exp __gmpf_mul_2exp void __GMP_DECLSPEC mpf_mul_2exp _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_mul_ui __gmpf_mul_ui void __GMP_DECLSPEC mpf_mul_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_neg __gmpf_neg void __GMP_DECLSPEC mpf_neg _PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_out_str __gmpf_out_str #ifdef _GMP_H_HAVE_FILE size_t __GMP_DECLSPEC mpf_out_str _PROTO ((FILE *, int, size_t, mpf_srcptr)); #endif #define mpf_pow_ui __gmpf_pow_ui void __GMP_DECLSPEC mpf_pow_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_random2 __gmpf_random2 void __GMP_DECLSPEC mpf_random2 _PROTO ((mpf_ptr, mp_size_t, mp_exp_t)); #define mpf_reldiff __gmpf_reldiff void __GMP_DECLSPEC mpf_reldiff _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_set __gmpf_set void __GMP_DECLSPEC mpf_set _PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_set_d __gmpf_set_d void __GMP_DECLSPEC mpf_set_d _PROTO ((mpf_ptr, double)); #define mpf_set_default_prec __gmpf_set_default_prec void __GMP_DECLSPEC mpf_set_default_prec _PROTO ((unsigned long int)); #define mpf_set_prec __gmpf_set_prec void __GMP_DECLSPEC mpf_set_prec _PROTO ((mpf_ptr, unsigned long int)); #define mpf_set_prec_raw __gmpf_set_prec_raw void __GMP_DECLSPEC mpf_set_prec_raw _PROTO ((mpf_ptr, unsigned long int)); #define mpf_set_q __gmpf_set_q void __GMP_DECLSPEC mpf_set_q _PROTO ((mpf_ptr, mpq_srcptr)); #define mpf_set_si __gmpf_set_si void __GMP_DECLSPEC mpf_set_si _PROTO ((mpf_ptr, signed long int)); #define mpf_set_str __gmpf_set_str int __GMP_DECLSPEC mpf_set_str _PROTO ((mpf_ptr, __gmp_const char *, int)); #define mpf_set_ui __gmpf_set_ui void __GMP_DECLSPEC mpf_set_ui _PROTO ((mpf_ptr, unsigned long int)); #define mpf_set_z __gmpf_set_z void __GMP_DECLSPEC mpf_set_z _PROTO ((mpf_ptr, mpz_srcptr)); #define mpf_size __gmpf_size size_t __GMP_DECLSPEC mpf_size _PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_sqrt __gmpf_sqrt void __GMP_DECLSPEC mpf_sqrt _PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_sqrt_ui __gmpf_sqrt_ui void __GMP_DECLSPEC mpf_sqrt_ui _PROTO ((mpf_ptr, unsigned long int)); #define mpf_sub __gmpf_sub void __GMP_DECLSPEC mpf_sub _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_sub_ui __gmpf_sub_ui void __GMP_DECLSPEC mpf_sub_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_swap __gmpf_swap void __GMP_DECLSPEC mpf_swap _PROTO ((mpf_ptr, mpf_ptr)); #define mpf_trunc __gmpf_trunc void __GMP_DECLSPEC mpf_trunc _PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_ui_div __gmpf_ui_div void __GMP_DECLSPEC mpf_ui_div _PROTO ((mpf_ptr, unsigned long int, mpf_srcptr)); #define mpf_ui_sub __gmpf_ui_sub void __GMP_DECLSPEC mpf_ui_sub _PROTO ((mpf_ptr, unsigned long int, mpf_srcptr)); #define mpf_urandomb __gmpf_urandomb void __GMP_DECLSPEC mpf_urandomb _PROTO ((mpf_t, gmp_randstate_t, unsigned long int)); /************ Low level positive-integer (i.e. N) routines. ************/ /* This is ugly, but we need to make user calls reach the prefixed function. */ #define mpn_add __MPN(add) mp_limb_t __GMP_DECLSPEC mpn_add _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); #define mpn_add_1 __MPN(add_1) mp_limb_t __GMP_DECLSPEC mpn_add_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_add_n __MPN(add_n) mp_limb_t __GMP_DECLSPEC mpn_add_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #define mpn_add_nc __MPN(add_nc) mp_limb_t __GMP_DECLSPEC mpn_add_nc _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_addmul_1 __MPN(addmul_1) mp_limb_t __GMP_DECLSPEC mpn_addmul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_addmul_1c __MPN(addmul_1c) mp_limb_t __GMP_DECLSPEC mpn_addmul_1c _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)); #define mpn_addsub_n __MPN(addsub_n) mp_limb_t __GMP_DECLSPEC mpn_addsub_n _PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #define mpn_addsub_nc __MPN(addsub_nc) mp_limb_t __GMP_DECLSPEC mpn_addsub_nc _PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_bdivmod __MPN(bdivmod) mp_limb_t __GMP_DECLSPEC mpn_bdivmod _PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, unsigned long int)); #define mpn_cmp __MPN(cmp) int __GMP_DECLSPEC mpn_cmp _PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE; #define mpn_divexact_by3(dst,src,size) \ mpn_divexact_by3c (dst, src, size, (mp_limb_t) 0) #define mpn_divexact_by3c __MPN(divexact_by3c) mp_limb_t __GMP_DECLSPEC mpn_divexact_by3c _PROTO ((mp_ptr dst, mp_srcptr src, mp_size_t size, mp_limb_t carry)); #define mpn_divmod_1(qp,np,nsize,dlimb) \ mpn_divrem_1 (qp, (mp_size_t) 0, np, nsize, dlimb) #define mpn_divrem __MPN(divrem) mp_limb_t __GMP_DECLSPEC mpn_divrem _PROTO((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t)); #define mpn_divrem_1 __MPN(divrem_1) mp_limb_t __GMP_DECLSPEC mpn_divrem_1 _PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_divrem_1c __MPN(divrem_1c) mp_limb_t __GMP_DECLSPEC mpn_divrem_1c _PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)); #define mpn_divrem_2 __MPN(divrem_2) mp_limb_t __GMP_DECLSPEC mpn_divrem_2 _PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr)); #define mpn_dump __MPN(dump) void __GMP_DECLSPEC mpn_dump _PROTO ((mp_srcptr, mp_size_t)); #define mpn_gcd __MPN(gcd) mp_size_t __GMP_DECLSPEC mpn_gcd _PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); #define mpn_gcd_1 __MPN(gcd_1) mp_limb_t __GMP_DECLSPEC mpn_gcd_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; #define mpn_gcdext __MPN(gcdext) mp_size_t __GMP_DECLSPEC mpn_gcdext _PROTO ((mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); #define mpn_get_str __MPN(get_str) size_t __GMP_DECLSPEC mpn_get_str _PROTO ((unsigned char *, int, mp_ptr, mp_size_t)); #define mpn_hamdist __MPN(hamdist) unsigned long int mpn_hamdist _PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE; #define mpn_lshift __MPN(lshift) mp_limb_t __GMP_DECLSPEC mpn_lshift _PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); #define mpn_mod_1 __MPN(mod_1) mp_limb_t __GMP_DECLSPEC mpn_mod_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; #define mpn_mod_1c __MPN(mod_1c) mp_limb_t __GMP_DECLSPEC mpn_mod_1c _PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; #define mpn_mul __MPN(mul) mp_limb_t __GMP_DECLSPEC mpn_mul _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); #define mpn_mul_1 __MPN(mul_1) mp_limb_t __GMP_DECLSPEC mpn_mul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_mul_1c __MPN(mul_1c) mp_limb_t __GMP_DECLSPEC mpn_mul_1c _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)); #define mpn_mul_basecase __MPN(mul_basecase) void __GMP_DECLSPEC mpn_mul_basecase _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); #define mpn_mul_n __MPN(mul_n) void __GMP_DECLSPEC mpn_mul_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #define mpn_perfect_square_p __MPN(perfect_square_p) int __GMP_DECLSPEC mpn_perfect_square_p _PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE; #define mpn_popcount __MPN(popcount) unsigned long int __GMP_DECLSPEC mpn_popcount _PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE; /* undocumented, but retained here for upward compatibility */ #define mpn_preinv_mod_1 __MPN(preinv_mod_1) mp_limb_t __GMP_DECLSPEC mpn_preinv_mod_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; #define mpn_random __MPN(random) void __GMP_DECLSPEC mpn_random _PROTO ((mp_ptr, mp_size_t)); #define mpn_random2 __MPN(random2) void __GMP_DECLSPEC mpn_random2 _PROTO ((mp_ptr, mp_size_t)); #define mpn_rshift __MPN(rshift) mp_limb_t __GMP_DECLSPEC mpn_rshift _PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); #define mpn_scan0 __MPN(scan0) unsigned long int __GMP_DECLSPEC mpn_scan0 _PROTO ((mp_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpn_scan1 __MPN(scan1) unsigned long int __GMP_DECLSPEC mpn_scan1 _PROTO ((mp_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpn_set_str __MPN(set_str) mp_size_t __GMP_DECLSPEC mpn_set_str _PROTO ((mp_ptr, __gmp_const unsigned char *, size_t, int)); #define mpn_sqr_n __MPN(sqr_n) void __GMP_DECLSPEC mpn_sqr_n _PROTO ((mp_ptr, mp_srcptr, mp_size_t)); #define mpn_sqr_basecase __MPN(sqr_basecase) void __GMP_DECLSPEC mpn_sqr_basecase _PROTO ((mp_ptr, mp_srcptr, mp_size_t)); #define mpn_sqrtrem __MPN(sqrtrem) mp_size_t __GMP_DECLSPEC mpn_sqrtrem _PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t)); #define mpn_sub __MPN(sub) mp_limb_t __GMP_DECLSPEC mpn_sub _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); #define mpn_sub_1 __MPN(sub_1) mp_limb_t __GMP_DECLSPEC mpn_sub_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_sub_n __MPN(sub_n) mp_limb_t __GMP_DECLSPEC mpn_sub_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #define mpn_sub_nc __MPN(sub_nc) mp_limb_t __GMP_DECLSPEC mpn_sub_nc _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_submul_1 __MPN(submul_1) mp_limb_t __GMP_DECLSPEC mpn_submul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_submul_1c __MPN(submul_1c) mp_limb_t __GMP_DECLSPEC mpn_submul_1c _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)); #define mpn_tdiv_qr __MPN(tdiv_qr) void __GMP_DECLSPEC mpn_tdiv_qr _PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); /**************** mpz inlines ****************/ /* The following are provided as inlines where possible, but always exist as library functions too, for binary compatibility. Within gmp itself this inlining generally isn't relied on, since it doesn't get done for all compilers, whereas if something is worth inlining then it's worth arranging always. There are two styles of inlining here. When the same bit of code is wanted for the inline as for the library version, then __GMP_FORCE_foo arranges for that code to be emitted and the __GMP_EXTERN_INLINE directive suppressed, eg. mpz_fits_uint_p. When a different bit of code is wanted for the inline than for the library version, then __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */ #if defined (__GMP_EXTERN_INLINE) && ! __GMP_FORCE_mpz_abs __GMP_EXTERN_INLINE void mpz_abs (mpz_ptr w, mpz_srcptr u) { if (w != u) mpz_set (w, u); w->_mp_size = __GMP_ABS (w->_mp_size); } #endif #define __GMPZ_FITS_UTYPE_P(z,maxval) \ mp_size_t size = z->_mp_size; \ mp_limb_t data = z->_mp_d[0]; \ return (size == 0 || (size == 1 && data <= maxval)); #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_fits_uint_p #if ! __GMP_FORCE_mpz_fits_uint_p __GMP_EXTERN_INLINE #endif int mpz_fits_uint_p (mpz_srcptr z) { __GMPZ_FITS_UTYPE_P (z, __GMP_UINT_MAX); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_fits_ulong_p #if ! __GMP_FORCE_mpz_fits_ulong_p __GMP_EXTERN_INLINE #endif int mpz_fits_ulong_p (mpz_srcptr z) { __GMPZ_FITS_UTYPE_P (z, __GMP_ULONG_MAX); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_fits_ushort_p #if ! __GMP_FORCE_mpz_fits_ushort_p __GMP_EXTERN_INLINE #endif int mpz_fits_ushort_p (mpz_srcptr z) { __GMPZ_FITS_UTYPE_P (z, __GMP_USHRT_MAX); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_get_ui #if ! __GMP_FORCE_mpz_get_ui __GMP_EXTERN_INLINE #endif unsigned long mpz_get_ui (mpz_srcptr z) { mp_limb_t l = z->_mp_d[0]; return z->_mp_size ? l : 0; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_getlimbn #if ! __GMP_FORCE_mpz_getlimbn __GMP_EXTERN_INLINE #endif mp_limb_t mpz_getlimbn (mpz_srcptr z, mp_size_t n) { if (__GMP_ABS (z->_mp_size) <= n || n < 0) return 0; else return z->_mp_d[n]; } #endif #if defined (__GMP_EXTERN_INLINE) && ! __GMP_FORCE_mpz_neg __GMP_EXTERN_INLINE void mpz_neg (mpz_ptr w, mpz_srcptr u) { if (w != u) mpz_set (w, u); w->_mp_size = - w->_mp_size; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_perfect_square_p #if ! __GMP_FORCE_mpz_perfect_square_p __GMP_EXTERN_INLINE #endif int mpz_perfect_square_p (mpz_srcptr a) { mp_size_t asize = a->_mp_size; if (asize <= 0) return (asize == 0); /* zero is a square, negatives are not */ else return mpn_perfect_square_p (a->_mp_d, asize); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_popcount #if ! __GMP_FORCE_mpz_popcount __GMP_EXTERN_INLINE #endif unsigned long mpz_popcount (mpz_srcptr u) { mp_size_t usize = u->_mp_size; if (usize <= 0) return (usize < 0 ? __GMP_ULONG_MAX : 0); else return mpn_popcount (u->_mp_d, usize); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_set_q #if ! __GMP_FORCE_mpz_set_q __GMP_EXTERN_INLINE #endif void mpz_set_q (mpz_ptr w, mpq_srcptr u) { mpz_tdiv_q (w, mpq_numref (u), mpq_denref (u)); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_size #if ! __GMP_FORCE_mpz_size __GMP_EXTERN_INLINE #endif size_t mpz_size (mpz_srcptr z) { return __GMP_ABS (z->_mp_size); } #endif /**************** mpq inlines ****************/ #if defined (__GMP_EXTERN_INLINE) && ! __GMP_FORCE_mpq_abs __GMP_EXTERN_INLINE void mpq_abs (mpq_ptr w, mpq_srcptr u) { if (w != u) mpq_set (w, u); w->_mp_num._mp_size = __GMP_ABS (w->_mp_num._mp_size); } #endif #if defined (__GMP_EXTERN_INLINE) && ! __GMP_FORCE_mpq_neg __GMP_EXTERN_INLINE void mpq_neg (mpq_ptr w, mpq_srcptr u) { if (w != u) mpq_set (w, u); w->_mp_num._mp_size = - w->_mp_num._mp_size; } #endif /**************** mpn inlines ****************/ /* The comments with __GMPN_ADD_1 below apply here too. The test for FUNCTION returning 0 should predict well. If it's assumed {yp,ysize} will usually have a random number of bits then the high limb won't be full and a carry out will occur a good deal less than 50% of the time. ysize==0 isn't a documented feature, but is used internally in a few places. Producing cout last stops it using up a register during the main part of the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))" doesn't seem able to move the true and false legs of the conditional up to the two places cout is generated. */ #define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \ do { \ mp_size_t __i; \ mp_limb_t __x; \ \ /* ASSERT ((ysize) >= 0); */ \ /* ASSERT ((xsize) >= (ysize)); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \ \ __i = (ysize); \ if (__i != 0) \ { \ if (FUNCTION (wp, xp, yp, __i)) \ { \ do \ { \ if (__i >= (xsize)) \ { \ (cout) = 1; \ goto __done; \ } \ __x = (xp)[__i]; \ } \ while (TEST); \ } \ } \ if ((wp) != (xp)) \ __GMPN_COPY_REST (wp, xp, xsize, __i); \ (cout) = 0; \ __done: \ ; \ } while (0) #define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \ __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \ (((wp)[__i++] = __x + 1) == 0)) #define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \ __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \ (((wp)[__i++] = __x - 1), __x == 0)) /* The use of __i indexing is designed to ensure a compile time src==dst remains nice and clear to the compiler, so that __GMPN_COPY_REST can disappear, and the load/add/store gets a chance to become a read-modify-write on CISC CPUs. Alternatives: Using a pair of pointers instead of indexing would be possible, but gcc isn't able to recognise compile-time src==dst in that case, even when the pointers are incremented more or less together. Other compilers would very likely have similar difficulty. gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or similar to detect a compile-time src==dst. This works nicely on gcc 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems to be always false, for a pointer p. But the current code form seems good enough for src==dst anyway. gcc on x86 as usual doesn't give particularly good flags handling for the carry/borrow detection. It's tempting to want some multi instruction asm blocks to help it, and this was tried, but in truth there's only a few instructions to save and any gain is all too easily lost by register juggling setting up for the asm. */ #define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ do { \ mp_size_t __i; \ mp_limb_t __x, __r; \ \ /* ASSERT ((n) >= 1); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ \ __x = (src)[0]; \ __r = __x OP (v); \ (dst)[0] = __r; \ if (CB (__r, __x, (v))) \ { \ (cout) = 1; \ for (__i = 1; __i < (n);) \ { \ __x = (src)[__i]; \ __r = __x OP 1; \ (dst)[__i] = __r; \ ++__i; \ if (!CB (__r, __x, 1)) \ { \ if ((src) != (dst)) \ __GMPN_COPY_REST (dst, src, n, __i); \ (cout) = 0; \ break; \ } \ } \ } \ else \ { \ if ((src) != (dst)) \ __GMPN_COPY_REST (dst, src, n, 1); \ (cout) = 0; \ } \ } while (0) #define __GMPN_ADDCB(r,x,y) ((r) < (y)) #define __GMPN_SUBCB(r,x,y) ((x) < (y)) #define __GMPN_ADD_1(cout, dst, src, n, v) \ __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB) #define __GMPN_SUB_1(cout, dst, src, n, v) \ __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB) /* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or negative. size==0 is allowed. On random data usually only one limb will need to be examined to get a result, so it's worth having it inline. */ #define __GMPN_CMP(result, xp, yp, size) \ do { \ mp_size_t __i; \ mp_limb_t __x, __y; \ \ /* ASSERT ((size) >= 0); */ \ \ (result) = 0; \ __i = (size); \ while (--__i >= 0) \ { \ __x = (xp)[__i]; \ __y = (yp)[__i]; \ if (__x != __y) \ { \ /* Cannot use __x - __y, may overflow an "int" */ \ (result) = (__x > __y ? 1 : -1); \ break; \ } \ } \ } while (0) /* For power and powerpc we want an inline ldu/stu/bdnz loop for copying. On ppc630 for instance this is optimal since it can sustain only 1 store per cycle. gcc 2.95.x (powerpc64 -maix64, or powerpc32) doesn't recognise the "for" loop in the generic code below can become ldu/stu/bdnz. The do/while here helps it get to that. In gcc -mpowerpc64 mode, without -maix64, __size seems to want to be an mp_limb_t to get into the ctr register, and even then the loop is a curious ldu/stu/bdz/b. But let's not worry about that unless there's a system using this. An asm block could force what we want if necessary. xlc 3.1 already generates ldu/stu/bdnz from the generic C, and does so from this loop too. */ #if __GMP_HAVE_HOST_CPU_FAMILY_power || __GMP_HAVE_HOST_CPU_FAMILY_powerpc #define __GMPN_COPY_INCR(dst, src, size) \ do { \ /* ASSERT ((size) >= 0); */ \ /* ASSERT (MPN_SAME_OR_INCR_P (dst, src, size)); */ \ if ((size) != 0) \ { \ mp_ptr __dst = (dst) - 1; \ mp_srcptr __src = (src) - 1; \ mp_size_t __size = (size); \ do \ *++__dst = *++__src; \ while (--__size != 0); \ } \ } while (0) #define __GMPN_COPY(dst, src, size) \ do { \ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \ __GMPN_COPY_INCR (dst, src, size); \ } while (0) #endif #if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST) #define __GMPN_COPY_REST(dst, src, size, start) \ do { \ /* ASSERT ((start) >= 0); */ \ /* ASSERT ((start) <= (size)); */ \ __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \ } while (0) #endif /* Copy {src,size} to {dst,size}, starting at "start". This is designed to keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1, __GMPN_ADD, etc. */ #if ! defined (__GMPN_COPY_REST) #define __GMPN_COPY_REST(dst, src, size, start) \ do { \ mp_size_t __j; \ /* ASSERT ((size) >= 0); */ \ /* ASSERT ((start) >= 0); */ \ /* ASSERT ((start) <= (size)); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \ for (__j = (start); __j < (size); __j++) \ (dst)[__j] = (src)[__j]; \ } while (0) #endif /* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use mpn_copyi if there's a native version, and if we don't mind demanding binary compatibility for it (on targets which use it). */ #if ! defined (__GMPN_COPY) #define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0) #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_add #if ! __GMP_FORCE_mpn_add __GMP_EXTERN_INLINE #endif mp_limb_t mpn_add (mp_ptr wp, mp_srcptr xp, mp_size_t xsize, mp_srcptr yp, mp_size_t ysize) { mp_limb_t c; __GMPN_ADD (c, wp, xp, xsize, yp, ysize); return c; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_add_1 #if ! __GMP_FORCE_mpn_add_1 __GMP_EXTERN_INLINE #endif mp_limb_t mpn_add_1 (mp_ptr dst, mp_srcptr src, mp_size_t size, mp_limb_t n) { mp_limb_t c; __GMPN_ADD_1 (c, dst, src, size, n); return c; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_cmp #if ! __GMP_FORCE_mpn_cmp __GMP_EXTERN_INLINE #endif int mpn_cmp (mp_srcptr xp, mp_srcptr yp, mp_size_t size) { int result; __GMPN_CMP (result, xp, yp, size); return result; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_sub #if ! __GMP_FORCE_mpn_sub __GMP_EXTERN_INLINE #endif mp_limb_t mpn_sub (mp_ptr wp, mp_srcptr xp, mp_size_t xsize, mp_srcptr yp, mp_size_t ysize) { mp_limb_t c; __GMPN_SUB (c, wp, xp, xsize, yp, ysize); return c; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_sub_1 #if ! __GMP_FORCE_mpn_sub_1 __GMP_EXTERN_INLINE #endif mp_limb_t mpn_sub_1 (mp_ptr dst, mp_srcptr src, mp_size_t size, mp_limb_t n) { mp_limb_t c; __GMPN_SUB_1 (c, dst, src, size, n); return c; } #endif #if defined (__cplusplus) } #endif /* Allow faster testing for negative, zero, and positive. */ #define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0) #define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0) #define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0) /* When using GCC, optimize certain common comparisons. */ #if defined (__GNUC__) #define mpz_cmp_ui(Z,UI) \ (__builtin_constant_p (UI) && (UI) == 0 \ ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI)) #define mpz_cmp_si(Z,SI) \ (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z) \ : __builtin_constant_p (SI) && (SI) > 0 \ ? _mpz_cmp_ui (Z, (unsigned long int) SI) \ : _mpz_cmp_si (Z,SI)) #define mpq_cmp_ui(Q,NUI,DUI) \ (__builtin_constant_p (NUI) && (NUI) == 0 \ ? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI)) #define mpq_cmp_si(q,n,d) \ (__builtin_constant_p ((n) >= 0) && (n) >= 0 \ ? mpq_cmp_ui (q, (unsigned long) (n), d) \ : _mpq_cmp_si (q, n, d)) #else #define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI) #define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI) #define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI) #define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d) #endif /* Using "&" rather than "&&" means these can come out branch-free. Every mpz_t has at least one limb allocated, so fetching the low limb is always allowed. */ #define mpz_odd_p(z) ((int) ((z)->_mp_size != 0) & (int) (z)->_mp_d[0]) #define mpz_even_p(z) (! mpz_odd_p (z)) /**************** C++ routines ****************/ #ifdef __cplusplus #include __GMP_DECLSPEC std::ostream& operator<< (std::ostream &o, mpz_srcptr z); __GMP_DECLSPEC std::ostream& operator<< (std::ostream &o, mpq_srcptr q); __GMP_DECLSPEC std::ostream& operator<< (std::ostream &o, mpf_srcptr f); __GMP_DECLSPEC std::istream& operator>> (std::istream &i, mpz_ptr z); __GMP_DECLSPEC std::istream& operator>> (std::istream &i, mpq_ptr q); __GMP_DECLSPEC std::istream& operator>> (std::istream &i, mpf_ptr f); #endif /* Compatibility with GMP 2 and earlier. */ #define mpn_divmod(qp,np,nsize,dp,dsize) \ mpn_divrem (qp, (mp_size_t) 0, np, nsize, dp, dsize) /* Compatibility with GMP 1. */ #define mpz_mdiv mpz_fdiv_q #define mpz_mdivmod mpz_fdiv_qr #define mpz_mmod mpz_fdiv_r #define mpz_mdiv_ui mpz_fdiv_q_ui #define mpz_mdivmod_ui(q,r,n,d) \ ((r == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d)) #define mpz_mmod_ui(r,n,d) \ ((r == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d)) /* Useful synonyms, but not quite compatible with GMP 1. */ #define mpz_div mpz_fdiv_q #define mpz_divmod mpz_fdiv_qr #define mpz_div_ui mpz_fdiv_q_ui #define mpz_divmod_ui mpz_fdiv_qr_ui #define mpz_mod_ui mpz_fdiv_r_ui #define mpz_div_2exp mpz_fdiv_q_2exp #define mpz_mod_2exp mpz_fdiv_r_2exp #define gmp_errno __gmp_errno extern int __GMP_DECLSPEC gmp_errno; enum { GMP_ERROR_NONE = 0, GMP_ERROR_UNSUPPORTED_ARGUMENT = 1, GMP_ERROR_DIVISION_BY_ZERO = 2, GMP_ERROR_SQRT_OF_NEGATIVE = 4, GMP_ERROR_INVALID_ARGUMENT = 8, GMP_ERROR_ALLOCATE = 16, GMP_ERROR_BAD_STRING = 32, GMP_ERROR_UNUSED_ERROR }; /* Major version number is the value of __GNU_MP__ too, above and in mp.h. */ #define __GNU_MP_VERSION 4 #define __GNU_MP_VERSION_MINOR 0 #define __GNU_MP_VERSION_PATCHLEVEL 0 #define gmp_version __gmp_version __GMP_DECLSPEC extern __gmp_const char * __gmp_const gmp_version; #define __GMP_H__ #endif /* __GMP_H__ */ core++-1.7/win32/patches/gmp-4.0.1/gmp.mak0100644000175000001440000103403610017704502017063 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on gmp.dsp !IF "$(CFG)" == "" CFG=gmp - Win32 Debug !MESSAGE No configuration specified. Defaulting to gmp - Win32 Debug. !ENDIF !IF "$(CFG)" != "gmp - Win32 Release" && "$(CFG)" != "gmp - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gmp.mak" CFG="gmp - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gmp - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "gmp - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF !IF "$(CFG)" == "gmp - Win32 Release" OUTDIR=.\../lib INTDIR=.\Release # Begin Custom Macros OutDir=.\../lib # End Custom Macros ALL : "$(OUTDIR)\gmp.dll" CLEAN : -@erase "$(INTDIR)\asprintf.obj" -@erase "$(INTDIR)\asprntffuns.obj" -@erase "$(INTDIR)\assert.obj" -@erase "$(INTDIR)\compat.obj" -@erase "$(INTDIR)\doprnt.obj" -@erase "$(INTDIR)\doprntf.obj" -@erase "$(INTDIR)\doprnti.obj" -@erase "$(INTDIR)\doscan.obj" -@erase "$(INTDIR)\errno.obj" -@erase "$(INTDIR)\extract-dbl.obj" -@erase "$(INTDIR)\fprintf.obj" -@erase "$(INTDIR)\fscanf.obj" -@erase "$(INTDIR)\fscanffuns.obj" -@erase "$(INTDIR)\insert-dbl.obj" -@erase "$(INTDIR)\memory.obj" -@erase "$(INTDIR)\mp_bpl.obj" -@erase "$(INTDIR)\mp_clz_tab.obj" -@erase "$(INTDIR)\mp_minv_tab.obj" -@erase "$(INTDIR)\mp_set_fns.obj" -@erase "$(INTDIR)\mpf\vc60.idb" -@erase "$(INTDIR)\mpn\vc60.idb" -@erase "$(INTDIR)\mpq\vc60.idb" -@erase "$(INTDIR)\mpz\vc60.idb" -@erase "$(INTDIR)\obprintf.obj" -@erase "$(INTDIR)\obprntffuns.obj" -@erase "$(INTDIR)\obvprintf.obj" -@erase "$(INTDIR)\printf.obj" -@erase "$(INTDIR)\printffuns.obj" -@erase "$(INTDIR)\rand.obj" -@erase "$(INTDIR)\randclr.obj" -@erase "$(INTDIR)\randdef.obj" -@erase "$(INTDIR)\randlc.obj" -@erase "$(INTDIR)\randlc2s.obj" -@erase "$(INTDIR)\randlc2x.obj" -@erase "$(INTDIR)\randraw.obj" -@erase "$(INTDIR)\rands.obj" -@erase "$(INTDIR)\randsd.obj" -@erase "$(INTDIR)\randsdui.obj" -@erase "$(INTDIR)\repl-vsnprintf.obj" -@erase "$(INTDIR)\scanf.obj" -@erase "$(INTDIR)\snprintf.obj" -@erase "$(INTDIR)\snprntffuns.obj" -@erase "$(INTDIR)\sprintf.obj" -@erase "$(INTDIR)\sprintffuns.obj" -@erase "$(INTDIR)\sscanf.obj" -@erase "$(INTDIR)\sscanffuns.obj" -@erase "$(INTDIR)\vasprintf.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\version.obj" -@erase "$(INTDIR)\vfprintf.obj" -@erase "$(INTDIR)\vfscanf.obj" -@erase "$(INTDIR)\vprintf.obj" -@erase "$(INTDIR)\vscanf.obj" -@erase "$(INTDIR)\vsnprintf.obj" -@erase "$(INTDIR)\vsprintf.obj" -@erase "$(INTDIR)\vsscanf.obj" -@erase "$(OUTDIR)\gmp.dll" -@erase "$(OUTDIR)\gmp.exp" -@erase "$(OUTDIR)\gmp.lib" -@erase ".\Release\mpf\abs.obj" -@erase ".\Release\mpf\add.obj" -@erase ".\Release\mpf\add_ui.obj" -@erase ".\Release\mpf\ceilfloor.obj" -@erase ".\Release\mpf\clear.obj" -@erase ".\Release\mpf\cmp.obj" -@erase ".\Release\mpf\cmp_d.obj" -@erase ".\Release\mpf\cmp_si.obj" -@erase ".\Release\mpf\cmp_ui.obj" -@erase ".\Release\mpf\div.obj" -@erase ".\Release\mpf\div_2exp.obj" -@erase ".\Release\mpf\div_ui.obj" -@erase ".\Release\mpf\dump.obj" -@erase ".\Release\mpf\eq.obj" -@erase ".\Release\mpf\fits_sint.obj" -@erase ".\Release\mpf\fits_slong.obj" -@erase ".\Release\mpf\fits_sshort.obj" -@erase ".\Release\mpf\fits_uint.obj" -@erase ".\Release\mpf\fits_ulong.obj" -@erase ".\Release\mpf\fits_ushort.obj" -@erase ".\Release\mpf\get_d.obj" -@erase ".\Release\mpf\get_d_2exp.obj" -@erase ".\Release\mpf\get_dfl_prec.obj" -@erase ".\Release\mpf\get_prc.obj" -@erase ".\Release\mpf\get_si.obj" -@erase ".\Release\mpf\get_str.obj" -@erase ".\Release\mpf\get_ui.obj" -@erase ".\Release\mpf\init.obj" -@erase ".\Release\mpf\init2.obj" -@erase ".\Release\mpf\inp_str.obj" -@erase ".\Release\mpf\int_p.obj" -@erase ".\Release\mpf\iset.obj" -@erase ".\Release\mpf\iset_d.obj" -@erase ".\Release\mpf\iset_si.obj" -@erase ".\Release\mpf\iset_str.obj" -@erase ".\Release\mpf\iset_ui.obj" -@erase ".\Release\mpf\mul.obj" -@erase ".\Release\mpf\mul_2exp.obj" -@erase ".\Release\mpf\mul_ui.obj" -@erase ".\Release\mpf\neg.obj" -@erase ".\Release\mpf\out_str.obj" -@erase ".\Release\mpf\pow_ui.obj" -@erase ".\Release\mpf\random2.obj" -@erase ".\Release\mpf\reldiff.obj" -@erase ".\Release\mpf\set.obj" -@erase ".\Release\mpf\set_d.obj" -@erase ".\Release\mpf\set_dfl_prec.obj" -@erase ".\Release\mpf\set_prc.obj" -@erase ".\Release\mpf\set_prc_raw.obj" -@erase ".\Release\mpf\set_q.obj" -@erase ".\Release\mpf\set_si.obj" -@erase ".\Release\mpf\set_str.obj" -@erase ".\Release\mpf\set_ui.obj" -@erase ".\Release\mpf\set_z.obj" -@erase ".\Release\mpf\size.obj" -@erase ".\Release\mpf\sqrt.obj" -@erase ".\Release\mpf\sqrt_ui.obj" -@erase ".\Release\mpf\sub.obj" -@erase ".\Release\mpf\sub_ui.obj" -@erase ".\Release\mpf\swap.obj" -@erase ".\Release\mpf\trunc.obj" -@erase ".\Release\mpf\ui_div.obj" -@erase ".\Release\mpf\ui_sub.obj" -@erase ".\Release\mpf\urandomb.obj" -@erase ".\Release\mpn\add.obj" -@erase ".\Release\mpn\add_1.obj" -@erase ".\Release\mpn\add_n.obj" -@erase ".\Release\mpn\addmul_1.obj" -@erase ".\Release\mpn\bdivmod.obj" -@erase ".\Release\mpn\cmp.obj" -@erase ".\Release\mpn\dc_divrem_n.obj" -@erase ".\Release\mpn\dive_1.obj" -@erase ".\Release\mpn\diveby3.obj" -@erase ".\Release\mpn\divis.obj" -@erase ".\Release\mpn\divrem.obj" -@erase ".\Release\mpn\divrem_1.obj" -@erase ".\Release\mpn\divrem_2.obj" -@erase ".\Release\mpn\dump.obj" -@erase ".\Release\mpn\fib2_ui.obj" -@erase ".\Release\mpn\gcd.obj" -@erase ".\Release\mpn\gcd_1.obj" -@erase ".\Release\mpn\gcdext.obj" -@erase ".\Release\mpn\get_str.obj" -@erase ".\Release\mpn\hamdist.obj" -@erase ".\Release\mpn\jacbase.obj" -@erase ".\Release\mpn\lshift.obj" -@erase ".\Release\mpn\mod_1.obj" -@erase ".\Release\mpn\mod_34lsub1.obj" -@erase ".\Release\mpn\mode1o.obj" -@erase ".\Release\mpn\mp_bases.obj" -@erase ".\Release\mpn\mul.obj" -@erase ".\Release\mpn\mul_1.obj" -@erase ".\Release\mpn\mul_basecase.obj" -@erase ".\Release\mpn\mul_fft.obj" -@erase ".\Release\mpn\mul_n.obj" -@erase ".\Release\mpn\perfsqr.obj" -@erase ".\Release\mpn\popcount.obj" -@erase ".\Release\mpn\pre_mod_1.obj" -@erase ".\Release\mpn\random.obj" -@erase ".\Release\mpn\random2.obj" -@erase ".\Release\mpn\rshift.obj" -@erase ".\Release\mpn\sb_divrem_mn.obj" -@erase ".\Release\mpn\scan0.obj" -@erase ".\Release\mpn\scan1.obj" -@erase ".\Release\mpn\set_str.obj" -@erase ".\Release\mpn\sqr_basecase.obj" -@erase ".\Release\mpn\sqrtrem.obj" -@erase ".\Release\mpn\sub.obj" -@erase ".\Release\mpn\sub_1.obj" -@erase ".\Release\mpn\sub_n.obj" -@erase ".\Release\mpn\submul_1.obj" -@erase ".\Release\mpn\tdiv_qr.obj" -@erase ".\Release\mpq\abs.obj" -@erase ".\Release\mpq\aors.obj" -@erase ".\Release\mpq\canonicalize.obj" -@erase ".\Release\mpq\clear.obj" -@erase ".\Release\mpq\cmp.obj" -@erase ".\Release\mpq\cmp_si.obj" -@erase ".\Release\mpq\cmp_ui.obj" -@erase ".\Release\mpq\div.obj" -@erase ".\Release\mpq\equal.obj" -@erase ".\Release\mpq\get_d.obj" -@erase ".\Release\mpq\get_den.obj" -@erase ".\Release\mpq\get_num.obj" -@erase ".\Release\mpq\get_str.obj" -@erase ".\Release\mpq\init.obj" -@erase ".\Release\mpq\inp_str.obj" -@erase ".\Release\mpq\inv.obj" -@erase ".\Release\mpq\md_2exp.obj" -@erase ".\Release\mpq\mul.obj" -@erase ".\Release\mpq\neg.obj" -@erase ".\Release\mpq\out_str.obj" -@erase ".\Release\mpq\set.obj" -@erase ".\Release\mpq\set_d.obj" -@erase ".\Release\mpq\set_den.obj" -@erase ".\Release\mpq\set_f.obj" -@erase ".\Release\mpq\set_num.obj" -@erase ".\Release\mpq\set_si.obj" -@erase ".\Release\mpq\set_str.obj" -@erase ".\Release\mpq\set_ui.obj" -@erase ".\Release\mpq\set_z.obj" -@erase ".\Release\mpq\swap.obj" -@erase ".\Release\mpz\abs.obj" -@erase ".\Release\mpz\add.obj" -@erase ".\Release\mpz\add_ui.obj" -@erase ".\Release\mpz\and.obj" -@erase ".\Release\mpz\aorsmul.obj" -@erase ".\Release\mpz\aorsmul_i.obj" -@erase ".\Release\mpz\array_init.obj" -@erase ".\Release\mpz\bin_ui.obj" -@erase ".\Release\mpz\bin_uiui.obj" -@erase ".\Release\mpz\cdiv_q.obj" -@erase ".\Release\mpz\cdiv_q_ui.obj" -@erase ".\Release\mpz\cdiv_qr.obj" -@erase ".\Release\mpz\cdiv_qr_ui.obj" -@erase ".\Release\mpz\cdiv_r.obj" -@erase ".\Release\mpz\cdiv_r_ui.obj" -@erase ".\Release\mpz\cdiv_ui.obj" -@erase ".\Release\mpz\cfdiv_q_2exp.obj" -@erase ".\Release\mpz\cfdiv_r_2exp.obj" -@erase ".\Release\mpz\clear.obj" -@erase ".\Release\mpz\clrbit.obj" -@erase ".\Release\mpz\cmp.obj" -@erase ".\Release\mpz\cmp_d.obj" -@erase ".\Release\mpz\cmp_si.obj" -@erase ".\Release\mpz\cmp_ui.obj" -@erase ".\Release\mpz\cmpabs.obj" -@erase ".\Release\mpz\cmpabs_d.obj" -@erase ".\Release\mpz\cmpabs_ui.obj" -@erase ".\Release\mpz\com.obj" -@erase ".\Release\mpz\cong.obj" -@erase ".\Release\mpz\cong_2exp.obj" -@erase ".\Release\mpz\cong_ui.obj" -@erase ".\Release\mpz\dive_ui.obj" -@erase ".\Release\mpz\divegcd.obj" -@erase ".\Release\mpz\divexact.obj" -@erase ".\Release\mpz\divis.obj" -@erase ".\Release\mpz\divis_2exp.obj" -@erase ".\Release\mpz\divis_ui.obj" -@erase ".\Release\mpz\dump.obj" -@erase ".\Release\mpz\fac_ui.obj" -@erase ".\Release\mpz\fdiv_q.obj" -@erase ".\Release\mpz\fdiv_q_ui.obj" -@erase ".\Release\mpz\fdiv_qr.obj" -@erase ".\Release\mpz\fdiv_qr_ui.obj" -@erase ".\Release\mpz\fdiv_r.obj" -@erase ".\Release\mpz\fdiv_r_ui.obj" -@erase ".\Release\mpz\fdiv_ui.obj" -@erase ".\Release\mpz\fib2_ui.obj" -@erase ".\Release\mpz\fib_ui.obj" -@erase ".\Release\mpz\fits_sint.obj" -@erase ".\Release\mpz\fits_slong.obj" -@erase ".\Release\mpz\fits_sshort.obj" -@erase ".\Release\mpz\fits_uint.obj" -@erase ".\Release\mpz\fits_ulong.obj" -@erase ".\Release\mpz\fits_ushort.obj" -@erase ".\Release\mpz\gcd.obj" -@erase ".\Release\mpz\gcd_ui.obj" -@erase ".\Release\mpz\gcdext.obj" -@erase ".\Release\mpz\get_d.obj" -@erase ".\Release\mpz\get_d_2exp.obj" -@erase ".\Release\mpz\get_si.obj" -@erase ".\Release\mpz\get_str.obj" -@erase ".\Release\mpz\get_ui.obj" -@erase ".\Release\mpz\getlimbn.obj" -@erase ".\Release\mpz\hamdist.obj" -@erase ".\Release\mpz\init.obj" -@erase ".\Release\mpz\init2.obj" -@erase ".\Release\mpz\inp_raw.obj" -@erase ".\Release\mpz\inp_str.obj" -@erase ".\Release\mpz\invert.obj" -@erase ".\Release\mpz\ior.obj" -@erase ".\Release\mpz\iset.obj" -@erase ".\Release\mpz\iset_d.obj" -@erase ".\Release\mpz\iset_si.obj" -@erase ".\Release\mpz\iset_str.obj" -@erase ".\Release\mpz\iset_ui.obj" -@erase ".\Release\mpz\jacobi.obj" -@erase ".\Release\mpz\kronsz.obj" -@erase ".\Release\mpz\kronuz.obj" -@erase ".\Release\mpz\kronzs.obj" -@erase ".\Release\mpz\kronzu.obj" -@erase ".\Release\mpz\lcm.obj" -@erase ".\Release\mpz\lcm_ui.obj" -@erase ".\Release\mpz\lucnum2_ui.obj" -@erase ".\Release\mpz\lucnum_ui.obj" -@erase ".\Release\mpz\millerrabin.obj" -@erase ".\Release\mpz\mod.obj" -@erase ".\Release\mpz\mul.obj" -@erase ".\Release\mpz\mul_2exp.obj" -@erase ".\Release\mpz\mul_si.obj" -@erase ".\Release\mpz\mul_ui.obj" -@erase ".\Release\mpz\n_pow_ui.obj" -@erase ".\Release\mpz\neg.obj" -@erase ".\Release\mpz\nextprime.obj" -@erase ".\Release\mpz\out_raw.obj" -@erase ".\Release\mpz\out_str.obj" -@erase ".\Release\mpz\perfpow.obj" -@erase ".\Release\mpz\perfsqr.obj" -@erase ".\Release\mpz\popcount.obj" -@erase ".\Release\mpz\pow_ui.obj" -@erase ".\Release\mpz\powm.obj" -@erase ".\Release\mpz\powm_ui.obj" -@erase ".\Release\mpz\pprime_p.obj" -@erase ".\Release\mpz\random.obj" -@erase ".\Release\mpz\random2.obj" -@erase ".\Release\mpz\realloc.obj" -@erase ".\Release\mpz\realloc2.obj" -@erase ".\Release\mpz\remove.obj" -@erase ".\Release\mpz\root.obj" -@erase ".\Release\mpz\rrandomb.obj" -@erase ".\Release\mpz\scan0.obj" -@erase ".\Release\mpz\scan1.obj" -@erase ".\Release\mpz\set.obj" -@erase ".\Release\mpz\set_d.obj" -@erase ".\Release\mpz\set_f.obj" -@erase ".\Release\mpz\set_q.obj" -@erase ".\Release\mpz\set_si.obj" -@erase ".\Release\mpz\set_str.obj" -@erase ".\Release\mpz\set_ui.obj" -@erase ".\Release\mpz\setbit.obj" -@erase ".\Release\mpz\size.obj" -@erase ".\Release\mpz\sizeinbase.obj" -@erase ".\Release\mpz\sqrt.obj" -@erase ".\Release\mpz\sqrtrem.obj" -@erase ".\Release\mpz\sub.obj" -@erase ".\Release\mpz\sub_ui.obj" -@erase ".\Release\mpz\swap.obj" -@erase ".\Release\mpz\tdiv_q.obj" -@erase ".\Release\mpz\tdiv_q_2exp.obj" -@erase ".\Release\mpz\tdiv_q_ui.obj" -@erase ".\Release\mpz\tdiv_qr.obj" -@erase ".\Release\mpz\tdiv_qr_ui.obj" -@erase ".\Release\mpz\tdiv_r.obj" -@erase ".\Release\mpz\tdiv_r_2exp.obj" -@erase ".\Release\mpz\tdiv_r_ui.obj" -@erase ".\Release\mpz\tdiv_ui.obj" -@erase ".\Release\mpz\tstbit.obj" -@erase ".\Release\mpz\ui_pow_ui.obj" -@erase ".\Release\mpz\urandomb.obj" -@erase ".\Release\mpz\urandomm.obj" -@erase ".\Release\mpz\xor.obj" "$(OUTDIR)" : "$(INTDIR)" if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" "$(INTDIR)" : if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)" if not exist "$(INTDIR)\mpf" mkdir "$(INTDIR)\mpf" if not exist "$(INTDIR)\mpn" mkdir "$(INTDIR)\mpn" if not exist "$(INTDIR)\mpq" mkdir "$(INTDIR)\mpq" if not exist "$(INTDIR)\mpz" mkdir "$(INTDIR)\mpz" CPP=cl.exe CPP_PROJ=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << MTL=midl.exe MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 RSC=rc.exe BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gmp.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /pdb:none /machine:I386 /out:"$(OUTDIR)\gmp.dll" /implib:"$(OUTDIR)\gmp.lib" LINK32_OBJS= \ ".\Release\mpf\abs.obj" \ ".\Release\mpq\abs.obj" \ ".\Release\mpz\abs.obj" \ ".\Release\mpf\add.obj" \ ".\Release\mpn\add.obj" \ ".\Release\mpz\add.obj" \ ".\Release\mpn\add_1.obj" \ ".\Release\mpn\add_n.obj" \ ".\Release\mpf\add_ui.obj" \ ".\Release\mpz\add_ui.obj" \ ".\Release\mpn\addmul_1.obj" \ ".\Release\mpz\and.obj" \ ".\Release\mpq\aors.obj" \ ".\Release\mpz\aorsmul.obj" \ ".\Release\mpz\aorsmul_i.obj" \ ".\Release\mpz\array_init.obj" \ "$(INTDIR)\asprintf.obj" \ "$(INTDIR)\asprntffuns.obj" \ "$(INTDIR)\assert.obj" \ ".\Release\mpn\bdivmod.obj" \ ".\Release\mpz\bin_ui.obj" \ ".\Release\mpz\bin_uiui.obj" \ ".\Release\mpq\canonicalize.obj" \ ".\Release\mpz\cdiv_q.obj" \ ".\Release\mpz\cdiv_q_ui.obj" \ ".\Release\mpz\cdiv_qr.obj" \ ".\Release\mpz\cdiv_qr_ui.obj" \ ".\Release\mpz\cdiv_r.obj" \ ".\Release\mpz\cdiv_r_ui.obj" \ ".\Release\mpz\cdiv_ui.obj" \ ".\Release\mpf\ceilfloor.obj" \ ".\Release\mpz\cfdiv_q_2exp.obj" \ ".\Release\mpz\cfdiv_r_2exp.obj" \ ".\Release\mpf\clear.obj" \ ".\Release\mpq\clear.obj" \ ".\Release\mpz\clear.obj" \ ".\Release\mpz\clrbit.obj" \ ".\Release\mpf\cmp.obj" \ ".\Release\mpn\cmp.obj" \ ".\Release\mpq\cmp.obj" \ ".\Release\mpz\cmp.obj" \ ".\Release\mpf\cmp_d.obj" \ ".\Release\mpz\cmp_d.obj" \ ".\Release\mpf\cmp_si.obj" \ ".\Release\mpq\cmp_si.obj" \ ".\Release\mpz\cmp_si.obj" \ ".\Release\mpf\cmp_ui.obj" \ ".\Release\mpq\cmp_ui.obj" \ ".\Release\mpz\cmp_ui.obj" \ ".\Release\mpz\cmpabs.obj" \ ".\Release\mpz\cmpabs_d.obj" \ ".\Release\mpz\cmpabs_ui.obj" \ ".\Release\mpz\com.obj" \ "$(INTDIR)\compat.obj" \ ".\Release\mpz\cong.obj" \ ".\Release\mpz\cong_2exp.obj" \ ".\Release\mpz\cong_ui.obj" \ ".\Release\mpn\dc_divrem_n.obj" \ ".\Release\mpf\div.obj" \ ".\Release\mpq\div.obj" \ ".\Release\mpf\div_2exp.obj" \ ".\Release\mpf\div_ui.obj" \ ".\Release\mpn\dive_1.obj" \ ".\Release\mpz\dive_ui.obj" \ ".\Release\mpn\diveby3.obj" \ ".\Release\mpz\divegcd.obj" \ ".\Release\mpz\divexact.obj" \ ".\Release\mpn\divis.obj" \ ".\Release\mpz\divis.obj" \ ".\Release\mpz\divis_2exp.obj" \ ".\Release\mpz\divis_ui.obj" \ ".\Release\mpn\divrem.obj" \ ".\Release\mpn\divrem_1.obj" \ ".\Release\mpn\divrem_2.obj" \ "$(INTDIR)\doprnt.obj" \ "$(INTDIR)\doprntf.obj" \ "$(INTDIR)\doprnti.obj" \ "$(INTDIR)\doscan.obj" \ ".\Release\mpf\dump.obj" \ ".\Release\mpn\dump.obj" \ ".\Release\mpz\dump.obj" \ ".\Release\mpf\eq.obj" \ ".\Release\mpq\equal.obj" \ "$(INTDIR)\errno.obj" \ "$(INTDIR)\extract-dbl.obj" \ ".\Release\mpz\fac_ui.obj" \ ".\Release\mpz\fdiv_q.obj" \ ".\Release\mpz\fdiv_q_ui.obj" \ ".\Release\mpz\fdiv_qr.obj" \ ".\Release\mpz\fdiv_qr_ui.obj" \ ".\Release\mpz\fdiv_r.obj" \ ".\Release\mpz\fdiv_r_ui.obj" \ ".\Release\mpz\fdiv_ui.obj" \ ".\Release\mpn\fib2_ui.obj" \ ".\Release\mpz\fib2_ui.obj" \ ".\Release\mpz\fib_ui.obj" \ ".\Release\mpf\fits_sint.obj" \ ".\Release\mpz\fits_sint.obj" \ ".\Release\mpf\fits_slong.obj" \ ".\Release\mpz\fits_slong.obj" \ ".\Release\mpf\fits_sshort.obj" \ ".\Release\mpz\fits_sshort.obj" \ ".\Release\mpf\fits_uint.obj" \ ".\Release\mpz\fits_uint.obj" \ ".\Release\mpf\fits_ulong.obj" \ ".\Release\mpz\fits_ulong.obj" \ ".\Release\mpf\fits_ushort.obj" \ ".\Release\mpz\fits_ushort.obj" \ "$(INTDIR)\fprintf.obj" \ "$(INTDIR)\fscanf.obj" \ "$(INTDIR)\fscanffuns.obj" \ ".\Release\mpn\gcd.obj" \ ".\Release\mpz\gcd.obj" \ ".\Release\mpn\gcd_1.obj" \ ".\Release\mpz\gcd_ui.obj" \ ".\Release\mpn\gcdext.obj" \ ".\Release\mpz\gcdext.obj" \ ".\Release\mpf\get_d.obj" \ ".\Release\mpq\get_d.obj" \ ".\Release\mpz\get_d.obj" \ ".\Release\mpf\get_d_2exp.obj" \ ".\Release\mpz\get_d_2exp.obj" \ ".\Release\mpq\get_den.obj" \ ".\Release\mpf\get_dfl_prec.obj" \ ".\Release\mpq\get_num.obj" \ ".\Release\mpf\get_prc.obj" \ ".\Release\mpf\get_si.obj" \ ".\Release\mpz\get_si.obj" \ ".\Release\mpf\get_str.obj" \ ".\Release\mpn\get_str.obj" \ ".\Release\mpq\get_str.obj" \ ".\Release\mpz\get_str.obj" \ ".\Release\mpf\get_ui.obj" \ ".\Release\mpz\get_ui.obj" \ ".\Release\mpz\getlimbn.obj" \ ".\Release\mpn\hamdist.obj" \ ".\Release\mpz\hamdist.obj" \ ".\Release\mpf\init.obj" \ ".\Release\mpq\init.obj" \ ".\Release\mpz\init.obj" \ ".\Release\mpf\init2.obj" \ ".\Release\mpz\init2.obj" \ ".\Release\mpz\inp_raw.obj" \ ".\Release\mpf\inp_str.obj" \ ".\Release\mpq\inp_str.obj" \ ".\Release\mpz\inp_str.obj" \ "$(INTDIR)\insert-dbl.obj" \ ".\Release\mpf\int_p.obj" \ ".\Release\mpq\inv.obj" \ ".\Release\mpz\invert.obj" \ ".\Release\mpz\ior.obj" \ ".\Release\mpf\iset.obj" \ ".\Release\mpz\iset.obj" \ ".\Release\mpf\iset_d.obj" \ ".\Release\mpz\iset_d.obj" \ ".\Release\mpf\iset_si.obj" \ ".\Release\mpz\iset_si.obj" \ ".\Release\mpf\iset_str.obj" \ ".\Release\mpz\iset_str.obj" \ ".\Release\mpf\iset_ui.obj" \ ".\Release\mpz\iset_ui.obj" \ ".\Release\mpn\jacbase.obj" \ ".\Release\mpz\jacobi.obj" \ ".\Release\mpz\kronsz.obj" \ ".\Release\mpz\kronuz.obj" \ ".\Release\mpz\kronzs.obj" \ ".\Release\mpz\kronzu.obj" \ ".\Release\mpz\lcm.obj" \ ".\Release\mpz\lcm_ui.obj" \ ".\Release\mpn\lshift.obj" \ ".\Release\mpz\lucnum2_ui.obj" \ ".\Release\mpz\lucnum_ui.obj" \ ".\Release\mpq\md_2exp.obj" \ "$(INTDIR)\memory.obj" \ ".\Release\mpz\millerrabin.obj" \ ".\Release\mpz\mod.obj" \ ".\Release\mpn\mod_1.obj" \ ".\Release\mpn\mod_34lsub1.obj" \ ".\Release\mpn\mode1o.obj" \ ".\Release\mpn\mp_bases.obj" \ "$(INTDIR)\mp_bpl.obj" \ "$(INTDIR)\mp_clz_tab.obj" \ "$(INTDIR)\mp_minv_tab.obj" \ "$(INTDIR)\mp_set_fns.obj" \ ".\Release\mpf\mul.obj" \ ".\Release\mpn\mul.obj" \ ".\Release\mpq\mul.obj" \ ".\Release\mpz\mul.obj" \ ".\Release\mpn\mul_1.obj" \ ".\Release\mpf\mul_2exp.obj" \ ".\Release\mpz\mul_2exp.obj" \ ".\Release\mpn\mul_basecase.obj" \ ".\Release\mpn\mul_fft.obj" \ ".\Release\mpn\mul_n.obj" \ ".\Release\mpz\mul_si.obj" \ ".\Release\mpf\mul_ui.obj" \ ".\Release\mpz\mul_ui.obj" \ ".\Release\mpz\n_pow_ui.obj" \ ".\Release\mpf\neg.obj" \ ".\Release\mpq\neg.obj" \ ".\Release\mpz\neg.obj" \ ".\Release\mpz\nextprime.obj" \ "$(INTDIR)\obprintf.obj" \ "$(INTDIR)\obprntffuns.obj" \ "$(INTDIR)\obvprintf.obj" \ ".\Release\mpz\out_raw.obj" \ ".\Release\mpf\out_str.obj" \ ".\Release\mpq\out_str.obj" \ ".\Release\mpz\out_str.obj" \ ".\Release\mpz\perfpow.obj" \ ".\Release\mpn\perfsqr.obj" \ ".\Release\mpz\perfsqr.obj" \ ".\Release\mpn\popcount.obj" \ ".\Release\mpz\popcount.obj" \ ".\Release\mpf\pow_ui.obj" \ ".\Release\mpz\pow_ui.obj" \ ".\Release\mpz\powm.obj" \ ".\Release\mpz\powm_ui.obj" \ ".\Release\mpz\pprime_p.obj" \ ".\Release\mpn\pre_mod_1.obj" \ "$(INTDIR)\printf.obj" \ "$(INTDIR)\printffuns.obj" \ "$(INTDIR)\rand.obj" \ "$(INTDIR)\randclr.obj" \ "$(INTDIR)\randdef.obj" \ "$(INTDIR)\randlc.obj" \ "$(INTDIR)\randlc2s.obj" \ "$(INTDIR)\randlc2x.obj" \ ".\Release\mpn\random.obj" \ ".\Release\mpz\random.obj" \ ".\Release\mpf\random2.obj" \ ".\Release\mpn\random2.obj" \ ".\Release\mpz\random2.obj" \ "$(INTDIR)\randraw.obj" \ "$(INTDIR)\rands.obj" \ "$(INTDIR)\randsd.obj" \ "$(INTDIR)\randsdui.obj" \ ".\Release\mpz\realloc.obj" \ ".\Release\mpz\realloc2.obj" \ ".\Release\mpf\reldiff.obj" \ ".\Release\mpz\remove.obj" \ "$(INTDIR)\repl-vsnprintf.obj" \ ".\Release\mpz\root.obj" \ ".\Release\mpz\rrandomb.obj" \ ".\Release\mpn\rshift.obj" \ ".\Release\mpn\sb_divrem_mn.obj" \ ".\Release\mpn\scan0.obj" \ ".\Release\mpz\scan0.obj" \ ".\Release\mpn\scan1.obj" \ ".\Release\mpz\scan1.obj" \ "$(INTDIR)\scanf.obj" \ ".\Release\mpf\set.obj" \ ".\Release\mpq\set.obj" \ ".\Release\mpz\set.obj" \ ".\Release\mpf\set_d.obj" \ ".\Release\mpq\set_d.obj" \ ".\Release\mpz\set_d.obj" \ ".\Release\mpq\set_den.obj" \ ".\Release\mpf\set_dfl_prec.obj" \ ".\Release\mpq\set_f.obj" \ ".\Release\mpz\set_f.obj" \ ".\Release\mpq\set_num.obj" \ ".\Release\mpf\set_prc.obj" \ ".\Release\mpf\set_prc_raw.obj" \ ".\Release\mpf\set_q.obj" \ ".\Release\mpz\set_q.obj" \ ".\Release\mpf\set_si.obj" \ ".\Release\mpq\set_si.obj" \ ".\Release\mpz\set_si.obj" \ ".\Release\mpf\set_str.obj" \ ".\Release\mpn\set_str.obj" \ ".\Release\mpq\set_str.obj" \ ".\Release\mpz\set_str.obj" \ ".\Release\mpf\set_ui.obj" \ ".\Release\mpq\set_ui.obj" \ ".\Release\mpz\set_ui.obj" \ ".\Release\mpf\set_z.obj" \ ".\Release\mpq\set_z.obj" \ ".\Release\mpz\setbit.obj" \ ".\Release\mpf\size.obj" \ ".\Release\mpz\size.obj" \ ".\Release\mpz\sizeinbase.obj" \ "$(INTDIR)\snprintf.obj" \ "$(INTDIR)\snprntffuns.obj" \ "$(INTDIR)\sprintf.obj" \ "$(INTDIR)\sprintffuns.obj" \ ".\Release\mpn\sqr_basecase.obj" \ ".\Release\mpf\sqrt.obj" \ ".\Release\mpz\sqrt.obj" \ ".\Release\mpf\sqrt_ui.obj" \ ".\Release\mpn\sqrtrem.obj" \ ".\Release\mpz\sqrtrem.obj" \ "$(INTDIR)\sscanf.obj" \ "$(INTDIR)\sscanffuns.obj" \ ".\Release\mpf\sub.obj" \ ".\Release\mpn\sub.obj" \ ".\Release\mpz\sub.obj" \ ".\Release\mpn\sub_1.obj" \ ".\Release\mpn\sub_n.obj" \ ".\Release\mpf\sub_ui.obj" \ ".\Release\mpz\sub_ui.obj" \ ".\Release\mpn\submul_1.obj" \ ".\Release\mpf\swap.obj" \ ".\Release\mpq\swap.obj" \ ".\Release\mpz\swap.obj" \ ".\Release\mpz\tdiv_q.obj" \ ".\Release\mpz\tdiv_q_2exp.obj" \ ".\Release\mpz\tdiv_q_ui.obj" \ ".\Release\mpn\tdiv_qr.obj" \ ".\Release\mpz\tdiv_qr.obj" \ ".\Release\mpz\tdiv_qr_ui.obj" \ ".\Release\mpz\tdiv_r.obj" \ ".\Release\mpz\tdiv_r_2exp.obj" \ ".\Release\mpz\tdiv_r_ui.obj" \ ".\Release\mpz\tdiv_ui.obj" \ ".\Release\mpf\trunc.obj" \ ".\Release\mpz\tstbit.obj" \ ".\Release\mpf\ui_div.obj" \ ".\Release\mpz\ui_pow_ui.obj" \ ".\Release\mpf\ui_sub.obj" \ ".\Release\mpf\urandomb.obj" \ ".\Release\mpz\urandomb.obj" \ ".\Release\mpz\urandomm.obj" \ "$(INTDIR)\vasprintf.obj" \ "$(INTDIR)\version.obj" \ "$(INTDIR)\vfprintf.obj" \ "$(INTDIR)\vfscanf.obj" \ "$(INTDIR)\vprintf.obj" \ "$(INTDIR)\vscanf.obj" \ "$(INTDIR)\vsnprintf.obj" \ "$(INTDIR)\vsprintf.obj" \ "$(INTDIR)\vsscanf.obj" \ ".\Release\mpz\xor.obj" "$(OUTDIR)\gmp.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" OUTDIR=.\../lib INTDIR=.\Debug # Begin Custom Macros OutDir=.\../lib # End Custom Macros ALL : "$(OUTDIR)\gmpDebug.dll" CLEAN : -@erase "$(INTDIR)\asprintf.obj" -@erase "$(INTDIR)\asprntffuns.obj" -@erase "$(INTDIR)\assert.obj" -@erase "$(INTDIR)\compat.obj" -@erase "$(INTDIR)\doprnt.obj" -@erase "$(INTDIR)\doprntf.obj" -@erase "$(INTDIR)\doprnti.obj" -@erase "$(INTDIR)\doscan.obj" -@erase "$(INTDIR)\errno.obj" -@erase "$(INTDIR)\extract-dbl.obj" -@erase "$(INTDIR)\fprintf.obj" -@erase "$(INTDIR)\fscanf.obj" -@erase "$(INTDIR)\fscanffuns.obj" -@erase "$(INTDIR)\insert-dbl.obj" -@erase "$(INTDIR)\memory.obj" -@erase "$(INTDIR)\mp_bpl.obj" -@erase "$(INTDIR)\mp_clz_tab.obj" -@erase "$(INTDIR)\mp_minv_tab.obj" -@erase "$(INTDIR)\mp_set_fns.obj" -@erase "$(INTDIR)\mpf\vc60.idb" -@erase "$(INTDIR)\mpf\vc60.pdb" -@erase "$(INTDIR)\mpn\vc60.idb" -@erase "$(INTDIR)\mpn\vc60.pdb" -@erase "$(INTDIR)\mpq\vc60.idb" -@erase "$(INTDIR)\mpq\vc60.pdb" -@erase "$(INTDIR)\mpz\vc60.idb" -@erase "$(INTDIR)\mpz\vc60.pdb" -@erase "$(INTDIR)\obprintf.obj" -@erase "$(INTDIR)\obprntffuns.obj" -@erase "$(INTDIR)\obvprintf.obj" -@erase "$(INTDIR)\printf.obj" -@erase "$(INTDIR)\printffuns.obj" -@erase "$(INTDIR)\rand.obj" -@erase "$(INTDIR)\randclr.obj" -@erase "$(INTDIR)\randdef.obj" -@erase "$(INTDIR)\randlc.obj" -@erase "$(INTDIR)\randlc2s.obj" -@erase "$(INTDIR)\randlc2x.obj" -@erase "$(INTDIR)\randraw.obj" -@erase "$(INTDIR)\rands.obj" -@erase "$(INTDIR)\randsd.obj" -@erase "$(INTDIR)\randsdui.obj" -@erase "$(INTDIR)\repl-vsnprintf.obj" -@erase "$(INTDIR)\scanf.obj" -@erase "$(INTDIR)\snprintf.obj" -@erase "$(INTDIR)\snprntffuns.obj" -@erase "$(INTDIR)\sprintf.obj" -@erase "$(INTDIR)\sprintffuns.obj" -@erase "$(INTDIR)\sscanf.obj" -@erase "$(INTDIR)\sscanffuns.obj" -@erase "$(INTDIR)\vasprintf.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(INTDIR)\version.obj" -@erase "$(INTDIR)\vfprintf.obj" -@erase "$(INTDIR)\vfscanf.obj" -@erase "$(INTDIR)\vprintf.obj" -@erase "$(INTDIR)\vscanf.obj" -@erase "$(INTDIR)\vsnprintf.obj" -@erase "$(INTDIR)\vsprintf.obj" -@erase "$(INTDIR)\vsscanf.obj" -@erase "$(OUTDIR)\gmpDebug.dll" -@erase "$(OUTDIR)\gmpDebug.exp" -@erase "$(OUTDIR)\gmpDebug.lib" -@erase ".\Debug\mpf\abs.obj" -@erase ".\Debug\mpf\add.obj" -@erase ".\Debug\mpf\add_ui.obj" -@erase ".\Debug\mpf\ceilfloor.obj" -@erase ".\Debug\mpf\clear.obj" -@erase ".\Debug\mpf\cmp.obj" -@erase ".\Debug\mpf\cmp_d.obj" -@erase ".\Debug\mpf\cmp_si.obj" -@erase ".\Debug\mpf\cmp_ui.obj" -@erase ".\Debug\mpf\div.obj" -@erase ".\Debug\mpf\div_2exp.obj" -@erase ".\Debug\mpf\div_ui.obj" -@erase ".\Debug\mpf\dump.obj" -@erase ".\Debug\mpf\eq.obj" -@erase ".\Debug\mpf\fits_sint.obj" -@erase ".\Debug\mpf\fits_slong.obj" -@erase ".\Debug\mpf\fits_sshort.obj" -@erase ".\Debug\mpf\fits_uint.obj" -@erase ".\Debug\mpf\fits_ulong.obj" -@erase ".\Debug\mpf\fits_ushort.obj" -@erase ".\Debug\mpf\get_d.obj" -@erase ".\Debug\mpf\get_d_2exp.obj" -@erase ".\Debug\mpf\get_dfl_prec.obj" -@erase ".\Debug\mpf\get_prc.obj" -@erase ".\Debug\mpf\get_si.obj" -@erase ".\Debug\mpf\get_str.obj" -@erase ".\Debug\mpf\get_ui.obj" -@erase ".\Debug\mpf\init.obj" -@erase ".\Debug\mpf\init2.obj" -@erase ".\Debug\mpf\inp_str.obj" -@erase ".\Debug\mpf\int_p.obj" -@erase ".\Debug\mpf\iset.obj" -@erase ".\Debug\mpf\iset_d.obj" -@erase ".\Debug\mpf\iset_si.obj" -@erase ".\Debug\mpf\iset_str.obj" -@erase ".\Debug\mpf\iset_ui.obj" -@erase ".\Debug\mpf\mul.obj" -@erase ".\Debug\mpf\mul_2exp.obj" -@erase ".\Debug\mpf\mul_ui.obj" -@erase ".\Debug\mpf\neg.obj" -@erase ".\Debug\mpf\out_str.obj" -@erase ".\Debug\mpf\pow_ui.obj" -@erase ".\Debug\mpf\random2.obj" -@erase ".\Debug\mpf\reldiff.obj" -@erase ".\Debug\mpf\set.obj" -@erase ".\Debug\mpf\set_d.obj" -@erase ".\Debug\mpf\set_dfl_prec.obj" -@erase ".\Debug\mpf\set_prc.obj" -@erase ".\Debug\mpf\set_prc_raw.obj" -@erase ".\Debug\mpf\set_q.obj" -@erase ".\Debug\mpf\set_si.obj" -@erase ".\Debug\mpf\set_str.obj" -@erase ".\Debug\mpf\set_ui.obj" -@erase ".\Debug\mpf\set_z.obj" -@erase ".\Debug\mpf\size.obj" -@erase ".\Debug\mpf\sqrt.obj" -@erase ".\Debug\mpf\sqrt_ui.obj" -@erase ".\Debug\mpf\sub.obj" -@erase ".\Debug\mpf\sub_ui.obj" -@erase ".\Debug\mpf\swap.obj" -@erase ".\Debug\mpf\trunc.obj" -@erase ".\Debug\mpf\ui_div.obj" -@erase ".\Debug\mpf\ui_sub.obj" -@erase ".\Debug\mpf\urandomb.obj" -@erase ".\Debug\mpn\add.obj" -@erase ".\Debug\mpn\add_1.obj" -@erase ".\Debug\mpn\add_n.obj" -@erase ".\Debug\mpn\addmul_1.obj" -@erase ".\Debug\mpn\bdivmod.obj" -@erase ".\Debug\mpn\cmp.obj" -@erase ".\Debug\mpn\dc_divrem_n.obj" -@erase ".\Debug\mpn\dive_1.obj" -@erase ".\Debug\mpn\diveby3.obj" -@erase ".\Debug\mpn\divis.obj" -@erase ".\Debug\mpn\divrem.obj" -@erase ".\Debug\mpn\divrem_1.obj" -@erase ".\Debug\mpn\divrem_2.obj" -@erase ".\Debug\mpn\dump.obj" -@erase ".\Debug\mpn\fib2_ui.obj" -@erase ".\Debug\mpn\gcd.obj" -@erase ".\Debug\mpn\gcd_1.obj" -@erase ".\Debug\mpn\gcdext.obj" -@erase ".\Debug\mpn\get_str.obj" -@erase ".\Debug\mpn\hamdist.obj" -@erase ".\Debug\mpn\jacbase.obj" -@erase ".\Debug\mpn\lshift.obj" -@erase ".\Debug\mpn\mod_1.obj" -@erase ".\Debug\mpn\mod_34lsub1.obj" -@erase ".\Debug\mpn\mode1o.obj" -@erase ".\Debug\mpn\mp_bases.obj" -@erase ".\Debug\mpn\mul.obj" -@erase ".\Debug\mpn\mul_1.obj" -@erase ".\Debug\mpn\mul_basecase.obj" -@erase ".\Debug\mpn\mul_fft.obj" -@erase ".\Debug\mpn\mul_n.obj" -@erase ".\Debug\mpn\perfsqr.obj" -@erase ".\Debug\mpn\popcount.obj" -@erase ".\Debug\mpn\pre_mod_1.obj" -@erase ".\Debug\mpn\random.obj" -@erase ".\Debug\mpn\random2.obj" -@erase ".\Debug\mpn\rshift.obj" -@erase ".\Debug\mpn\sb_divrem_mn.obj" -@erase ".\Debug\mpn\scan0.obj" -@erase ".\Debug\mpn\scan1.obj" -@erase ".\Debug\mpn\set_str.obj" -@erase ".\Debug\mpn\sqr_basecase.obj" -@erase ".\Debug\mpn\sqrtrem.obj" -@erase ".\Debug\mpn\sub.obj" -@erase ".\Debug\mpn\sub_1.obj" -@erase ".\Debug\mpn\sub_n.obj" -@erase ".\Debug\mpn\submul_1.obj" -@erase ".\Debug\mpn\tdiv_qr.obj" -@erase ".\Debug\mpq\abs.obj" -@erase ".\Debug\mpq\aors.obj" -@erase ".\Debug\mpq\canonicalize.obj" -@erase ".\Debug\mpq\clear.obj" -@erase ".\Debug\mpq\cmp.obj" -@erase ".\Debug\mpq\cmp_si.obj" -@erase ".\Debug\mpq\cmp_ui.obj" -@erase ".\Debug\mpq\div.obj" -@erase ".\Debug\mpq\equal.obj" -@erase ".\Debug\mpq\get_d.obj" -@erase ".\Debug\mpq\get_den.obj" -@erase ".\Debug\mpq\get_num.obj" -@erase ".\Debug\mpq\get_str.obj" -@erase ".\Debug\mpq\init.obj" -@erase ".\Debug\mpq\inp_str.obj" -@erase ".\Debug\mpq\inv.obj" -@erase ".\Debug\mpq\md_2exp.obj" -@erase ".\Debug\mpq\mul.obj" -@erase ".\Debug\mpq\neg.obj" -@erase ".\Debug\mpq\out_str.obj" -@erase ".\Debug\mpq\set.obj" -@erase ".\Debug\mpq\set_d.obj" -@erase ".\Debug\mpq\set_den.obj" -@erase ".\Debug\mpq\set_f.obj" -@erase ".\Debug\mpq\set_num.obj" -@erase ".\Debug\mpq\set_si.obj" -@erase ".\Debug\mpq\set_str.obj" -@erase ".\Debug\mpq\set_ui.obj" -@erase ".\Debug\mpq\set_z.obj" -@erase ".\Debug\mpq\swap.obj" -@erase ".\Debug\mpz\abs.obj" -@erase ".\Debug\mpz\add.obj" -@erase ".\Debug\mpz\add_ui.obj" -@erase ".\Debug\mpz\and.obj" -@erase ".\Debug\mpz\aorsmul.obj" -@erase ".\Debug\mpz\aorsmul_i.obj" -@erase ".\Debug\mpz\array_init.obj" -@erase ".\Debug\mpz\bin_ui.obj" -@erase ".\Debug\mpz\bin_uiui.obj" -@erase ".\Debug\mpz\cdiv_q.obj" -@erase ".\Debug\mpz\cdiv_q_ui.obj" -@erase ".\Debug\mpz\cdiv_qr.obj" -@erase ".\Debug\mpz\cdiv_qr_ui.obj" -@erase ".\Debug\mpz\cdiv_r.obj" -@erase ".\Debug\mpz\cdiv_r_ui.obj" -@erase ".\Debug\mpz\cdiv_ui.obj" -@erase ".\Debug\mpz\cfdiv_q_2exp.obj" -@erase ".\Debug\mpz\cfdiv_r_2exp.obj" -@erase ".\Debug\mpz\clear.obj" -@erase ".\Debug\mpz\clrbit.obj" -@erase ".\Debug\mpz\cmp.obj" -@erase ".\Debug\mpz\cmp_d.obj" -@erase ".\Debug\mpz\cmp_si.obj" -@erase ".\Debug\mpz\cmp_ui.obj" -@erase ".\Debug\mpz\cmpabs.obj" -@erase ".\Debug\mpz\cmpabs_d.obj" -@erase ".\Debug\mpz\cmpabs_ui.obj" -@erase ".\Debug\mpz\com.obj" -@erase ".\Debug\mpz\cong.obj" -@erase ".\Debug\mpz\cong_2exp.obj" -@erase ".\Debug\mpz\cong_ui.obj" -@erase ".\Debug\mpz\dive_ui.obj" -@erase ".\Debug\mpz\divegcd.obj" -@erase ".\Debug\mpz\divexact.obj" -@erase ".\Debug\mpz\divis.obj" -@erase ".\Debug\mpz\divis_2exp.obj" -@erase ".\Debug\mpz\divis_ui.obj" -@erase ".\Debug\mpz\dump.obj" -@erase ".\Debug\mpz\fac_ui.obj" -@erase ".\Debug\mpz\fdiv_q.obj" -@erase ".\Debug\mpz\fdiv_q_ui.obj" -@erase ".\Debug\mpz\fdiv_qr.obj" -@erase ".\Debug\mpz\fdiv_qr_ui.obj" -@erase ".\Debug\mpz\fdiv_r.obj" -@erase ".\Debug\mpz\fdiv_r_ui.obj" -@erase ".\Debug\mpz\fdiv_ui.obj" -@erase ".\Debug\mpz\fib2_ui.obj" -@erase ".\Debug\mpz\fib_ui.obj" -@erase ".\Debug\mpz\fits_sint.obj" -@erase ".\Debug\mpz\fits_slong.obj" -@erase ".\Debug\mpz\fits_sshort.obj" -@erase ".\Debug\mpz\fits_uint.obj" -@erase ".\Debug\mpz\fits_ulong.obj" -@erase ".\Debug\mpz\fits_ushort.obj" -@erase ".\Debug\mpz\gcd.obj" -@erase ".\Debug\mpz\gcd_ui.obj" -@erase ".\Debug\mpz\gcdext.obj" -@erase ".\Debug\mpz\get_d.obj" -@erase ".\Debug\mpz\get_d_2exp.obj" -@erase ".\Debug\mpz\get_si.obj" -@erase ".\Debug\mpz\get_str.obj" -@erase ".\Debug\mpz\get_ui.obj" -@erase ".\Debug\mpz\getlimbn.obj" -@erase ".\Debug\mpz\hamdist.obj" -@erase ".\Debug\mpz\init.obj" -@erase ".\Debug\mpz\init2.obj" -@erase ".\Debug\mpz\inp_raw.obj" -@erase ".\Debug\mpz\inp_str.obj" -@erase ".\Debug\mpz\invert.obj" -@erase ".\Debug\mpz\ior.obj" -@erase ".\Debug\mpz\iset.obj" -@erase ".\Debug\mpz\iset_d.obj" -@erase ".\Debug\mpz\iset_si.obj" -@erase ".\Debug\mpz\iset_str.obj" -@erase ".\Debug\mpz\iset_ui.obj" -@erase ".\Debug\mpz\jacobi.obj" -@erase ".\Debug\mpz\kronsz.obj" -@erase ".\Debug\mpz\kronuz.obj" -@erase ".\Debug\mpz\kronzs.obj" -@erase ".\Debug\mpz\kronzu.obj" -@erase ".\Debug\mpz\lcm.obj" -@erase ".\Debug\mpz\lcm_ui.obj" -@erase ".\Debug\mpz\lucnum2_ui.obj" -@erase ".\Debug\mpz\lucnum_ui.obj" -@erase ".\Debug\mpz\millerrabin.obj" -@erase ".\Debug\mpz\mod.obj" -@erase ".\Debug\mpz\mul.obj" -@erase ".\Debug\mpz\mul_2exp.obj" -@erase ".\Debug\mpz\mul_si.obj" -@erase ".\Debug\mpz\mul_ui.obj" -@erase ".\Debug\mpz\n_pow_ui.obj" -@erase ".\Debug\mpz\neg.obj" -@erase ".\Debug\mpz\nextprime.obj" -@erase ".\Debug\mpz\out_raw.obj" -@erase ".\Debug\mpz\out_str.obj" -@erase ".\Debug\mpz\perfpow.obj" -@erase ".\Debug\mpz\perfsqr.obj" -@erase ".\Debug\mpz\popcount.obj" -@erase ".\Debug\mpz\pow_ui.obj" -@erase ".\Debug\mpz\powm.obj" -@erase ".\Debug\mpz\powm_ui.obj" -@erase ".\Debug\mpz\pprime_p.obj" -@erase ".\Debug\mpz\random.obj" -@erase ".\Debug\mpz\random2.obj" -@erase ".\Debug\mpz\realloc.obj" -@erase ".\Debug\mpz\realloc2.obj" -@erase ".\Debug\mpz\remove.obj" -@erase ".\Debug\mpz\root.obj" -@erase ".\Debug\mpz\rrandomb.obj" -@erase ".\Debug\mpz\scan0.obj" -@erase ".\Debug\mpz\scan1.obj" -@erase ".\Debug\mpz\set.obj" -@erase ".\Debug\mpz\set_d.obj" -@erase ".\Debug\mpz\set_f.obj" -@erase ".\Debug\mpz\set_q.obj" -@erase ".\Debug\mpz\set_si.obj" -@erase ".\Debug\mpz\set_str.obj" -@erase ".\Debug\mpz\set_ui.obj" -@erase ".\Debug\mpz\setbit.obj" -@erase ".\Debug\mpz\size.obj" -@erase ".\Debug\mpz\sizeinbase.obj" -@erase ".\Debug\mpz\sqrt.obj" -@erase ".\Debug\mpz\sqrtrem.obj" -@erase ".\Debug\mpz\sub.obj" -@erase ".\Debug\mpz\sub_ui.obj" -@erase ".\Debug\mpz\swap.obj" -@erase ".\Debug\mpz\tdiv_q.obj" -@erase ".\Debug\mpz\tdiv_q_2exp.obj" -@erase ".\Debug\mpz\tdiv_q_ui.obj" -@erase ".\Debug\mpz\tdiv_qr.obj" -@erase ".\Debug\mpz\tdiv_qr_ui.obj" -@erase ".\Debug\mpz\tdiv_r.obj" -@erase ".\Debug\mpz\tdiv_r_2exp.obj" -@erase ".\Debug\mpz\tdiv_r_ui.obj" -@erase ".\Debug\mpz\tdiv_ui.obj" -@erase ".\Debug\mpz\tstbit.obj" -@erase ".\Debug\mpz\ui_pow_ui.obj" -@erase ".\Debug\mpz\urandomb.obj" -@erase ".\Debug\mpz\urandomm.obj" -@erase ".\Debug\mpz\xor.obj" "$(OUTDIR)" : "$(INTDIR)" if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" "$(INTDIR)" : if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)" if not exist "$(INTDIR)\mpf" mkdir "$(INTDIR)\mpf" if not exist "$(INTDIR)\mpn" mkdir "$(INTDIR)\mpn" if not exist "$(INTDIR)\mpq" mkdir "$(INTDIR)\mpq" if not exist "$(INTDIR)\mpz" mkdir "$(INTDIR)\mpz" CPP=cl.exe CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << MTL=midl.exe MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 RSC=rc.exe BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gmp.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"$(OUTDIR)\gmpDebug.dll" /implib:"$(OUTDIR)\gmpDebug.lib" LINK32_OBJS= \ ".\Debug\mpf\abs.obj" \ ".\Debug\mpq\abs.obj" \ ".\Debug\mpz\abs.obj" \ ".\Debug\mpf\add.obj" \ ".\Debug\mpn\add.obj" \ ".\Debug\mpz\add.obj" \ ".\Debug\mpn\add_1.obj" \ ".\Debug\mpn\add_n.obj" \ ".\Debug\mpf\add_ui.obj" \ ".\Debug\mpz\add_ui.obj" \ ".\Debug\mpn\addmul_1.obj" \ ".\Debug\mpz\and.obj" \ ".\Debug\mpq\aors.obj" \ ".\Debug\mpz\aorsmul.obj" \ ".\Debug\mpz\aorsmul_i.obj" \ ".\Debug\mpz\array_init.obj" \ "$(INTDIR)\asprintf.obj" \ "$(INTDIR)\asprntffuns.obj" \ "$(INTDIR)\assert.obj" \ ".\Debug\mpn\bdivmod.obj" \ ".\Debug\mpz\bin_ui.obj" \ ".\Debug\mpz\bin_uiui.obj" \ ".\Debug\mpq\canonicalize.obj" \ ".\Debug\mpz\cdiv_q.obj" \ ".\Debug\mpz\cdiv_q_ui.obj" \ ".\Debug\mpz\cdiv_qr.obj" \ ".\Debug\mpz\cdiv_qr_ui.obj" \ ".\Debug\mpz\cdiv_r.obj" \ ".\Debug\mpz\cdiv_r_ui.obj" \ ".\Debug\mpz\cdiv_ui.obj" \ ".\Debug\mpf\ceilfloor.obj" \ ".\Debug\mpz\cfdiv_q_2exp.obj" \ ".\Debug\mpz\cfdiv_r_2exp.obj" \ ".\Debug\mpf\clear.obj" \ ".\Debug\mpq\clear.obj" \ ".\Debug\mpz\clear.obj" \ ".\Debug\mpz\clrbit.obj" \ ".\Debug\mpf\cmp.obj" \ ".\Debug\mpn\cmp.obj" \ ".\Debug\mpq\cmp.obj" \ ".\Debug\mpz\cmp.obj" \ ".\Debug\mpf\cmp_d.obj" \ ".\Debug\mpz\cmp_d.obj" \ ".\Debug\mpf\cmp_si.obj" \ ".\Debug\mpq\cmp_si.obj" \ ".\Debug\mpz\cmp_si.obj" \ ".\Debug\mpf\cmp_ui.obj" \ ".\Debug\mpq\cmp_ui.obj" \ ".\Debug\mpz\cmp_ui.obj" \ ".\Debug\mpz\cmpabs.obj" \ ".\Debug\mpz\cmpabs_d.obj" \ ".\Debug\mpz\cmpabs_ui.obj" \ ".\Debug\mpz\com.obj" \ "$(INTDIR)\compat.obj" \ ".\Debug\mpz\cong.obj" \ ".\Debug\mpz\cong_2exp.obj" \ ".\Debug\mpz\cong_ui.obj" \ ".\Debug\mpn\dc_divrem_n.obj" \ ".\Debug\mpf\div.obj" \ ".\Debug\mpq\div.obj" \ ".\Debug\mpf\div_2exp.obj" \ ".\Debug\mpf\div_ui.obj" \ ".\Debug\mpn\dive_1.obj" \ ".\Debug\mpz\dive_ui.obj" \ ".\Debug\mpn\diveby3.obj" \ ".\Debug\mpz\divegcd.obj" \ ".\Debug\mpz\divexact.obj" \ ".\Debug\mpn\divis.obj" \ ".\Debug\mpz\divis.obj" \ ".\Debug\mpz\divis_2exp.obj" \ ".\Debug\mpz\divis_ui.obj" \ ".\Debug\mpn\divrem.obj" \ ".\Debug\mpn\divrem_1.obj" \ ".\Debug\mpn\divrem_2.obj" \ "$(INTDIR)\doprnt.obj" \ "$(INTDIR)\doprntf.obj" \ "$(INTDIR)\doprnti.obj" \ "$(INTDIR)\doscan.obj" \ ".\Debug\mpf\dump.obj" \ ".\Debug\mpn\dump.obj" \ ".\Debug\mpz\dump.obj" \ ".\Debug\mpf\eq.obj" \ ".\Debug\mpq\equal.obj" \ "$(INTDIR)\errno.obj" \ "$(INTDIR)\extract-dbl.obj" \ ".\Debug\mpz\fac_ui.obj" \ ".\Debug\mpz\fdiv_q.obj" \ ".\Debug\mpz\fdiv_q_ui.obj" \ ".\Debug\mpz\fdiv_qr.obj" \ ".\Debug\mpz\fdiv_qr_ui.obj" \ ".\Debug\mpz\fdiv_r.obj" \ ".\Debug\mpz\fdiv_r_ui.obj" \ ".\Debug\mpz\fdiv_ui.obj" \ ".\Debug\mpn\fib2_ui.obj" \ ".\Debug\mpz\fib2_ui.obj" \ ".\Debug\mpz\fib_ui.obj" \ ".\Debug\mpf\fits_sint.obj" \ ".\Debug\mpz\fits_sint.obj" \ ".\Debug\mpf\fits_slong.obj" \ ".\Debug\mpz\fits_slong.obj" \ ".\Debug\mpf\fits_sshort.obj" \ ".\Debug\mpz\fits_sshort.obj" \ ".\Debug\mpf\fits_uint.obj" \ ".\Debug\mpz\fits_uint.obj" \ ".\Debug\mpf\fits_ulong.obj" \ ".\Debug\mpz\fits_ulong.obj" \ ".\Debug\mpf\fits_ushort.obj" \ ".\Debug\mpz\fits_ushort.obj" \ "$(INTDIR)\fprintf.obj" \ "$(INTDIR)\fscanf.obj" \ "$(INTDIR)\fscanffuns.obj" \ ".\Debug\mpn\gcd.obj" \ ".\Debug\mpz\gcd.obj" \ ".\Debug\mpn\gcd_1.obj" \ ".\Debug\mpz\gcd_ui.obj" \ ".\Debug\mpn\gcdext.obj" \ ".\Debug\mpz\gcdext.obj" \ ".\Debug\mpf\get_d.obj" \ ".\Debug\mpq\get_d.obj" \ ".\Debug\mpz\get_d.obj" \ ".\Debug\mpf\get_d_2exp.obj" \ ".\Debug\mpz\get_d_2exp.obj" \ ".\Debug\mpq\get_den.obj" \ ".\Debug\mpf\get_dfl_prec.obj" \ ".\Debug\mpq\get_num.obj" \ ".\Debug\mpf\get_prc.obj" \ ".\Debug\mpf\get_si.obj" \ ".\Debug\mpz\get_si.obj" \ ".\Debug\mpf\get_str.obj" \ ".\Debug\mpn\get_str.obj" \ ".\Debug\mpq\get_str.obj" \ ".\Debug\mpz\get_str.obj" \ ".\Debug\mpf\get_ui.obj" \ ".\Debug\mpz\get_ui.obj" \ ".\Debug\mpz\getlimbn.obj" \ ".\Debug\mpn\hamdist.obj" \ ".\Debug\mpz\hamdist.obj" \ ".\Debug\mpf\init.obj" \ ".\Debug\mpq\init.obj" \ ".\Debug\mpz\init.obj" \ ".\Debug\mpf\init2.obj" \ ".\Debug\mpz\init2.obj" \ ".\Debug\mpz\inp_raw.obj" \ ".\Debug\mpf\inp_str.obj" \ ".\Debug\mpq\inp_str.obj" \ ".\Debug\mpz\inp_str.obj" \ "$(INTDIR)\insert-dbl.obj" \ ".\Debug\mpf\int_p.obj" \ ".\Debug\mpq\inv.obj" \ ".\Debug\mpz\invert.obj" \ ".\Debug\mpz\ior.obj" \ ".\Debug\mpf\iset.obj" \ ".\Debug\mpz\iset.obj" \ ".\Debug\mpf\iset_d.obj" \ ".\Debug\mpz\iset_d.obj" \ ".\Debug\mpf\iset_si.obj" \ ".\Debug\mpz\iset_si.obj" \ ".\Debug\mpf\iset_str.obj" \ ".\Debug\mpz\iset_str.obj" \ ".\Debug\mpf\iset_ui.obj" \ ".\Debug\mpz\iset_ui.obj" \ ".\Debug\mpn\jacbase.obj" \ ".\Debug\mpz\jacobi.obj" \ ".\Debug\mpz\kronsz.obj" \ ".\Debug\mpz\kronuz.obj" \ ".\Debug\mpz\kronzs.obj" \ ".\Debug\mpz\kronzu.obj" \ ".\Debug\mpz\lcm.obj" \ ".\Debug\mpz\lcm_ui.obj" \ ".\Debug\mpn\lshift.obj" \ ".\Debug\mpz\lucnum2_ui.obj" \ ".\Debug\mpz\lucnum_ui.obj" \ ".\Debug\mpq\md_2exp.obj" \ "$(INTDIR)\memory.obj" \ ".\Debug\mpz\millerrabin.obj" \ ".\Debug\mpz\mod.obj" \ ".\Debug\mpn\mod_1.obj" \ ".\Debug\mpn\mod_34lsub1.obj" \ ".\Debug\mpn\mode1o.obj" \ ".\Debug\mpn\mp_bases.obj" \ "$(INTDIR)\mp_bpl.obj" \ "$(INTDIR)\mp_clz_tab.obj" \ "$(INTDIR)\mp_minv_tab.obj" \ "$(INTDIR)\mp_set_fns.obj" \ ".\Debug\mpf\mul.obj" \ ".\Debug\mpn\mul.obj" \ ".\Debug\mpq\mul.obj" \ ".\Debug\mpz\mul.obj" \ ".\Debug\mpn\mul_1.obj" \ ".\Debug\mpf\mul_2exp.obj" \ ".\Debug\mpz\mul_2exp.obj" \ ".\Debug\mpn\mul_basecase.obj" \ ".\Debug\mpn\mul_fft.obj" \ ".\Debug\mpn\mul_n.obj" \ ".\Debug\mpz\mul_si.obj" \ ".\Debug\mpf\mul_ui.obj" \ ".\Debug\mpz\mul_ui.obj" \ ".\Debug\mpz\n_pow_ui.obj" \ ".\Debug\mpf\neg.obj" \ ".\Debug\mpq\neg.obj" \ ".\Debug\mpz\neg.obj" \ ".\Debug\mpz\nextprime.obj" \ "$(INTDIR)\obprintf.obj" \ "$(INTDIR)\obprntffuns.obj" \ "$(INTDIR)\obvprintf.obj" \ ".\Debug\mpz\out_raw.obj" \ ".\Debug\mpf\out_str.obj" \ ".\Debug\mpq\out_str.obj" \ ".\Debug\mpz\out_str.obj" \ ".\Debug\mpz\perfpow.obj" \ ".\Debug\mpn\perfsqr.obj" \ ".\Debug\mpz\perfsqr.obj" \ ".\Debug\mpn\popcount.obj" \ ".\Debug\mpz\popcount.obj" \ ".\Debug\mpf\pow_ui.obj" \ ".\Debug\mpz\pow_ui.obj" \ ".\Debug\mpz\powm.obj" \ ".\Debug\mpz\powm_ui.obj" \ ".\Debug\mpz\pprime_p.obj" \ ".\Debug\mpn\pre_mod_1.obj" \ "$(INTDIR)\printf.obj" \ "$(INTDIR)\printffuns.obj" \ "$(INTDIR)\rand.obj" \ "$(INTDIR)\randclr.obj" \ "$(INTDIR)\randdef.obj" \ "$(INTDIR)\randlc.obj" \ "$(INTDIR)\randlc2s.obj" \ "$(INTDIR)\randlc2x.obj" \ ".\Debug\mpn\random.obj" \ ".\Debug\mpz\random.obj" \ ".\Debug\mpf\random2.obj" \ ".\Debug\mpn\random2.obj" \ ".\Debug\mpz\random2.obj" \ "$(INTDIR)\randraw.obj" \ "$(INTDIR)\rands.obj" \ "$(INTDIR)\randsd.obj" \ "$(INTDIR)\randsdui.obj" \ ".\Debug\mpz\realloc.obj" \ ".\Debug\mpz\realloc2.obj" \ ".\Debug\mpf\reldiff.obj" \ ".\Debug\mpz\remove.obj" \ "$(INTDIR)\repl-vsnprintf.obj" \ ".\Debug\mpz\root.obj" \ ".\Debug\mpz\rrandomb.obj" \ ".\Debug\mpn\rshift.obj" \ ".\Debug\mpn\sb_divrem_mn.obj" \ ".\Debug\mpn\scan0.obj" \ ".\Debug\mpz\scan0.obj" \ ".\Debug\mpn\scan1.obj" \ ".\Debug\mpz\scan1.obj" \ "$(INTDIR)\scanf.obj" \ ".\Debug\mpf\set.obj" \ ".\Debug\mpq\set.obj" \ ".\Debug\mpz\set.obj" \ ".\Debug\mpf\set_d.obj" \ ".\Debug\mpq\set_d.obj" \ ".\Debug\mpz\set_d.obj" \ ".\Debug\mpq\set_den.obj" \ ".\Debug\mpf\set_dfl_prec.obj" \ ".\Debug\mpq\set_f.obj" \ ".\Debug\mpz\set_f.obj" \ ".\Debug\mpq\set_num.obj" \ ".\Debug\mpf\set_prc.obj" \ ".\Debug\mpf\set_prc_raw.obj" \ ".\Debug\mpf\set_q.obj" \ ".\Debug\mpz\set_q.obj" \ ".\Debug\mpf\set_si.obj" \ ".\Debug\mpq\set_si.obj" \ ".\Debug\mpz\set_si.obj" \ ".\Debug\mpf\set_str.obj" \ ".\Debug\mpn\set_str.obj" \ ".\Debug\mpq\set_str.obj" \ ".\Debug\mpz\set_str.obj" \ ".\Debug\mpf\set_ui.obj" \ ".\Debug\mpq\set_ui.obj" \ ".\Debug\mpz\set_ui.obj" \ ".\Debug\mpf\set_z.obj" \ ".\Debug\mpq\set_z.obj" \ ".\Debug\mpz\setbit.obj" \ ".\Debug\mpf\size.obj" \ ".\Debug\mpz\size.obj" \ ".\Debug\mpz\sizeinbase.obj" \ "$(INTDIR)\snprintf.obj" \ "$(INTDIR)\snprntffuns.obj" \ "$(INTDIR)\sprintf.obj" \ "$(INTDIR)\sprintffuns.obj" \ ".\Debug\mpn\sqr_basecase.obj" \ ".\Debug\mpf\sqrt.obj" \ ".\Debug\mpz\sqrt.obj" \ ".\Debug\mpf\sqrt_ui.obj" \ ".\Debug\mpn\sqrtrem.obj" \ ".\Debug\mpz\sqrtrem.obj" \ "$(INTDIR)\sscanf.obj" \ "$(INTDIR)\sscanffuns.obj" \ ".\Debug\mpf\sub.obj" \ ".\Debug\mpn\sub.obj" \ ".\Debug\mpz\sub.obj" \ ".\Debug\mpn\sub_1.obj" \ ".\Debug\mpn\sub_n.obj" \ ".\Debug\mpf\sub_ui.obj" \ ".\Debug\mpz\sub_ui.obj" \ ".\Debug\mpn\submul_1.obj" \ ".\Debug\mpf\swap.obj" \ ".\Debug\mpq\swap.obj" \ ".\Debug\mpz\swap.obj" \ ".\Debug\mpz\tdiv_q.obj" \ ".\Debug\mpz\tdiv_q_2exp.obj" \ ".\Debug\mpz\tdiv_q_ui.obj" \ ".\Debug\mpn\tdiv_qr.obj" \ ".\Debug\mpz\tdiv_qr.obj" \ ".\Debug\mpz\tdiv_qr_ui.obj" \ ".\Debug\mpz\tdiv_r.obj" \ ".\Debug\mpz\tdiv_r_2exp.obj" \ ".\Debug\mpz\tdiv_r_ui.obj" \ ".\Debug\mpz\tdiv_ui.obj" \ ".\Debug\mpf\trunc.obj" \ ".\Debug\mpz\tstbit.obj" \ ".\Debug\mpf\ui_div.obj" \ ".\Debug\mpz\ui_pow_ui.obj" \ ".\Debug\mpf\ui_sub.obj" \ ".\Debug\mpf\urandomb.obj" \ ".\Debug\mpz\urandomb.obj" \ ".\Debug\mpz\urandomm.obj" \ "$(INTDIR)\vasprintf.obj" \ "$(INTDIR)\version.obj" \ "$(INTDIR)\vfprintf.obj" \ "$(INTDIR)\vfscanf.obj" \ "$(INTDIR)\vprintf.obj" \ "$(INTDIR)\vscanf.obj" \ "$(INTDIR)\vsnprintf.obj" \ "$(INTDIR)\vsprintf.obj" \ "$(INTDIR)\vsscanf.obj" \ ".\Debug\mpz\xor.obj" "$(OUTDIR)\gmpDebug.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("gmp.dep") !INCLUDE "gmp.dep" !ELSE !MESSAGE Warning: cannot find "gmp.dep" !ENDIF !ENDIF !IF "$(CFG)" == "gmp - Win32 Release" || "$(CFG)" == "gmp - Win32 Debug" SOURCE=.\mpf\abs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\abs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\abs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\abs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\abs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\abs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\abs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\abs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\abs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\add.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\add.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\add.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\add.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\add_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\add_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\add_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\add_n.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_add_n" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\add_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_add_n" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\add_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\add_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\add_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\add_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\add_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\add_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\add_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\addmul_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_addmul_1" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\addmul_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_addmul_1" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\addmul_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\and.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\and.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\and.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\aors.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\aors.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\aors.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\aorsmul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\aorsmul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\aorsmul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\aorsmul_i.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\aorsmul_i.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\aorsmul_i.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\array_init.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\array_init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\array_init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\asprintf.c "$(INTDIR)\asprintf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\asprntffuns.c "$(INTDIR)\asprntffuns.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\assert.c "$(INTDIR)\assert.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\mpn\generic\bdivmod.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\bdivmod.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\bdivmod.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\bin_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\bin_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\bin_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\bin_uiui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\bin_uiui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\bin_uiui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\canonicalize.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\canonicalize.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\canonicalize.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cdiv_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_q_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cdiv_q_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_qr_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cdiv_qr_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_r.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cdiv_r.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_r_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cdiv_r_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cdiv_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cdiv_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\ceilfloor.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\ceilfloor.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\ceilfloor.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cfdiv_q_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cfdiv_q_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cfdiv_q_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cfdiv_r_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cfdiv_r_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cfdiv_r_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\clear.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\clear.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\clear.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\clear.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\clrbit.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\clrbit.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\clrbit.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cmp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\cmp_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\cmp_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\cmp_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmp_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cmp_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cmp_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\cmp_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\cmp_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\cmp_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\cmp_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cmp_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cmp_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cmp_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmpabs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cmpabs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cmpabs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmpabs_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cmpabs_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cmpabs_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmpabs_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cmpabs_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cmpabs_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\com.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\com.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\com.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\compat.c "$(INTDIR)\compat.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\mpz\cong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cong.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cong.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cong_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cong_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cong_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cong_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\cong_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\cong_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\dc_divrem_n.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\dc_divrem_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\dc_divrem_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\div.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\div.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\div_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\div_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\div_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\div_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\div_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\div_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\dive_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\dive_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\dive_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\dive_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\dive_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\dive_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\diveby3.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\diveby3.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\diveby3.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divegcd.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\divegcd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\divegcd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divexact.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\divexact.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\divexact.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\divis.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\divis.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\divis.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divis.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\divis.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\divis.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divis_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\divis_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\divis_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divis_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\divis_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\divis_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\divrem.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\divrem.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\divrem.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\divrem_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\divrem_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\divrem_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\divrem_2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\divrem_2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\divrem_2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\doprnt.c "$(INTDIR)\doprnt.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\doprntf.c "$(INTDIR)\doprntf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\doprnti.c "$(INTDIR)\doprnti.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\doscan.c "$(INTDIR)\doscan.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpf\dump.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\dump.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\dump.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\dump.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\dump.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\dump.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\dump.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\dump.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\dump.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\eq.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\eq.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\eq.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\equal.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\equal.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\equal.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\errno.c "$(INTDIR)\errno.obj" : $(SOURCE) "$(INTDIR)" SOURCE=".\extract-dbl.c" "$(INTDIR)\extract-dbl.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\mpz\fac_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fac_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fac_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fdiv_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_q_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fdiv_q_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_qr_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fdiv_qr_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_r.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fdiv_r.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_r_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fdiv_r_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fdiv_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fdiv_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\fib2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\fib2_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\fib2_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fib2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fib2_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fib2_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fib_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fib_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fib_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_sint.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\fits_sint.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\fits_sint.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_sint.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fits_sint.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fits_sint.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_slong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\fits_slong.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\fits_slong.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_slong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fits_slong.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fits_slong.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_sshort.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\fits_sshort.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\fits_sshort.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_sshort.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fits_sshort.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fits_sshort.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_uint.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\fits_uint.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\fits_uint.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_uint.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fits_uint.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fits_uint.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_ulong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\fits_ulong.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\fits_ulong.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_ulong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fits_ulong.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fits_ulong.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_ushort.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\fits_ushort.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\fits_ushort.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_ushort.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\fits_ushort.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\fits_ushort.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\fprintf.c "$(INTDIR)\fprintf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\fscanf.c "$(INTDIR)\fscanf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\fscanffuns.c "$(INTDIR)\fscanffuns.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpn\generic\gcd.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\gcd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\gcd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\gcd.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\gcd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\gcd.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\gcd_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\gcd_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\gcd_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\gcd_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\gcd_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\gcd_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\gcdext.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\gcdext.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\gcdext.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\gcdext.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\gcdext.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\gcdext.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\get_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\get_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\get_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\get_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\get_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\get_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_d_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\get_d_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\get_d_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_d_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\get_d_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\get_d_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\get_den.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\get_den.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\get_den.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_dfl_prec.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\get_dfl_prec.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\get_dfl_prec.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\get_num.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\get_num.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\get_num.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_prc.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\get_prc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\get_prc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\get_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\get_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\get_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\get_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\get_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\get_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\get_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\get_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\get_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\getlimbn.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\getlimbn.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\getlimbn.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\hamdist.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\hamdist.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\hamdist.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\hamdist.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\hamdist.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\hamdist.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\init.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\init.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\init.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\init.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\init2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\init2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\init2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\init2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\init2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\init2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\inp_raw.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\inp_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\inp_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\inp_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\inp_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\inp_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\inp_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\inp_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\inp_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=".\insert-dbl.c" "$(INTDIR)\insert-dbl.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\mpf\int_p.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\int_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\int_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\inv.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\inv.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\inv.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\invert.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\invert.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\invert.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\ior.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\ior.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\ior.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\iset.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\iset.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\iset.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\iset.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\iset_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\iset_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\iset_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\iset_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\iset_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\iset_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\iset_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\iset_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\iset_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\iset_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\iset_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\iset_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\iset_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\iset_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\iset_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\iset_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\jacbase.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\jacbase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\jacbase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\jacobi.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\jacobi.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\jacobi.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\kronsz.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\kronsz.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\kronsz.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\kronuz.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\kronuz.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\kronuz.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\kronzs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\kronzs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\kronzs.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\kronzu.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\kronzu.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\kronzu.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\lcm.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\lcm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\lcm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\lcm_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\lcm_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\lcm_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\lshift.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\lshift.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\lshift.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\lucnum2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\lucnum2_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\lucnum2_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\lucnum_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\lucnum_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\lucnum_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\md_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\md_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\md_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\memory.c "$(INTDIR)\memory.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\mpz\millerrabin.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\millerrabin.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\millerrabin.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mod.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\mod.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\mod.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mod_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mod_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\mod_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mod_34lsub1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mod_34lsub1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\mod_34lsub1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mode1o.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mode1o.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\mode1o.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\mp_bases.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mp_bases.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\mp_bases.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mp_bpl.c "$(INTDIR)\mp_bpl.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\mp_clz_tab.c "$(INTDIR)\mp_clz_tab.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\mp_minv_tab.c "$(INTDIR)\mp_minv_tab.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\mp_set_fns.c "$(INTDIR)\mp_set_fns.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\mpf\mul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\mul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\mul.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mul_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\mul_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\mul_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\mul_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\mul_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mul_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\mul_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\mul_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul_basecase.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mul_basecase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\mul_basecase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul_fft.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mul_fft.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\mul_fft.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul_n.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\mul_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\mul_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mul_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\mul_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\mul_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\mul_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\mul_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\mul_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mul_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\mul_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\mul_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\n_pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\n_pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\n_pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\neg.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\neg.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\neg.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\neg.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\nextprime.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\nextprime.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\nextprime.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\obprintf.c "$(INTDIR)\obprintf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\obprntffuns.c "$(INTDIR)\obprntffuns.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\obvprintf.c "$(INTDIR)\obvprintf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpz\out_raw.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\out_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\out_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\out_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\perfpow.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\perfpow.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\perfpow.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\perfsqr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\perfsqr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\perfsqr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\perfsqr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\perfsqr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\perfsqr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\popcount.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\popcount.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\popcount.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\popcount.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\popcount.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\popcount.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\powm.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\powm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\powm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\powm_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\powm_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\powm_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\pprime_p.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\pprime_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\pprime_p.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\pre_mod_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\pre_mod_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\pre_mod_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\printf.c "$(INTDIR)\printf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\printffuns.c "$(INTDIR)\printffuns.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\rand.c "$(INTDIR)\rand.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\randclr.c "$(INTDIR)\randclr.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\randdef.c "$(INTDIR)\randdef.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\randlc.c "$(INTDIR)\randlc.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\randlc2s.c "$(INTDIR)\randlc2s.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\randlc2x.c "$(INTDIR)\randlc2x.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\mpn\generic\random.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\random.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\random.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\random.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\random.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\random.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\random2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\random2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\random2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\random2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\random2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\random2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\random2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\random2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\random2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\randraw.c "$(INTDIR)\randraw.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\rands.c "$(INTDIR)\rands.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\randsd.c "$(INTDIR)\randsd.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\randsdui.c "$(INTDIR)\randsdui.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\mpz\realloc.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\realloc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\realloc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\realloc2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\realloc2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\realloc2.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\reldiff.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\reldiff.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\reldiff.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\remove.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\remove.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\remove.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=".\printf\repl-vsnprintf.c" "$(INTDIR)\repl-vsnprintf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpz\root.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\root.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\root.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\rrandomb.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\rrandomb.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\rrandomb.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\rshift.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\rshift.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\rshift.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sb_divrem_mn.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\sb_divrem_mn.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\sb_divrem_mn.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\scan0.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\scan0.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\scan0.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\scan0.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\scan0.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\scan0.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\scan1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\scan1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\scan1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\scan1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\scan1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\scan1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\scanf\scanf.c "$(INTDIR)\scanf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpf\set.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\set.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\set_d.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_den.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_den.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\set_den.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_dfl_prec.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_dfl_prec.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\set_dfl_prec.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_f.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_f.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\set_f.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_f.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set_f.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\set_f.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_num.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_num.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\set_num.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_prc.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_prc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\set_prc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_prc_raw.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_prc_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\set_prc_raw.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\set_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\set_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\set_si.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\set_str.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\set_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\set_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\set_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\set_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_z.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\set_z.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\set_z.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_z.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\set_z.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\set_z.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\setbit.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\setbit.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\setbit.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\size.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\size.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\size.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\size.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\size.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\size.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sizeinbase.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\sizeinbase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\sizeinbase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\snprintf.c "$(INTDIR)\snprintf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\snprntffuns.c "$(INTDIR)\snprntffuns.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\sprintf.c "$(INTDIR)\sprintf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\sprintffuns.c "$(INTDIR)\sprintffuns.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpn\generic\sqr_basecase.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\sqr_basecase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\sqr_basecase.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\sqrt.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\sqrt.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\sqrt.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sqrt.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\sqrt.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\sqrt.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\sqrt_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\sqrt_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\sqrt_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sqrtrem.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\sqrtrem.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\sqrtrem.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sqrtrem.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\sqrtrem.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\sqrtrem.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\scanf\sscanf.c "$(INTDIR)\sscanf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\sscanffuns.c "$(INTDIR)\sscanffuns.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpf\sub.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sub.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sub.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sub_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\sub_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\sub_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sub_n.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_sub_n" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\sub_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_sub_n" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\sub_n.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\sub_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\sub_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\sub_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sub_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\sub_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\sub_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\submul_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_submul_1" /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\submul_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_submul_1" /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\submul_1.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\swap.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\swap.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\swap.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\swap.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c ".\Release\mpq\swap.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /c ".\Debug\mpq\swap.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\swap.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\swap.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\swap.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\tdiv_q.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_q_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_q_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\tdiv_q_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_q_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\tdiv_q_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\tdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c ".\Release\mpn\tdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /c ".\Debug\mpn\tdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\tdiv_qr.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_qr_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\tdiv_qr_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_r.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\tdiv_r.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_r_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_r_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\tdiv_r_2exp.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_r_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\tdiv_r_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tdiv_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\tdiv_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\trunc.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\trunc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\trunc.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tstbit.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\tstbit.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\tstbit.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\ui_div.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\ui_div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\ui_div.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\ui_pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\ui_pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\ui_pow_ui.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\ui_sub.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\ui_sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\ui_sub.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\urandomb.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c ".\Release\mpf\urandomb.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /c ".\Debug\mpf\urandomb.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\urandomb.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\urandomb.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\urandomb.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\urandomm.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\urandomm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\urandomm.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\vasprintf.c "$(INTDIR)\vasprintf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\version.c "$(INTDIR)\version.obj" : $(SOURCE) "$(INTDIR)" SOURCE=.\printf\vfprintf.c "$(INTDIR)\vfprintf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\vfscanf.c "$(INTDIR)\vfscanf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\vprintf.c "$(INTDIR)\vprintf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\vscanf.c "$(INTDIR)\vscanf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\vsnprintf.c "$(INTDIR)\vsnprintf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\vsprintf.c "$(INTDIR)\vsprintf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\vsscanf.c "$(INTDIR)\vsscanf.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpz\xor.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /Ob2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c ".\Release\mpz\xor.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /c ".\Debug\mpz\xor.obj" : $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF !ENDIF core++-1.7/win32/patches/gmp-4.0.1/longlong.h0100644000175000001440000016525607437361201017615 0ustar joachimusers/* longlong.h -- definitions for mixed size 32/64 bit arithmetic. Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this file; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* You have to define the following before including this file: UWtype -- An unsigned type, default type for operations (typically a "word") UHWtype -- An unsigned type, at least half the size of UWtype. UDWtype -- An unsigned type, at least twice as large a UWtype W_TYPE_SIZE -- size in bits of UWtype SItype, USItype -- Signed and unsigned 32 bit types. DItype, UDItype -- Signed and unsigned 64 bit types. On a 32 bit machine UWtype should typically be USItype; on a 64 bit machine, UWtype should typically be UDItype. */ #define __BITS4 (W_TYPE_SIZE / 4) #define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2)) #define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1)) #define __ll_highpart(t) ((UWtype) (t) >> (W_TYPE_SIZE / 2)) /* This is used to make sure no undesirable sharing between different libraries that use this file takes place. */ #ifndef __MPN #define __MPN(x) __##x #endif #ifndef _PROTO #if (__STDC__-0) || defined (__cplusplus) #define _PROTO(x) x #else #define _PROTO(x) () #endif #endif /* Define auxiliary asm macros. 1) umul_ppmm(high_prod, low_prod, multipler, multiplicand) multiplies two UWtype integers MULTIPLER and MULTIPLICAND, and generates a two UWtype word product in HIGH_PROD and LOW_PROD. 2) __umulsidi3(a,b) multiplies two UWtype integers A and B, and returns a UDWtype product. This is just a variant of umul_ppmm. 3) udiv_qrnnd(quotient, remainder, high_numerator, low_numerator, denominator) divides a UDWtype, composed by the UWtype integers HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and places the quotient in QUOTIENT and the remainder in REMAINDER. HIGH_NUMERATOR must be less than DENOMINATOR for correct operation. If, in addition, the most significant bit of DENOMINATOR must be 1, then the pre-processor symbol UDIV_NEEDS_NORMALIZATION is defined to 1. 4) sdiv_qrnnd(quotient, remainder, high_numerator, low_numerator, denominator). Like udiv_qrnnd but the numbers are signed. The quotient is rounded towards 0. 5) count_leading_zeros(count, x) counts the number of zero-bits from the msb to the first non-zero bit in the UWtype X. This is the number of steps X needs to be shifted left to set the msb. Undefined for X == 0, unless the symbol COUNT_LEADING_ZEROS_0 is defined to some value. 6) count_trailing_zeros(count, x) like count_leading_zeros, but counts from the least significant end. 7) add_ssaaaa(high_sum, low_sum, high_addend_1, low_addend_1, high_addend_2, low_addend_2) adds two UWtype integers, composed by HIGH_ADDEND_1 and LOW_ADDEND_1, and HIGH_ADDEND_2 and LOW_ADDEND_2 respectively. The result is placed in HIGH_SUM and LOW_SUM. Overflow (i.e. carry out) is not stored anywhere, and is lost. 8) sub_ddmmss(high_difference, low_difference, high_minuend, low_minuend, high_subtrahend, low_subtrahend) subtracts two two-word UWtype integers, composed by HIGH_MINUEND_1 and LOW_MINUEND_1, and HIGH_SUBTRAHEND_2 and LOW_SUBTRAHEND_2 respectively. The result is placed in HIGH_DIFFERENCE and LOW_DIFFERENCE. Overflow (i.e. carry out) is not stored anywhere, and is lost. If any of these macros are left undefined for a particular CPU, C macros are used. */ /* The CPUs come in alphabetical order below. Please add support for more CPUs here, or improve the current support for the CPUs below! */ /* FIXME: The macros using external routines like __MPN(count_leading_zeros) don't need to be under !NO_ASM */ #if ! defined (NO_ASM) #if defined (__alpha) && W_TYPE_SIZE == 64 /* Most alpha-based machines, except Cray systems. */ #if defined (__GNUC__) #define umul_ppmm(ph, pl, m0, m1) \ do { \ UDItype __m0 = (m0), __m1 = (m1); \ __asm__ ("umulh %r1,%2,%0" \ : "=r" (ph) \ : "%rJ" (m0), "rI" (m1)); \ (pl) = __m0 * __m1; \ } while (0) #define UMUL_TIME 18 #else /* ! __GNUC__ */ #include #define umul_ppmm(ph, pl, m0, m1) \ do { \ UDItype __m0 = (m0), __m1 = (m1); \ (ph) = __UMULH (m0, m1); \ (pl) = __m0 * __m1; \ } while (0) #endif #ifndef LONGLONG_STANDALONE #define udiv_qrnnd(q, r, n1, n0, d) \ do { UWtype __di; \ __di = __MPN(invert_limb) (d); \ udiv_qrnnd_preinv (q, r, n1, n0, d, __di); \ } while (0) #define UDIV_PREINV_ALWAYS 1 #define UDIV_NEEDS_NORMALIZATION 1 #define UDIV_TIME 220 #if HAVE_ATTRIBUTE_CONST long __MPN(count_leading_zeros) _PROTO ((UDItype)) __attribute__ ((const)); #else long __MPN(count_leading_zeros) _PROTO ((UDItype)); #endif #define count_leading_zeros(count, x) \ ((count) = __MPN(count_leading_zeros) (x)) #define COUNT_LEADING_ZEROS_NEED_CLZ_TAB #endif /* LONGLONG_STANDALONE */ #endif /* __alpha */ #if defined (_CRAY) && W_TYPE_SIZE == 64 #include #define UDIV_PREINV_ALWAYS 1 #define UDIV_NEEDS_NORMALIZATION 1 #define UDIV_TIME 220 long __MPN(count_leading_zeros) _PROTO ((UDItype)); #define count_leading_zeros(count, x) \ ((count) = _leadz ((UWtype) (x))) #if defined (_CRAYIEEE) /* I.e., Cray T90/ieee, T3D, and T3E */ #define umul_ppmm(ph, pl, m0, m1) \ do { \ UDItype __m0 = (m0), __m1 = (m1); \ (ph) = _int_mult_upper (m0, m1); \ (pl) = __m0 * __m1; \ } while (0) #ifndef LONGLONG_STANDALONE #define udiv_qrnnd(q, r, n1, n0, d) \ do { UWtype __di; \ __di = __MPN(invert_limb) (d); \ udiv_qrnnd_preinv (q, r, n1, n0, d, __di); \ } while (0) #endif /* LONGLONG_STANDALONE */ #endif /* _CRAYIEEE */ #endif /* _CRAY */ #if defined (__hppa) && W_TYPE_SIZE == 64 #if defined (__GNUC__) #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add %4,%5,%1\n\tadd,dc %2,%3,%0" \ : "=r" (sh), "=&r" (sl) \ : "%rM" (ah), "rM" (bh), "%rM" (al), "rM" (bl)) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("sub %4,%5,%1\n\tsub,db %2,%3,%0" \ : "=r" (sh), "=&r" (sl) \ : "rM" (ah), "rM" (bh), "rM" (al), "rM" (bl)) #endif /* We put the result pointer parameter last here, since it makes passing of the other parameters more efficient. */ #ifndef LONGLONG_STANDALONE #define umul_ppmm(wh, wl, u, v) \ do { \ UWtype __p0; \ (wh) = __MPN(umul_ppmm) (u, v, &__p0); \ (wl) = __p0; \ } while (0) extern UWtype __MPN(umul_ppmm) _PROTO ((UWtype, UWtype, UWtype *)); #define udiv_qrnnd(q, r, n1, n0, d) \ do { UWtype __r; \ (q) = __MPN(udiv_qrnnd) (n1, n0, d, &__r); \ (r) = __r; \ } while (0) extern UWtype __MPN(udiv_qrnnd) _PROTO ((UWtype, UWtype, UWtype, UWtype *)); #define UMUL_TIME 8 #define UDIV_TIME 60 #endif /* LONGLONG_STANDALONE */ #endif /* hppa */ #if defined (__ia64) && W_TYPE_SIZE == 64 #if defined (__GNUC__) #define umul_ppmm(ph, pl, m0, m1) \ do { \ UDItype __m0 = (m0), __m1 = (m1); \ __asm__ ("xma.hu %0 = %1, %2, f0" \ : "=f" (ph) \ : "f" (m0), "f" (m1)); \ (pl) = __m0 * __m1; \ } while (0) #define UMUL_TIME 14 #define count_leading_zeros(count, x) \ do { \ UWtype _x = (x), _y, _a, _c; \ __asm__ ("mux1 %0 = %1, @rev" : "=r" (_y) : "r" (_x)); \ __asm__ ("czx1.l %0 = %1" : "=r" (_a) : "r" (-_y | _y)); \ _c = (_a - 1) << 3; \ _x >>= _c; \ if (_x >= 1 << 4) \ _x >>= 4, _c += 4; \ if (_x >= 1 << 2) \ _x >>= 2, _c += 2; \ _c += _x >> 1; \ (count) = W_TYPE_SIZE - 1 - _c; \ } while (0) #endif #ifndef LONGLONG_STANDALONE #define udiv_qrnnd(q, r, n1, n0, d) \ do { UWtype __di; \ __di = __MPN(invert_limb) (d); \ udiv_qrnnd_preinv (q, r, n1, n0, d, __di); \ } while (0) #define UDIV_PREINV_ALWAYS 1 #define UDIV_NEEDS_NORMALIZATION 1 #endif #define UDIV_TIME 220 #endif #if defined (__GNUC__) /* We sometimes need to clobber "cc" with gcc2, but that would not be understood by gcc1. Use cpp to avoid major code duplication. */ #if __GNUC__ < 2 #define __CLOBBER_CC #define __AND_CLOBBER_CC #else /* __GNUC__ >= 2 */ #define __CLOBBER_CC : "cc" #define __AND_CLOBBER_CC , "cc" #endif /* __GNUC__ < 2 */ #if (defined (__a29k__) || defined (_AM29K)) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add %1,%4,%5\n\taddc %0,%2,%3" \ : "=r" (sh), "=&r" (sl) \ : "%r" (ah), "rI" (bh), "%r" (al), "rI" (bl)) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("sub %1,%4,%5\n\tsubc %0,%2,%3" \ : "=r" (sh), "=&r" (sl) \ : "r" (ah), "rI" (bh), "r" (al), "rI" (bl)) #define umul_ppmm(xh, xl, m0, m1) \ do { \ USItype __m0 = (m0), __m1 = (m1); \ __asm__ ("multiplu %0,%1,%2" \ : "=r" (xl) \ : "r" (__m0), "r" (__m1)); \ __asm__ ("multmu %0,%1,%2" \ : "=r" (xh) \ : "r" (__m0), "r" (__m1)); \ } while (0) #define udiv_qrnnd(q, r, n1, n0, d) \ __asm__ ("dividu %0,%3,%4" \ : "=r" (q), "=q" (r) \ : "1" (n1), "r" (n0), "r" (d)) #define count_leading_zeros(count, x) \ __asm__ ("clz %0,%1" \ : "=r" (count) \ : "r" (x)) #define COUNT_LEADING_ZEROS_0 32 #endif /* __a29k__ */ #if defined (__arc__) #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add.f\t%1, %4, %5\n\tadc\t%0, %2, %3" \ : "=r" ((USItype) (sh)), \ "=&r" ((USItype) (sl)) \ : "%r" ((USItype) (ah)), \ "rIJ" ((USItype) (bh)), \ "%r" ((USItype) (al)), \ "rIJ" ((USItype) (bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("sub.f\t%1, %4, %5\n\tsbc\t%0, %2, %3" \ : "=r" ((USItype) (sh)), \ "=&r" ((USItype) (sl)) \ : "r" ((USItype) (ah)), \ "rIJ" ((USItype) (bh)), \ "r" ((USItype) (al)), \ "rIJ" ((USItype) (bl))) #endif #if defined (__arm__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("adds\t%1, %4, %5\n\tadc\t%0, %2, %3" \ : "=r" (sh), "=&r" (sl) \ : "%r" (ah), "rI" (bh), "%r" (al), "rI" (bl) __CLOBBER_CC) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ do { \ if (__builtin_constant_p (al)) \ { \ if (__builtin_constant_p (ah)) \ __asm__ ("rsbs\t%1, %5, %4\n\trsc\t%0, %3, %2" \ : "=r" (sh), "=&r" (sl) \ : "rI" (ah), "r" (bh), "rI" (al), "r" (bl) __CLOBBER_CC); \ else \ __asm__ ("rsbs\t%1, %5, %4\n\tsbc\t%0, %2, %3" \ : "=r" (sh), "=&r" (sl) \ : "r" (ah), "rI" (bh), "rI" (al), "r" (bl) __CLOBBER_CC); \ } \ else if (__builtin_constant_p (ah)) \ { \ if (__builtin_constant_p (bl)) \ __asm__ ("subs\t%1, %4, %5\n\trsc\t%0, %3, %2" \ : "=r" (sh), "=&r" (sl) \ : "rI" (ah), "r" (bh), "r" (al), "rI" (bl) __CLOBBER_CC); \ else \ __asm__ ("rsbs\t%1, %5, %4\n\trsc\t%0, %3, %2" \ : "=r" (sh), "=&r" (sl) \ : "rI" (ah), "r" (bh), "rI" (al), "r" (bl) __CLOBBER_CC); \ } \ else if (__builtin_constant_p (bl)) \ { \ if (__builtin_constant_p (bh)) \ __asm__ ("subs\t%1, %4, %5\n\tsbc\t%0, %2, %3" \ : "=r" (sh), "=&r" (sl) \ : "r" (ah), "rI" (bh), "r" (al), "rI" (bl) __CLOBBER_CC); \ else \ __asm__ ("subs\t%1, %4, %5\n\trsc\t%0, %3, %2" \ : "=r" (sh), "=&r" (sl) \ : "rI" (ah), "r" (bh), "r" (al), "rI" (bl) __CLOBBER_CC); \ } \ else /* only bh might be a constant */ \ __asm__ ("subs\t%1, %4, %5\n\tsbc\t%0, %2, %3" \ : "=r" (sh), "=&r" (sl) \ : "r" (ah), "rI" (bh), "r" (al), "rI" (bl) __CLOBBER_CC);\ } while (0) #if 1 || defined (__arm_m__) /* `M' series has widening multiply support */ #define umul_ppmm(xh, xl, a, b) \ __asm__ ("umull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b)) #define UMUL_TIME 5 #define smul_ppmm(xh, xl, a, b) \ __asm__ ("smull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b)) #ifndef LONGLONG_STANDALONE #define udiv_qrnnd(q, r, n1, n0, d) \ do { UWtype __di; \ __di = __MPN(invert_limb) (d); \ udiv_qrnnd_preinv (q, r, n1, n0, d, __di); \ } while (0) #define UDIV_PREINV_ALWAYS 1 #define UDIV_NEEDS_NORMALIZATION 1 #define UDIV_TIME 70 #endif /* LONGLONG_STANDALONE */ #else #define umul_ppmm(xh, xl, a, b) \ __asm__ ("%@ Inlined umul_ppmm\n" \ " mov %|r0, %2, lsr #16\n" \ " mov %|r2, %3, lsr #16\n" \ " bic %|r1, %2, %|r0, lsl #16\n" \ " bic %|r2, %3, %|r2, lsl #16\n" \ " mul %1, %|r1, %|r2\n" \ " mul %|r2, %|r0, %|r2\n" \ " mul %|r1, %0, %|r1\n" \ " mul %0, %|r0, %0\n" \ " adds %|r1, %|r2, %|r1\n" \ " addcs %0, %0, #65536\n" \ " adds %1, %1, %|r1, lsl #16\n" \ " adc %0, %0, %|r1, lsr #16" \ : "=&r" (xh), "=r" (xl) \ : "r" (a), "r" (b) \ : "r0", "r1", "r2") #define UMUL_TIME 20 #ifndef LONGLONG_STANDALONE #define udiv_qrnnd(q, r, n1, n0, d) \ do { UWtype __r; \ (q) = __MPN(udiv_qrnnd) (&__r, (n1), (n0), (d)); \ (r) = __r; \ } while (0) extern UWtype __MPN(udiv_qrnnd) _PROTO ((UWtype *, UWtype, UWtype, UWtype)); #define UDIV_TIME 200 #endif /* LONGLONG_STANDALONE */ #endif #endif /* __arm__ */ #if defined (__clipper__) && W_TYPE_SIZE == 32 #define umul_ppmm(w1, w0, u, v) \ ({union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __x; \ __asm__ ("mulwux %2,%0" \ : "=r" (__x.__ll) \ : "%0" ((USItype)(u)), "r" ((USItype)(v))); \ (w1) = __x.__i.__h; (w0) = __x.__i.__l;}) #define smul_ppmm(w1, w0, u, v) \ ({union {DItype __ll; \ struct {SItype __l, __h;} __i; \ } __x; \ __asm__ ("mulwx %2,%0" \ : "=r" (__x.__ll) \ : "%0" ((SItype)(u)), "r" ((SItype)(v))); \ (w1) = __x.__i.__h; (w0) = __x.__i.__l;}) #define __umulsidi3(u, v) \ ({UDItype __w; \ __asm__ ("mulwux %2,%0" \ : "=r" (__w) : "%0" ((USItype)(u)), "r" ((USItype)(v))); \ __w; }) #endif /* __clipper__ */ /* Fujitsu vector computers. */ #if defined (__uxp__) && W_TYPE_SIZE == 32 #define umul_ppmm(ph, pl, u, v) \ do { \ union {UDItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __asm__ ("mult.lu %1,%2,%0" : "=r" (__x.__ll) : "%r" (u), "rK" (v));\ (ph) = __x.__i.__h; \ (pl) = __x.__i.__l; \ } while (0) #define smul_ppmm(ph, pl, u, v) \ do { \ union {UDItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __asm__ ("mult.l %1,%2,%0" : "=r" (__x.__ll) : "%r" (u), "rK" (v)); \ (ph) = __x.__i.__h; \ (pl) = __x.__i.__l; \ } while (0) #endif #if defined (__gmicro__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add.w %5,%1\n\taddx %3,%0" \ : "=g" ((USItype)(sh)), "=&g" ((USItype)(sl)) \ : "%0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "%1" ((USItype)(al)), "g" ((USItype)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("sub.w %5,%1\n\tsubx %3,%0" \ : "=g" ((USItype)(sh)), "=&g" ((USItype)(sl)) \ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "1" ((USItype)(al)), "g" ((USItype)(bl))) #define umul_ppmm(ph, pl, m0, m1) \ __asm__ ("mulx %3,%0,%1" \ : "=g" ((USItype)(ph)), "=r" ((USItype)(pl)) \ : "%0" ((USItype)(m0)), "g" ((USItype)(m1))) #define udiv_qrnnd(q, r, nh, nl, d) \ __asm__ ("divx %4,%0,%1" \ : "=g" ((USItype)(q)), "=r" ((USItype)(r)) \ : "1" ((USItype)(nh)), "0" ((USItype)(nl)), "g" ((USItype)(d))) #define count_leading_zeros(count, x) \ __asm__ ("bsch/1 %1,%0" \ : "=g" (count) : "g" ((USItype)(x)), "0" ((USItype)0)) #endif #if defined (__hppa) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add %4,%5,%1\n\taddc %2,%3,%0" \ : "=r" (sh), "=&r" (sl) \ : "%rM" (ah), "rM" (bh), "%rM" (al), "rM" (bl)) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("sub %4,%5,%1\n\tsubb %2,%3,%0" \ : "=r" (sh), "=&r" (sl) \ : "rM" (ah), "rM" (bh), "rM" (al), "rM" (bl)) #if defined (_PA_RISC1_1) #define umul_ppmm(wh, wl, u, v) \ do { \ union {UDItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __asm__ ("xmpyu %1,%2,%0" : "=*f" (__x.__ll) : "*f" (u), "*f" (v)); \ (wh) = __x.__i.__h; \ (wl) = __x.__i.__l; \ } while (0) #define UMUL_TIME 8 #define UDIV_TIME 60 #else #define UMUL_TIME 40 #define UDIV_TIME 80 #endif #ifndef LONGLONG_STANDALONE #define udiv_qrnnd(q, r, n1, n0, d) \ do { UWtype __r; \ (q) = __MPN(udiv_qrnnd) (&__r, (n1), (n0), (d)); \ (r) = __r; \ } while (0) extern UWtype __MPN(udiv_qrnnd) _PROTO ((UWtype *, UWtype, UWtype, UWtype)); #endif /* LONGLONG_STANDALONE */ #define count_leading_zeros(count, x) \ do { \ USItype __tmp; \ __asm__ ( \ "ldi 1,%0\n" \ " extru,= %1,15,16,%%r0 ; Bits 31..16 zero?\n" \ " extru,tr %1,15,16,%1 ; No. Shift down, skip add.\n" \ " ldo 16(%0),%0 ; Yes. Perform add.\n" \ " extru,= %1,23,8,%%r0 ; Bits 15..8 zero?\n" \ " extru,tr %1,23,8,%1 ; No. Shift down, skip add.\n" \ " ldo 8(%0),%0 ; Yes. Perform add.\n" \ " extru,= %1,27,4,%%r0 ; Bits 7..4 zero?\n" \ " extru,tr %1,27,4,%1 ; No. Shift down, skip add.\n" \ " ldo 4(%0),%0 ; Yes. Perform add.\n" \ " extru,= %1,29,2,%%r0 ; Bits 3..2 zero?\n" \ " extru,tr %1,29,2,%1 ; No. Shift down, skip add.\n" \ " ldo 2(%0),%0 ; Yes. Perform add.\n" \ " extru %1,30,1,%1 ; Extract bit 1.\n" \ " sub %0,%1,%0 ; Subtract it.\n" \ : "=r" (count), "=r" (__tmp) : "1" (x)); \ } while (0) #endif /* hppa */ #if (defined (__i370__) || defined (__s390__) || defined (__mvs__)) && W_TYPE_SIZE == 32 #define smul_ppmm(xh, xl, m0, m1) \ do { \ union {DItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __asm__ ("lr %N0,%1\n\tmr %0,%2" \ : "=&r" (__x.__ll) \ : "r" (m0), "r" (m1)); \ (xh) = __x.__i.__h; (xl) = __x.__i.__l; \ } while (0) #define sdiv_qrnnd(q, r, n1, n0, d) \ do { \ union {DItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __x.__i.__h = n1; __x.__i.__l = n0; \ __asm__ ("dr %0,%2" \ : "=r" (__x.__ll) \ : "0" (__x.__ll), "r" (d)); \ (q) = __x.__i.__l; (r) = __x.__i.__h; \ } while (0) #endif #if (defined (__i386__) || defined (__i486__)) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("addl %5,%1\n\tadcl %3,%0" \ : "=r" ((USItype)(sh)), "=&r" ((USItype)(sl)) \ : "%0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "%1" ((USItype)(al)), "g" ((USItype)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("subl %5,%1\n\tsbbl %3,%0" \ : "=r" ((USItype)(sh)), "=&r" ((USItype)(sl)) \ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "1" ((USItype)(al)), "g" ((USItype)(bl))) #define umul_ppmm(w1, w0, u, v) \ __asm__ ("mull %3" \ : "=a" (w0), "=d" (w1) \ : "%0" ((USItype)(u)), "rm" ((USItype)(v))) #define udiv_qrnnd(q, r, n1, n0, dx) /* d renamed to dx avoiding "=d" */\ __asm__ ("divl %4" /* stringification in K&R C */ \ : "=a" (q), "=d" (r) \ : "0" ((USItype)(n0)), "1" ((USItype)(n1)), "rm" ((USItype)(dx))) /* P5 bsrl takes between 10 and 72 cycles depending where the most significant 1 bit is, hence the use of the alternatives below. bsfl is slow too, between 18 and 42 depending where the least significant 1 bit is. The faster count_leading_zeros are pressed into service via the generic count_trailing_zeros at the end of the file. */ #if HAVE_HOST_CPU_i586 || HAVE_HOST_CPU_pentium /* The following should be a fixed 14 cycles or so. Some scheduling opportunities should be available between the float load/store too. This is used (with "n&-n" to get trailing zeros) in gcc 3 for __builtin_ffs and is apparently suggested by the Intel optimizing manual (don't know exactly where). gcc 2.95 or up will be best for this, so the "double" is correctly aligned on the stack. */ #define count_leading_zeros(c,n) \ do { \ union { \ double d; \ unsigned a[2]; \ } __u; \ ASSERT ((n) != 0); \ __u.d = (UWtype) (n); \ (c) = 0x3FF + 31 - (__u.a[1] >> 20); \ } while (0) #define COUNT_LEADING_ZEROS_0 (0x3FF + 31) #else /* ! pentium */ #if HAVE_HOST_CPU_pentiummmx /* The following should be a fixed 14 or 15 cycles, but possibly plus an L1 cache miss reading from __clz_tab. It's favoured over the float above so as to avoid mixing MMX and x87, since the penalty for switching between the two is about 100 cycles. The asm block sets __shift to -3 if the high 24 bits are clear, -2 for 16, -1 for 8, or 0 otherwise. This could be written equivalently as follows, but as of gcc 2.95.2 it results in conditional jumps. __shift = -(__n < 0x1000000); __shift -= (__n < 0x10000); __shift -= (__n < 0x100); The middle two sbbl and cmpl's pair, and with luck something gcc generates might pair with the first cmpl and the last sbbl. The "32+1" constant could be folded into __clz_tab[], but it doesn't seem worth making a different table just for that. */ #define count_leading_zeros(c,n) \ do { \ USItype __n = (n); \ USItype __shift; \ __asm__ ("cmpl $0x1000000, %1\n" \ "sbbl %0, %0\n" \ "cmpl $0x10000, %1\n" \ "sbbl $0, %0\n" \ "cmpl $0x100, %1\n" \ "sbbl $0, %0\n" \ : "=&r" (__shift) : "r" (__n)); \ __shift = __shift*8 + 24 + 1; \ (c) = 32 + 1 - __shift - __clz_tab[__n >> __shift]; \ } while (0) #define COUNT_LEADING_ZEROS_NEED_CLZ_TAB #define COUNT_LEADING_ZEROS_0 31 /* n==0 indistinguishable from n==1 */ #else /* !pentiummmx */ /* On P6, gcc prior to 3.0 generates a partial register stall for __cbtmp^31, due to using "xorb $31" instead of "xorl $31", the former being 1 code byte smaller. "31-__cbtmp" is a workaround, probably at the cost of one extra instruction. Do this for "i386" too, since that means generic x86. */ #if __GNUC__ < 3 \ && (HAVE_HOST_CPU_i386 || HAVE_HOST_CPU_pentiumpro \ || HAVE_HOST_CPU_pentium2 || HAVE_HOST_CPU_pentium3) #define count_leading_zeros(count, x) \ do { \ USItype __cbtmp; \ ASSERT ((x) != 0); \ __asm__ ("bsrl %1,%0" : "=r" (__cbtmp) : "rm" ((USItype)(x))); \ (count) = 31 - __cbtmp; \ } while (0) #else #define count_leading_zeros(count, x) \ do { \ USItype __cbtmp; \ ASSERT ((x) != 0); \ __asm__ ("bsrl %1,%0" : "=r" (__cbtmp) : "rm" ((USItype)(x))); \ (count) = __cbtmp ^ 31; \ } while (0) #endif #define count_trailing_zeros(count, x) \ do { \ ASSERT ((x) != 0); \ __asm__ ("bsfl %1,%0" : "=r" (count) : "rm" ((USItype)(x))); \ } while (0) #endif /* ! pentiummmx */ #endif /* ! pentium */ #ifndef UMUL_TIME #define UMUL_TIME 10 #endif #ifndef UDIV_TIME #define UDIV_TIME 40 #endif #endif /* 80x86 */ #if defined (__i860__) && W_TYPE_SIZE == 32 #define rshift_rhlc(r,h,l,c) \ __asm__ ("shr %3,r0,r0\;shrd %1,%2,%0" \ "=r" (r) : "r" (h), "r" (l), "rn" (c)) #endif /* i860 */ #if defined (__i960__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("cmpo 1,0\;addc %5,%4,%1\;addc %3,%2,%0" \ : "=r" (sh), "=&r" (sl) \ : "%dI" (ah), "dI" (bh), "%dI" (al), "dI" (bl)) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("cmpo 0,0\;subc %5,%4,%1\;subc %3,%2,%0" \ : "=r" (sh), "=&r" (sl) \ : "dI" (ah), "dI" (bh), "dI" (al), "dI" (bl)) #define umul_ppmm(w1, w0, u, v) \ ({union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __x; \ __asm__ ("emul %2,%1,%0" \ : "=d" (__x.__ll) : "%dI" (u), "dI" (v)); \ (w1) = __x.__i.__h; (w0) = __x.__i.__l;}) #define __umulsidi3(u, v) \ ({UDItype __w; \ __asm__ ("emul %2,%1,%0" : "=d" (__w) : "%dI" (u), "dI" (v)); \ __w; }) #define udiv_qrnnd(q, r, nh, nl, d) \ do { \ union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __nn; \ __nn.__i.__h = (nh); __nn.__i.__l = (nl); \ __asm__ ("ediv %d,%n,%0" \ : "=d" (__rq.__ll) : "dI" (__nn.__ll), "dI" (d)); \ (r) = __rq.__i.__l; (q) = __rq.__i.__h; \ } while (0) #define count_leading_zeros(count, x) \ do { \ USItype __cbtmp; \ __asm__ ("scanbit %1,%0" : "=r" (__cbtmp) : "r" (x)); \ (count) = __cbtmp ^ 31; \ } while (0) #define COUNT_LEADING_ZEROS_0 (-32) /* sic */ #if defined (__i960mx) /* what is the proper symbol to test??? */ #define rshift_rhlc(r,h,l,c) \ do { \ union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __nn; \ __nn.__i.__h = (h); __nn.__i.__l = (l); \ __asm__ ("shre %2,%1,%0" : "=d" (r) : "dI" (__nn.__ll), "dI" (c)); \ } #endif /* i960mx */ #endif /* i960 */ #if (defined (__mc68000__) || defined (__mc68020__) || defined(mc68020) \ || defined (__m68k__) || defined (__mc5200__) || defined (__mc5206e__) \ || defined (__mc5307__)) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add%.l %5,%1\n\taddx%.l %3,%0" \ : "=d" ((USItype)(sh)), "=&d" ((USItype)(sl)) \ : "%0" ((USItype)(ah)), "d" ((USItype)(bh)), \ "%1" ((USItype)(al)), "g" ((USItype)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("sub%.l %5,%1\n\tsubx%.l %3,%0" \ : "=d" ((USItype)(sh)), "=&d" ((USItype)(sl)) \ : "0" ((USItype)(ah)), "d" ((USItype)(bh)), \ "1" ((USItype)(al)), "g" ((USItype)(bl))) /* The '020, '030, '040 and CPU32 have 32x32->64 and 64/32->32q-32r. */ #if defined (__mc68020__) || defined(mc68020) \ || defined (__mc68030__) || defined (mc68030) \ || defined (__mc68040__) || defined (mc68040) \ || defined (__mcpu32__) || defined (mcpu32) \ || defined (__NeXT__) #define umul_ppmm(w1, w0, u, v) \ __asm__ ("mulu%.l %3,%1:%0" \ : "=d" ((USItype)(w0)), "=d" ((USItype)(w1)) \ : "%0" ((USItype)(u)), "dmi" ((USItype)(v))) #define UMUL_TIME 45 #define udiv_qrnnd(q, r, n1, n0, d) \ __asm__ ("divu%.l %4,%1:%0" \ : "=d" ((USItype)(q)), "=d" ((USItype)(r)) \ : "0" ((USItype)(n0)), "1" ((USItype)(n1)), "dmi" ((USItype)(d))) #define UDIV_TIME 90 #define sdiv_qrnnd(q, r, n1, n0, d) \ __asm__ ("divs%.l %4,%1:%0" \ : "=d" ((USItype)(q)), "=d" ((USItype)(r)) \ : "0" ((USItype)(n0)), "1" ((USItype)(n1)), "dmi" ((USItype)(d))) #else /* for other 68k family members use 16x16->32 multiplication */ #define umul_ppmm(xh, xl, a, b) \ do { USItype __umul_tmp1, __umul_tmp2; \ __asm__ ("| Inlined umul_ppmm\n" \ " move%.l %5,%3\n" \ " move%.l %2,%0\n" \ " move%.w %3,%1\n" \ " swap %3\n" \ " swap %0\n" \ " mulu%.w %2,%1\n" \ " mulu%.w %3,%0\n" \ " mulu%.w %2,%3\n" \ " swap %2\n" \ " mulu%.w %5,%2\n" \ " add%.l %3,%2\n" \ " jcc 1f\n" \ " add%.l %#0x10000,%0\n" \ "1: move%.l %2,%3\n" \ " clr%.w %2\n" \ " swap %2\n" \ " swap %3\n" \ " clr%.w %3\n" \ " add%.l %3,%1\n" \ " addx%.l %2,%0\n" \ " | End inlined umul_ppmm" \ : "=&d" ((USItype)(xh)), "=&d" ((USItype)(xl)), \ "=d" (__umul_tmp1), "=&d" (__umul_tmp2) \ : "%2" ((USItype)(a)), "d" ((USItype)(b))); \ } while (0) #define UMUL_TIME 100 #define UDIV_TIME 400 #endif /* not mc68020 */ /* The '020, '030, '040 and '060 have bitfield insns. */ #if defined (__mc68020__) || defined (mc68020) \ || defined (__mc68030__) || defined (mc68030) \ || defined (__mc68040__) || defined (mc68040) \ || defined (__mc68060__) || defined (mc68060) \ || defined (__NeXT__) #define count_leading_zeros(count, x) \ __asm__ ("bfffo %1{%b2:%b2},%0" \ : "=d" ((USItype) (count)) \ : "od" ((USItype) (x)), "n" (0)) #define COUNT_LEADING_ZEROS_0 32 #endif #endif /* mc68000 */ #if defined (__m88000__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("addu.co %1,%r4,%r5\n\taddu.ci %0,%r2,%r3" \ : "=r" (sh), "=&r" (sl) \ : "%rJ" (ah), "rJ" (bh), "%rJ" (al), "rJ" (bl)) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("subu.co %1,%r4,%r5\n\tsubu.ci %0,%r2,%r3" \ : "=r" (sh), "=&r" (sl) \ : "rJ" (ah), "rJ" (bh), "rJ" (al), "rJ" (bl)) #define count_leading_zeros(count, x) \ do { \ USItype __cbtmp; \ __asm__ ("ff1 %0,%1" : "=r" (__cbtmp) : "r" (x)); \ (count) = __cbtmp ^ 31; \ } while (0) #define COUNT_LEADING_ZEROS_0 63 /* sic */ #if defined (__m88110__) #define umul_ppmm(wh, wl, u, v) \ do { \ union {UDItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __asm__ ("mulu.d %0,%1,%2" : "=r" (__x.__ll) : "r" (u), "r" (v)); \ (wh) = __x.__i.__h; \ (wl) = __x.__i.__l; \ } while (0) #define udiv_qrnnd(q, r, n1, n0, d) \ ({union {UDItype __ll; \ struct {USItype __h, __l;} __i; \ } __x, __q; \ __x.__i.__h = (n1); __x.__i.__l = (n0); \ __asm__ ("divu.d %0,%1,%2" \ : "=r" (__q.__ll) : "r" (__x.__ll), "r" (d)); \ (r) = (n0) - __q.__l * (d); (q) = __q.__l; }) #define UMUL_TIME 5 #define UDIV_TIME 25 #else #define UMUL_TIME 17 #define UDIV_TIME 150 #endif /* __m88110__ */ #endif /* __m88000__ */ #if defined (__mips) && W_TYPE_SIZE == 32 #if __GNUC__ > 2 || __GNUC_MINOR__ >= 7 #define umul_ppmm(w1, w0, u, v) \ __asm__ ("multu %2,%3" : "=l" (w0), "=h" (w1) : "d" (u), "d" (v)) #else #define umul_ppmm(w1, w0, u, v) \ __asm__ ("multu %2,%3\n\tmflo %0\n\tmfhi %1" \ : "=d" (w0), "=d" (w1) : "d" (u), "d" (v)) #endif #define UMUL_TIME 10 #define UDIV_TIME 100 #endif /* __mips */ #if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64 #if __GNUC__ > 2 || __GNUC_MINOR__ >= 7 #define umul_ppmm(w1, w0, u, v) \ __asm__ ("dmultu %2,%3" : "=l" (w0), "=h" (w1) : "d" (u), "d" (v)) #else #define umul_ppmm(w1, w0, u, v) \ __asm__ ("dmultu %2,%3\n\tmflo %0\n\tmfhi %1" \ : "=d" (w0), "=d" (w1) : "d" (u), "d" (v)) #endif #define UMUL_TIME 20 #define UDIV_TIME 140 #endif /* __mips */ #if defined (__ns32000__) && W_TYPE_SIZE == 32 #define umul_ppmm(w1, w0, u, v) \ ({union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __x; \ __asm__ ("meid %2,%0" \ : "=g" (__x.__ll) \ : "%0" ((USItype)(u)), "g" ((USItype)(v))); \ (w1) = __x.__i.__h; (w0) = __x.__i.__l;}) #define __umulsidi3(u, v) \ ({UDItype __w; \ __asm__ ("meid %2,%0" \ : "=g" (__w) \ : "%0" ((USItype)(u)), "g" ((USItype)(v))); \ __w; }) #define udiv_qrnnd(q, r, n1, n0, d) \ ({union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __x; \ __x.__i.__h = (n1); __x.__i.__l = (n0); \ __asm__ ("deid %2,%0" \ : "=g" (__x.__ll) \ : "0" (__x.__ll), "g" ((USItype)(d))); \ (r) = __x.__i.__l; (q) = __x.__i.__h; }) #define count_trailing_zeros(count,x) \ do { \ __asm__ ("ffsd %2,%0" \ : "=r" ((USItype) (count)) \ : "0" ((USItype) 0), "r" ((USItype) (x))); \ } while (0) #endif /* __ns32000__ */ /* FIXME: We should test _IBMR2 here when we add assembly support for the system vendor compilers. */ #if (defined (_ARCH_PPC) /* AIX */ \ || defined (_ARCH_PWR) /* AIX */ \ || defined (__powerpc__) /* gcc */ \ || defined (__POWERPC__) /* BEOS */ \ || defined (__ppc__) /* Darwin */ \ || defined (PPC) /* GNU/Linux, SysV */ \ || defined (__vxworks__) /* VxWorks */ \ ) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ do { \ if (__builtin_constant_p (bh) && (bh) == 0) \ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2" \ : "=r" (sh), "=&r" (sl) : "%r" (ah), "%r" (al), "rI" (bl));\ else if (__builtin_constant_p (bh) && (bh) == ~(USItype) 0) \ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2" \ : "=r" (sh), "=&r" (sl) : "%r" (ah), "%r" (al), "rI" (bl));\ else \ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3" \ : "=r" (sh), "=&r" (sl) \ : "%r" (ah), "r" (bh), "%r" (al), "rI" (bl)); \ } while (0) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ do { \ if (__builtin_constant_p (ah) && (ah) == 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\ else if (__builtin_constant_p (ah) && (ah) == ~(USItype) 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\ else if (__builtin_constant_p (bh) && (bh) == 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\ else if (__builtin_constant_p (bh) && (bh) == ~(USItype) 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\ else \ __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2" \ : "=r" (sh), "=&r" (sl) \ : "r" (ah), "r" (bh), "rI" (al), "r" (bl)); \ } while (0) #define count_leading_zeros(count, x) \ __asm__ ("{cntlz|cntlzw} %0,%1" : "=r" (count) : "r" (x)) #define COUNT_LEADING_ZEROS_0 32 #if defined (_ARCH_PPC) || defined (__powerpc__) || defined (__POWERPC__) \ || defined (__ppc__) || defined (PPC) || defined (__vxworks__) #define umul_ppmm(ph, pl, m0, m1) \ do { \ USItype __m0 = (m0), __m1 = (m1); \ __asm__ ("mulhwu %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \ (pl) = __m0 * __m1; \ } while (0) #define UMUL_TIME 15 #define smul_ppmm(ph, pl, m0, m1) \ do { \ SItype __m0 = (m0), __m1 = (m1); \ __asm__ ("mulhw %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \ (pl) = __m0 * __m1; \ } while (0) #define SMUL_TIME 14 #define UDIV_TIME 120 #else #define UMUL_TIME 8 #define smul_ppmm(xh, xl, m0, m1) \ __asm__ ("mul %0,%2,%3" : "=r" (xh), "=q" (xl) : "r" (m0), "r" (m1)) #define SMUL_TIME 4 #define sdiv_qrnnd(q, r, nh, nl, d) \ __asm__ ("div %0,%2,%4" : "=r" (q), "=q" (r) : "r" (nh), "1" (nl), "r" (d)) #define UDIV_TIME 100 #endif #endif /* 32-bit POWER architecture variants. */ /* We should test _IBMR2 here when we add assembly support for the system vendor compilers. */ #if (defined (_ARCH_PPC) || defined (__powerpc__)) && W_TYPE_SIZE == 64 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ do { \ if (__builtin_constant_p (bh) && (bh) == 0) \ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2" \ : "=r" (sh), "=&r" (sl) : "%r" (ah), "%r" (al), "rI" (bl));\ else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2" \ : "=r" (sh), "=&r" (sl) : "%r" (ah), "%r" (al), "rI" (bl));\ else \ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3" \ : "=r" (sh), "=&r" (sl) \ : "%r" (ah), "r" (bh), "%r" (al), "rI" (bl)); \ } while (0) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ do { \ if (__builtin_constant_p (ah) && (ah) == 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\ else if (__builtin_constant_p (ah) && (ah) == ~(UDItype) 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\ else if (__builtin_constant_p (bh) && (bh) == 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\ else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2" \ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\ else \ __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2" \ : "=r" (sh), "=&r" (sl) \ : "r" (ah), "r" (bh), "rI" (al), "r" (bl)); \ } while (0) #define count_leading_zeros(count, x) \ __asm__ ("cntlzd %0,%1" : "=r" (count) : "r" (x)) #define COUNT_LEADING_ZEROS_0 64 #define umul_ppmm(ph, pl, m0, m1) \ do { \ UDItype __m0 = (m0), __m1 = (m1); \ __asm__ ("mulhdu %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \ (pl) = __m0 * __m1; \ } while (0) #define UMUL_TIME 15 #define smul_ppmm(ph, pl, m0, m1) \ do { \ DItype __m0 = (m0), __m1 = (m1); \ __asm__ ("mulhd %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \ (pl) = __m0 * __m1; \ } while (0) #define SMUL_TIME 14 /* ??? */ #define UDIV_TIME 120 /* ??? */ #endif /* 64-bit PowerPC. */ #if defined (__pyr__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("addw %5,%1\n\taddwc %3,%0" \ : "=r" ((USItype)(sh)), "=&r" ((USItype)(sl)) \ : "%0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "%1" ((USItype)(al)), "g" ((USItype)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("subw %5,%1\n\tsubwb %3,%0" \ : "=r" ((USItype)(sh)), "=&r" ((USItype)(sl)) \ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "1" ((USItype)(al)), "g" ((USItype)(bl))) /* This insn works on Pyramids with AP, XP, or MI CPUs, but not with SP. */ #define umul_ppmm(w1, w0, u, v) \ ({union {UDItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ __asm__ ("movw %1,%R0\n\tuemul %2,%0" \ : "=&r" (__x.__ll) \ : "g" ((USItype) (u)), "g" ((USItype)(v))); \ (w1) = __x.__i.__h; (w0) = __x.__i.__l;}) #endif /* __pyr__ */ #if defined (__ibm032__) /* RT/ROMP */ && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("a %1,%5\n\tae %0,%3" \ : "=r" ((USItype)(sh)), "=&r" ((USItype)(sl)) \ : "%0" ((USItype)(ah)), "r" ((USItype)(bh)), \ "%1" ((USItype)(al)), "r" ((USItype)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("s %1,%5\n\tse %0,%3" \ : "=r" ((USItype)(sh)), "=&r" ((USItype)(sl)) \ : "0" ((USItype)(ah)), "r" ((USItype)(bh)), \ "1" ((USItype)(al)), "r" ((USItype)(bl))) #define smul_ppmm(ph, pl, m0, m1) \ __asm__ ( \ "s r2,r2\n" \ " mts r10,%2\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " m r2,%3\n" \ " cas %0,r2,r0\n" \ " mfs r10,%1" \ : "=r" ((USItype)(ph)), "=r" ((USItype)(pl)) \ : "%r" ((USItype)(m0)), "r" ((USItype)(m1)) \ : "r2") #define UMUL_TIME 20 #define UDIV_TIME 200 #define count_leading_zeros(count, x) \ do { \ if ((x) >= 0x10000) \ __asm__ ("clz %0,%1" \ : "=r" ((USItype)(count)) : "r" ((USItype)(x) >> 16)); \ else \ { \ __asm__ ("clz %0,%1" \ : "=r" ((USItype)(count)) : "r" ((USItype)(x))); \ (count) += 16; \ } \ } while (0) #endif /* RT/ROMP */ #if defined (__sh2__) && W_TYPE_SIZE == 32 #define umul_ppmm(w1, w0, u, v) \ __asm__ ("dmulu.l %2,%3\n\tsts macl,%1\n\tsts mach,%0" \ : "=r" (w1), "=r" (w0) : "r" (u), "r" (v) : "macl", "mach") #define UMUL_TIME 5 #endif #if defined (__sparc__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("addcc %r4,%5,%1\n\taddx %r2,%3,%0" \ : "=r" (sh), "=&r" (sl) \ : "%rJ" (ah), "rI" (bh),"%rJ" (al), "rI" (bl) \ __CLOBBER_CC) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("subcc %r4,%5,%1\n\tsubx %r2,%3,%0" \ : "=r" (sh), "=&r" (sl) \ : "rJ" (ah), "rI" (bh), "rJ" (al), "rI" (bl) \ __CLOBBER_CC) /* FIXME: When gcc -mcpu=v9 is used on solaris, gcc/config/sol2-sld-64.h doesn't define anything to indicate that to us, it only sets __sparcv8. */ #if defined (__sparc_v9__) || defined (__sparcv9) /* Perhaps we should use floating-point operations here? */ #if 0 /* Triggers a bug making mpz/tests/t-gcd.c fail. Perhaps we simply need explicitly zero-extend the inputs? */ #define umul_ppmm(w1, w0, u, v) \ __asm__ ("mulx %2,%3,%%g1; srl %%g1,0,%1; srlx %%g1,32,%0" : \ "=r" (w1), "=r" (w0) : "r" (u), "r" (v) : "g1") #else /* Use v8 umul until above bug is fixed. */ #define umul_ppmm(w1, w0, u, v) \ __asm__ ("umul %2,%3,%1;rd %%y,%0" : "=r" (w1), "=r" (w0) : "r" (u), "r" (v)) #endif /* Use a plain v8 divide for v9. */ #define udiv_qrnnd(q, r, n1, n0, d) \ do { \ USItype __q; \ __asm__ ("mov %1,%%y;nop;nop;nop;udiv %2,%3,%0" \ : "=r" (__q) : "r" (n1), "r" (n0), "r" (d)); \ (r) = (n0) - __q * (d); \ (q) = __q; \ } while (0) #else #if defined (__sparc_v8__) /* gcc normal */ \ || defined (__sparcv8) /* gcc solaris */ /* Don't match immediate range because, 1) it is not often useful, 2) the 'I' flag thinks of the range as a 13 bit signed interval, while we want to match a 13 bit interval, sign extended to 32 bits, but INTERPRETED AS UNSIGNED. */ #define umul_ppmm(w1, w0, u, v) \ __asm__ ("umul %2,%3,%1;rd %%y,%0" : "=r" (w1), "=r" (w0) : "r" (u), "r" (v)) #define UMUL_TIME 5 #if HAVE_HOST_CPU_supersparc #define UDIV_TIME 60 /* SuperSPARC timing */ #else /* Don't use this on SuperSPARC because its udiv only handles 53 bit dividends and will trap to the kernel for the rest. */ #define udiv_qrnnd(q, r, n1, n0, d) \ do { \ USItype __q; \ __asm__ ("mov %1,%%y;nop;nop;nop;udiv %2,%3,%0" \ : "=r" (__q) : "r" (n1), "r" (n0), "r" (d)); \ (r) = (n0) - __q * (d); \ (q) = __q; \ } while (0) #define UDIV_TIME 25 #endif /* HAVE_HOST_CPU_supersparc */ #else /* ! __sparc_v8__ */ #if defined (__sparclite__) /* This has hardware multiply but not divide. It also has two additional instructions scan (ffs from high bit) and divscc. */ #define umul_ppmm(w1, w0, u, v) \ __asm__ ("umul %2,%3,%1;rd %%y,%0" : "=r" (w1), "=r" (w0) : "r" (u), "r" (v)) #define UMUL_TIME 5 #define udiv_qrnnd(q, r, n1, n0, d) \ __asm__ ("! Inlined udiv_qrnnd\n" \ " wr %%g0,%2,%%y ! Not a delayed write for sparclite\n" \ " tst %%g0\n" \ " divscc %3,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%%g1\n" \ " divscc %%g1,%4,%0\n" \ " rd %%y,%1\n" \ " bl,a 1f\n" \ " add %1,%4,%1\n" \ "1: ! End of inline udiv_qrnnd" \ : "=r" (q), "=r" (r) : "r" (n1), "r" (n0), "rI" (d) \ : "%g1" __AND_CLOBBER_CC) #define UDIV_TIME 37 #define count_leading_zeros(count, x) \ __asm__ ("scan %1,1,%0" : "=r" (x) : "r" (count)) /* Early sparclites return 63 for an argument of 0, but they warn that future implementations might change this. Therefore, leave COUNT_LEADING_ZEROS_0 undefined. */ #endif /* __sparclite__ */ #endif /* __sparc_v8__ */ #endif /* __sparc_v9__ */ /* Default to sparc v7 versions of umul_ppmm and udiv_qrnnd. */ #ifndef umul_ppmm #define umul_ppmm(w1, w0, u, v) \ __asm__ ("! Inlined umul_ppmm\n" \ " wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr\n" \ " sra %3,31,%%g2 ! Don't move this insn\n" \ " and %2,%%g2,%%g2 ! Don't move this insn\n" \ " andcc %%g0,0,%%g1 ! Don't move this insn\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,%3,%%g1\n" \ " mulscc %%g1,0,%%g1\n" \ " add %%g1,%%g2,%0\n" \ " rd %%y,%1" \ : "=r" (w1), "=r" (w0) : "%rI" (u), "r" (v) \ : "%g1", "%g2" __AND_CLOBBER_CC) #define UMUL_TIME 39 /* 39 instructions */ #endif #ifndef udiv_qrnnd #ifndef LONGLONG_STANDALONE #define udiv_qrnnd(q, r, n1, n0, d) \ do { UWtype __r; \ (q) = __MPN(udiv_qrnnd) (&__r, (n1), (n0), (d)); \ (r) = __r; \ } while (0) extern UWtype __MPN(udiv_qrnnd) _PROTO ((UWtype *, UWtype, UWtype, UWtype)); #ifndef UDIV_TIME #define UDIV_TIME 140 #endif #endif /* LONGLONG_STANDALONE */ #endif /* udiv_qrnnd */ #endif /* __sparc__ */ #if defined (__sparc__) && W_TYPE_SIZE == 64 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ( \ "addcc %4,%5,%1\n" \ " addccc %6,%7,%%g0\n" \ " addc %2,%3,%0" \ : "=r" (sh), "=&r" (sl) \ : "%rJ" (ah), "rI" (bh), "%rJ" (al), "rI" (bl), \ "rJ" ((al) >> 32), "rJ" ((bl) >> 32) \ __CLOBBER_CC) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ( \ "subcc %4,%5,%1\n" \ " subccc %6,%7,%%g0\n" \ " subc %2,%3,%0" \ : "=r" (sh), "=&r" (sl) \ : "%rJ" (ah), "rI" (bh), "%rJ" (al), "rI" (bl), \ "rJ" ((al) >> 32), "rJ" ((bl) >> 32) \ __CLOBBER_CC) #endif #if defined (__vax__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("addl2 %5,%1\n\tadwc %3,%0" \ : "=g" ((USItype)(sh)), "=&g" ((USItype)(sl)) \ : "%0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "%1" ((USItype)(al)), "g" ((USItype)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("subl2 %5,%1\n\tsbwc %3,%0" \ : "=g" ((USItype)(sh)), "=&g" ((USItype)(sl)) \ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \ "1" ((USItype)(al)), "g" ((USItype)(bl))) #define smul_ppmm(xh, xl, m0, m1) \ do { \ union {UDItype __ll; \ struct {USItype __l, __h;} __i; \ } __x; \ USItype __m0 = (m0), __m1 = (m1); \ __asm__ ("emul %1,%2,$0,%0" \ : "=g" (__x.__ll) : "g" (__m0), "g" (__m1)); \ (xh) = __x.__i.__h; (xl) = __x.__i.__l; \ } while (0) #define sdiv_qrnnd(q, r, n1, n0, d) \ do { \ union {DItype __ll; \ struct {SItype __l, __h;} __i; \ } __x; \ __x.__i.__h = n1; __x.__i.__l = n0; \ __asm__ ("ediv %3,%2,%0,%1" \ : "=g" (q), "=g" (r) : "g" (__x.__ll), "g" (d)); \ } while (0) #endif /* __vax__ */ #if defined (__z8000__) && W_TYPE_SIZE == 16 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add %H1,%H5\n\tadc %H0,%H3" \ : "=r" ((unsigned int)(sh)), "=&r" ((unsigned int)(sl)) \ : "%0" ((unsigned int)(ah)), "r" ((unsigned int)(bh)), \ "%1" ((unsigned int)(al)), "rQR" ((unsigned int)(bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ __asm__ ("sub %H1,%H5\n\tsbc %H0,%H3" \ : "=r" ((unsigned int)(sh)), "=&r" ((unsigned int)(sl)) \ : "0" ((unsigned int)(ah)), "r" ((unsigned int)(bh)), \ "1" ((unsigned int)(al)), "rQR" ((unsigned int)(bl))) #define umul_ppmm(xh, xl, m0, m1) \ do { \ union {long int __ll; \ struct {unsigned int __h, __l;} __i; \ } __x; \ unsigned int __m0 = (m0), __m1 = (m1); \ __asm__ ("mult %S0,%H3" \ : "=r" (__x.__i.__h), "=r" (__x.__i.__l) \ : "%1" (m0), "rQR" (m1)); \ (xh) = __x.__i.__h; (xl) = __x.__i.__l; \ (xh) += ((((signed int) __m0 >> 15) & __m1) \ + (((signed int) __m1 >> 15) & __m0)); \ } while (0) #endif /* __z8000__ */ #endif /* __GNUC__ */ #endif /* NO_ASM */ #if !defined (umul_ppmm) && defined (__umulsidi3) #define umul_ppmm(ph, pl, m0, m1) \ { \ UDWtype __ll = __umulsidi3 (m0, m1); \ ph = (UWtype) (__ll >> W_TYPE_SIZE); \ pl = (UWtype) __ll; \ } #endif #if !defined (__umulsidi3) #define __umulsidi3(u, v) \ ({UWtype __hi, __lo; \ umul_ppmm (__hi, __lo, u, v); \ ((UDWtype) __hi << W_TYPE_SIZE) | __lo; }) #endif /* Note the prototypes are under !define(umul_ppmm) etc too, since the HPPA versions above are different and we don't want to conflict. */ #if ! defined (umul_ppmm) && HAVE_NATIVE_mpn_umul_ppmm #define mpn_umul_ppmm __MPN(umul_ppmm) extern mp_limb_t mpn_umul_ppmm _PROTO ((mp_limb_t *, mp_limb_t, mp_limb_t)); #define umul_ppmm(wh, wl, u, v) \ do { \ mp_limb_t __umul_ppmm__p0; \ (wh) = __MPN(umul_ppmm) (&__umul_ppmm__p0, \ (mp_limb_t) (u), (mp_limb_t) (v)); \ (wl) = __umul_ppmm__p0; \ } while (0) #endif #if ! defined (udiv_qrnnd) && HAVE_NATIVE_mpn_udiv_qrnnd #define mpn_udiv_qrnnd __MPN(udiv_qrnnd) extern mp_limb_t mpn_udiv_qrnnd _PROTO ((mp_limb_t *, mp_limb_t, mp_limb_t, mp_limb_t)); #define udiv_qrnnd(q, r, n1, n0, d) \ do { \ mp_limb_t __udiv_qrnnd__r; \ (q) = mpn_udiv_qrnnd (&__udiv_qrnnd__r, \ (mp_limb_t) (n1), (mp_limb_t) (n0), (mp_limb_t) d); \ (r) = __udiv_qrnnd__r; \ } while (0) #endif /* If this machine has no inline assembler, use C macros. */ #if !defined (add_ssaaaa) #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ do { \ UWtype __x; \ __x = (al) + (bl); \ (sh) = (ah) + (bh) + (__x < (al)); \ (sl) = __x; \ } while (0) #endif #if !defined (sub_ddmmss) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ do { \ UWtype __x; \ __x = (al) - (bl); \ (sh) = (ah) - (bh) - (__x > (al)); \ (sl) = __x; \ } while (0) #endif /* If we lack umul_ppmm but have smul_ppmm, define umul_ppmm in terms of smul_ppmm. */ #if !defined (umul_ppmm) && defined (smul_ppmm) #define umul_ppmm(w1, w0, u, v) \ do { \ UWtype __w1; \ UWtype __xm0 = (u), __xm1 = (v); \ smul_ppmm (__w1, w0, __xm0, __xm1); \ (w1) = __w1 + (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \ + (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \ } while (0) #endif /* If we still don't have umul_ppmm, define it using plain C. */ #if !defined (umul_ppmm) #define umul_ppmm(w1, w0, u, v) \ do { \ UWtype __x0, __x1, __x2, __x3; \ UHWtype __ul, __vl, __uh, __vh; \ UWtype __u = (u), __v = (v); \ \ __ul = __ll_lowpart (__u); \ __uh = __ll_highpart (__u); \ __vl = __ll_lowpart (__v); \ __vh = __ll_highpart (__v); \ \ __x0 = (UWtype) __ul * __vl; \ __x1 = (UWtype) __ul * __vh; \ __x2 = (UWtype) __uh * __vl; \ __x3 = (UWtype) __uh * __vh; \ \ __x1 += __ll_highpart (__x0);/* this can't give carry */ \ __x1 += __x2; /* but this indeed can */ \ if (__x1 < __x2) /* did we get it? */ \ __x3 += __ll_B; /* yes, add it in the proper pos. */ \ \ (w1) = __x3 + __ll_highpart (__x1); \ (w0) = (__x1 << W_TYPE_SIZE/2) + __ll_lowpart (__x0); \ } while (0) #endif /* If we don't have smul_ppmm, define it using umul_ppmm (which surely will exist in one form or another. */ #if !defined (smul_ppmm) #define smul_ppmm(w1, w0, u, v) \ do { \ UWtype __w1; \ UWtype __xm0 = (u), __xm1 = (v); \ umul_ppmm (__w1, w0, __xm0, __xm1); \ (w1) = __w1 - (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \ - (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \ } while (0) #endif /* Define this unconditionally, so it can be used for debugging. */ #define __udiv_qrnnd_c(q, r, n1, n0, d) \ do { \ UWtype __d1, __d0, __q1, __q0, __r1, __r0, __m; \ \ ASSERT ((d) != 0); \ ASSERT ((n1) < (d)); \ \ __d1 = __ll_highpart (d); \ __d0 = __ll_lowpart (d); \ \ __q1 = (n1) / __d1; \ __r1 = (n1) - __q1 * __d1; \ __m = (UWtype) __q1 * __d0; \ __r1 = __r1 * __ll_B | __ll_highpart (n0); \ if (__r1 < __m) \ { \ __q1--, __r1 += (d); \ if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\ if (__r1 < __m) \ __q1--, __r1 += (d); \ } \ __r1 -= __m; \ \ __q0 = __r1 / __d1; \ __r0 = __r1 - __q0 * __d1; \ __m = (UWtype) __q0 * __d0; \ __r0 = __r0 * __ll_B | __ll_lowpart (n0); \ if (__r0 < __m) \ { \ __q0--, __r0 += (d); \ if (__r0 >= (d)) \ if (__r0 < __m) \ __q0--, __r0 += (d); \ } \ __r0 -= __m; \ \ (q) = (UWtype) __q1 * __ll_B | __q0; \ (r) = __r0; \ } while (0) /* If the processor has no udiv_qrnnd but sdiv_qrnnd, go through __udiv_w_sdiv (defined in libgcc or elsewhere). */ #if !defined (udiv_qrnnd) && defined (sdiv_qrnnd) #define udiv_qrnnd(q, r, nh, nl, d) \ do { \ UWtype __r; \ (q) = __MPN(udiv_w_sdiv) (&__r, nh, nl, d); \ (r) = __r; \ } while (0) #endif /* If udiv_qrnnd was not defined for this processor, use __udiv_qrnnd_c. */ #if !defined (udiv_qrnnd) #define UDIV_NEEDS_NORMALIZATION 1 #define udiv_qrnnd __udiv_qrnnd_c #endif #if !defined (count_leading_zeros) #define count_leading_zeros(count, x) \ do { \ UWtype __xr = (x); \ UWtype __a; \ \ if (W_TYPE_SIZE == 32) \ { \ __a = __xr < ((UWtype) 1 << 2*__BITS4) \ ? (__xr < ((UWtype) 1 << __BITS4) ? 1 : __BITS4 + 1) \ : (__xr < ((UWtype) 1 << 3*__BITS4) ? 2*__BITS4 + 1 \ : 3*__BITS4 + 1); \ } \ else \ { \ for (__a = W_TYPE_SIZE - 8; __a > 0; __a -= 8) \ if (((__xr >> __a) & 0xff) != 0) \ break; \ ++__a; \ } \ \ (count) = W_TYPE_SIZE + 1 - __a - __clz_tab[__xr >> __a]; \ } while (0) /* This version gives a well-defined value for zero. */ #define COUNT_LEADING_ZEROS_0 (W_TYPE_SIZE - 1) #define COUNT_LEADING_ZEROS_NEED_CLZ_TAB #endif #ifdef COUNT_LEADING_ZEROS_NEED_CLZ_TAB extern const unsigned char __GMP_DECLSPEC __clz_tab[128]; #endif #if !defined (count_trailing_zeros) /* Define count_trailing_zeros using count_leading_zeros. The latter might be defined in asm, but if it is not, the C version above is good enough. */ #define count_trailing_zeros(count, x) \ do { \ UWtype __ctz_x = (x); \ UWtype __ctz_c; \ ASSERT (__ctz_x != 0); \ count_leading_zeros (__ctz_c, __ctz_x & -__ctz_x); \ (count) = W_TYPE_SIZE - 1 - __ctz_c; \ } while (0) #endif #ifndef UDIV_NEEDS_NORMALIZATION #define UDIV_NEEDS_NORMALIZATION 0 #endif /* Whether udiv_qrnnd is actually implemented with udiv_qrnnd_preinv, and that hence the latter should always be used. */ #ifndef UDIV_PREINV_ALWAYS #define UDIV_PREINV_ALWAYS 0 #endif /* Give defaults for UMUL_TIME and UDIV_TIME. */ #ifndef UMUL_TIME #define UMUL_TIME 1 #endif #ifndef UDIV_TIME #define UDIV_TIME UMUL_TIME #endif /* count_trailing_zeros is often on the slow side, so make that the default */ #ifndef COUNT_TRAILING_ZEROS_TIME #define COUNT_TRAILING_ZEROS_TIME 15 /* cycles */ #endif core++-1.7/win32/patches/gmp-4.1-dynamic/0040755000175000001440000000000010147210064017065 5ustar joachimuserscore++-1.7/win32/patches/gmp-4.1-dynamic/config.h0100644000175000001440000003611107520341371020511 0ustar joachimusers/* config.h. Generated automatically by configure. */ /* config.in. Generated automatically from configure.in by autoheader. */ /* Templates for defines setup by configure. Copyright 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Define one (and only one) of these for the CPU host. Only hosts that are going to be tested for need to be in this list, not everything that can possibly be selected. */ /* #undef HAVE_HOST_CPU_alpha */ /* #undef HAVE_HOST_CPU_alphaev5 */ /* #undef HAVE_HOST_CPU_alphaev6 */ /* #undef HAVE_HOST_CPU_alphaev67 */ /* #undef HAVE_HOST_CPU_m68k */ /* #undef HAVE_HOST_CPU_m68000 */ /* #undef HAVE_HOST_CPU_m68010 */ /* #undef HAVE_HOST_CPU_m68020 */ /* #undef HAVE_HOST_CPU_m68030 */ /* #undef HAVE_HOST_CPU_m68040 */ /* #undef HAVE_HOST_CPU_m68060 */ /* #undef HAVE_HOST_CPU_m68302 */ /* #undef HAVE_HOST_CPU_m68360 */ /* #undef HAVE_HOST_CPU_powerpc604 */ /* #undef HAVE_HOST_CPU_powerpc604e */ /* #undef HAVE_HOST_CPU_powerpc750 */ /* #undef HAVE_HOST_CPU_powerpc7400 */ /* #undef HAVE_HOST_CPU_sparc */ /* #undef HAVE_HOST_CPU_sparcv8 */ /* #undef HAVE_HOST_CPU_supersparc */ /* #undef HAVE_HOST_CPU_sparclite */ /* #undef HAVE_HOST_CPU_microsparc */ /* #undef HAVE_HOST_CPU_ultrasparc1 */ /* #undef HAVE_HOST_CPU_ultrasparc2 */ /* #undef HAVE_HOST_CPU_sparc64 */ /* #undef HAVE_HOST_CPU_hppa1_0 */ /* #undef HAVE_HOST_CPU_hppa1_1 */ /* #undef HAVE_HOST_CPU_hppa2_0n */ /* #undef HAVE_HOST_CPU_hppa2_0w */ /* #undef HAVE_HOST_CPU_i386 */ #define HAVE_HOST_CPU_i486 1 /* #undef HAVE_HOST_CPU_i586 */ /* #undef HAVE_HOST_CPU_i686 */ /* #undef HAVE_HOST_CPU_pentium */ /* #undef HAVE_HOST_CPU_pentiummmx */ /* #undef HAVE_HOST_CPU_pentiumpro */ /* #undef HAVE_HOST_CPU_pentium2 */ /* #undef HAVE_HOST_CPU_pentium3 */ /* #undef HAVE_HOST_CPU_k5 */ /* #undef HAVE_HOST_CPU_k6 */ /* #undef HAVE_HOST_CPU_k62 */ /* #undef HAVE_HOST_CPU_k63 */ /* #undef HAVE_HOST_CPU_athlon */ /* a dummy to make autoheader happy */ /* #undef HAVE_HOST_CPU_ */ /* Define one (and only one) of these for the CPU host family. Only hosts that are going to be tested for need to be in this list, not everything that can possibly be selected. */ /* #undef HAVE_HOST_CPU_FAMILY_power */ /* #undef HAVE_HOST_CPU_FAMILY_powerpc */ #define HAVE_HOST_CPU_FAMILY_x86 1 /* Define if we have native implementation of function. */ /* #undef HAVE_NATIVE_mpn_add */ /* #undef HAVE_NATIVE_mpn_add_1 */ /* #undef HAVE_NATIVE_mpn_add_n */ /* #undef HAVE_NATIVE_mpn_add_nc */ /* #undef HAVE_NATIVE_mpn_addmul_1 */ /* #undef HAVE_NATIVE_mpn_addmul_1c */ /* #undef HAVE_NATIVE_mpn_addmul_2 */ /* #undef HAVE_NATIVE_mpn_addmul_3 */ /* #undef HAVE_NATIVE_mpn_addmul_4 */ /* #undef HAVE_NATIVE_mpn_addsub_n */ /* #undef HAVE_NATIVE_mpn_addsub_nc */ /* #undef HAVE_NATIVE_mpn_and_n */ /* #undef HAVE_NATIVE_mpn_andn_n */ /* #undef HAVE_NATIVE_mpn_bdivmod */ /* #undef HAVE_NATIVE_mpn_cmp */ /* #undef HAVE_NATIVE_mpn_com_n */ /* #undef HAVE_NATIVE_mpn_copyd */ /* #undef HAVE_NATIVE_mpn_copyi */ /* #undef HAVE_NATIVE_mpn_divexact_1 */ /* #undef HAVE_NATIVE_mpn_divexact_by3c */ /* #undef HAVE_NATIVE_mpn_divrem */ /* #undef HAVE_NATIVE_mpn_divrem_1 */ /* #undef HAVE_NATIVE_mpn_divrem_1c */ /* #undef HAVE_NATIVE_mpn_divrem_2 */ /* #undef HAVE_NATIVE_mpn_divrem_newton */ /* #undef HAVE_NATIVE_mpn_divrem_classic */ /* #undef HAVE_NATIVE_mpn_dump */ /* #undef HAVE_NATIVE_mpn_gcd */ /* #undef HAVE_NATIVE_mpn_gcd_1 */ /* #undef HAVE_NATIVE_mpn_gcd_finda */ /* #undef HAVE_NATIVE_mpn_gcdext */ /* #undef HAVE_NATIVE_mpn_get_str */ /* #undef HAVE_NATIVE_mpn_hamdist */ /* #undef HAVE_NATIVE_mpn_invert_limb */ /* #undef HAVE_NATIVE_mpn_ior_n */ /* #undef HAVE_NATIVE_mpn_iorn_n */ /* #undef HAVE_NATIVE_mpn_lshift */ /* #undef HAVE_NATIVE_mpn_mod_1 */ /* #undef HAVE_NATIVE_mpn_mod_1c */ /* #undef HAVE_NATIVE_mpn_modexact_1_odd */ /* #undef HAVE_NATIVE_mpn_modexact_1c_odd */ /* #undef HAVE_NATIVE_mpn_mul */ /* #undef HAVE_NATIVE_mpn_mul_1 */ /* #undef HAVE_NATIVE_mpn_mul_1c */ /* #undef HAVE_NATIVE_mpn_mul_2 */ /* #undef HAVE_NATIVE_mpn_mul_3 */ /* #undef HAVE_NATIVE_mpn_mul_4 */ /* #undef HAVE_NATIVE_mpn_mul_basecase */ /* #undef HAVE_NATIVE_mpn_mul_n */ /* #undef HAVE_NATIVE_mpn_nand_n */ /* #undef HAVE_NATIVE_mpn_nior_n */ /* #undef HAVE_NATIVE_mpn_perfect_square_p */ /* #undef HAVE_NATIVE_mpn_popcount */ /* #undef HAVE_NATIVE_mpn_preinv_mod_1 */ /* #undef HAVE_NATIVE_mpn_random2 */ /* #undef HAVE_NATIVE_mpn_random */ /* #undef HAVE_NATIVE_mpn_rawrandom */ /* #undef HAVE_NATIVE_mpn_rshift */ /* #undef HAVE_NATIVE_mpn_scan0 */ /* #undef HAVE_NATIVE_mpn_scan1 */ /* #undef HAVE_NATIVE_mpn_set_str */ /* #undef HAVE_NATIVE_mpn_sqrtrem */ /* #undef HAVE_NATIVE_mpn_sqr_basecase */ /* #undef HAVE_NATIVE_mpn_sqr_diagonal */ /* #undef HAVE_NATIVE_mpn_sub */ /* #undef HAVE_NATIVE_mpn_sub_1 */ /* #undef HAVE_NATIVE_mpn_sub_n */ /* #undef HAVE_NATIVE_mpn_sub_nc */ /* #undef HAVE_NATIVE_mpn_submul_1 */ /* #undef HAVE_NATIVE_mpn_submul_1c */ /* #undef HAVE_NATIVE_mpn_udiv_w_sdiv */ /* #undef HAVE_NATIVE_mpn_umul_ppmm */ /* #undef HAVE_NATIVE_mpn_udiv_qrnnd */ /* #undef HAVE_NATIVE_mpn_xor_n */ /* #undef HAVE_NATIVE_mpn_xnor_n */ /* a dummy to make autoheader happy */ /* #undef HAVE_NATIVE_ */ /* bits per unsigned long, if not in gmp-mparam.h */ #define BITS_PER_ULONG BITS_PER_MP_LIMB /* bytes per mp_limb_t, if not in gmp-mparam.h */ /* #undef BYTES_PER_MP_LIMB */ /* The gmp-mparam.h to update when tuning. */ #define GMP_MPARAM_H_SUGGEST "./mpn/x86/p6/gmp-mparam.h" /* Define if you have the `alarm' function. */ /* #undef HAVE_ALARM */ /* Define if alloca() works (via gmp-impl.h). */ #define HAVE_ALLOCA 1 /* Define if you have and it should be used (not on Ultrix). */ /* #undef HAVE_ALLOCA_H */ /* Define if the compiler accepts gcc style __attribute__ ((const)) */ /* #undef HAVE_ATTRIBUTE_CONST */ /* Define if the compiler accepts gcc style __attribute__ ((malloc)) */ /* #undef HAVE_ATTRIBUTE_MALLOC */ /* Define if the compiler accepts gcc style __attribute__ ((mode (XX))) */ /* #undef HAVE_ATTRIBUTE_MODE */ /* Define if the compiler accepts gcc style __attribute__ ((noreturn)) */ /* #undef HAVE_ATTRIBUTE_NORETURN */ /* Define if tests/libtests has calling conventions checking for the CPU */ #define HAVE_CALLING_CONVENTIONS 1 /* Define if you have the `clock' function. */ #define HAVE_CLOCK 1 /* Define if you have the `clock_gettime' function. */ /* #undef HAVE_CLOCK_GETTIME */ /* Define if you have the `cputime' function. */ /* #undef HAVE_CPUTIME */ /* Define to 1 if you have the declaration of `fgetc', and to 0 if you don't. */ #define HAVE_DECL_FGETC 1 /* Define to 1 if you have the declaration of `fscanf', and to 0 if you don't. */ #define HAVE_DECL_FSCANF 1 /* Define to 1 if you have the declaration of `optarg', and to 0 if you don't. */ #define HAVE_DECL_OPTARG 0 /* Define to 1 if you have the declaration of `ungetc', and to 0 if you don't. */ #define HAVE_DECL_UNGETC 1 /* Define to 1 if you have the declaration of `vfprintf', and to 0 if you don't. */ #define HAVE_DECL_VFPRINTF 1 /* Define if denormalized floats work. */ /* #undef HAVE_DENORMS */ /* Define if you have the header file. */ /* #undef HAVE_DLFCN_H */ /* Define one (and only one) of the following for the format of a `double'. If your format is not among these choices, or you don't know what it is, then leave all of them undefined. "IEEE_LITTLE_SWAPPED" means little endian, but with the two 4-byte halves swapped, as used by ARM CPUs in little endian mode. */ /* #undef HAVE_DOUBLE_IEEE_BIG_ENDIAN */ #define HAVE_DOUBLE_IEEE_LITTLE_ENDIAN 1 /* #undef HAVE_DOUBLE_IEEE_LITTLE_SWAPPED */ /* #undef HAVE_DOUBLE_VAX_D */ /* #undef HAVE_DOUBLE_VAX_G */ /* #undef HAVE_DOUBLE_CRAY_CFP */ /* Define if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define if you have the header file. */ /* #undef HAVE_FPU_CONTROL_H */ /* Define if you have the `getpagesize' function. */ #define HAVE_GETPAGESIZE 1 /* Define if you have the `getrusage' function. */ /* #undef HAVE_GETRUSAGE */ /* Define if you have the `gettimeofday' function. */ /* #undef HAVE_GETTIMEOFDAY */ /* Define if 0/0, 1/0, -1/0 and sqrt(-1) work to generate NaN/infinities. */ /* #undef HAVE_INFS */ /* Define if the system has the type `intmax_t'. */ #define HAVE_INTMAX_T 1 /* Define if you have the header file. */ /* #undef HAVE_INTTYPES_H */ /* Define one (just one) of the following for the endiannes of `mp_limb_t'. If the endianness is not a simple big or little, or you don't know what it is, then leave both of these undefined. */ /* #undef HAVE_LIMB_BIG_ENDIAN */ #define HAVE_LIMB_LITTLE_ENDIAN 1 /* Define if you have the `localeconv' function. */ #define HAVE_LOCALECONV 1 /* Define if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define if the system has the type `long double'. */ #define HAVE_LONG_DOUBLE 1 /* Define if the system has the type `long long'. */ /* #undef HAVE_LONG_LONG */ /* Define if you have the `lrand48' function. */ /* #undef HAVE_LRAND48 */ /* Define if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define if you have the `memset' function. */ #define HAVE_MEMSET 1 /* Define if you have the `mmap' function. */ /* #undef HAVE_MMAP */ /* Define if you have the `mprotect' function. */ #define HAVE_MPROTECT 1 /* Define if you have the `obstack_vprintf' function. */ /* #undef HAVE_OBSTACK_VPRINTF */ /* Define if you have the `popen' function. */ #define HAVE_POPEN 1 /* Define if you have the `processor_info' function. */ /* #undef HAVE_PROCESSOR_INFO */ /* Define if the system has the type `ptrdiff_t'. */ #define HAVE_PTRDIFF_T 1 /* Define if the system has the type `quad_t'. */ /* #undef HAVE_QUAD_T */ /* Define if you have the `read_real_time' function. */ /* #undef HAVE_READ_REAL_TIME */ /* Define if you have the `sigaction' function. */ /* #undef HAVE_SIGACTION */ /* Define if you have the `sigaltstack' function. */ /* #undef HAVE_SIGALTSTACK */ /* Define if you have the `sigstack' function. */ /* #undef HAVE_SIGSTACK */ /* Tune directory speed_cyclecounter, undef=none, 1=32bits, 2=64bits) */ #define HAVE_SPEED_CYCLECOUNTER 2 /* Define if the system has the type `stack_t'. */ /* #undef HAVE_STACK_T */ /* Define if exists and works */ #define HAVE_STDARG 1 /* Define if you have the header file. */ /* #undef HAVE_STDINT_H */ /* Define if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define if you have the `strcasecmp' function. */ /* #undef HAVE_STRCASECMP */ /* Define if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define if cpp supports the ANSI # stringizing operator. */ #define HAVE_STRINGIZE 1 /* Define if you have the header file. */ /* #undef HAVE_STRINGS_H */ /* Define if you have the header file. */ #define HAVE_STRING_H 1 /* Define if you have the `strnlen' function. */ /* #undef HAVE_STRNLEN */ /* Define if you have the `strtoul' function. */ #define HAVE_STRTOUL 1 /* Define if you have the `sysconf' function. */ /* #undef HAVE_SYSCONF */ /* Define if you have the `sysctl' function. */ /* #undef HAVE_SYSCTL */ /* Define if you have the `sysctlbyname' function. */ /* #undef HAVE_SYSCTLBYNAME */ /* Define if you have the `syssgi' function. */ /* #undef HAVE_SYSSGI */ /* Define if you have the header file. */ /* #undef HAVE_SYS_MMAN_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_PARAM_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_PROCESSOR_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_RESOURCE_H */ /* Define if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYS_SYSCTL_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_SYSSGI_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_SYSTEMCFG_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_TIMES_H */ /* Define if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define if you have the `times' function. */ /* #undef HAVE_TIMES */ /* Define if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define if you have vsnprintf and it works properly. */ /* #undef HAVE_VSNPRINTF */ /* Assembler local label prefix */ #define LSYM_PREFIX "L" /* Define if you have the `fesetround' function via the header file. */ /* #undef MPFR_HAVE_FESETROUND */ /* Name of package */ #define PACKAGE "gmp" /* Define if compiler has function prototypes */ #define PROTOTYPES 1 /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void /* The size of a `mp_limb_t', as computed by sizeof. */ /* #undef SIZEOF_MP_LIMB_T */ /* The size of a `unsigned long', as computed by sizeof. */ /* #undef SIZEOF_UNSIGNED_LONG */ /* Define if sscanf requires writable inputs */ /* #undef SSCANF_WRITABLE_INPUT */ /* Define if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Maximum size the tune program can test for SQR_KARATSUBA_THRESHOLD */ #define TUNE_SQR_KARATSUBA_MAX 67 /* Version number of package */ #define VERSION "4.1" /* ./configure --enable-assert option, to enable some ASSERT()s */ /* #undef WANT_ASSERT */ /* ./configure --enable-fft option, to enable FFTs for multiplication */ #define WANT_FFT 1 /* --enable-alloca=yes */ #define WANT_TMP_ALLOCA 1 /* --enable-alloca=debug */ /* #undef WANT_TMP_DEBUG */ /* --enable-alloca=malloc-notreentrant */ /* #undef WANT_TMP_NOTREENTRANT */ /* --enable-alloca=malloc-reentrant */ /* #undef WANT_TMP_REENTRANT */ /* Define if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ /* #undef WORDS_BIGENDIAN */ /* Define if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ /* #undef YYTEXT_POINTER */ /* Define as `__inline' if that's what the C compiler calls it, or to nothing if it is not supported. */ #define inline __inline /* Define as `__restrict' if that's what the C compiler calls it, or to nothing if it is not supported. */ #define restrict __restrict__ core++-1.7/win32/patches/gmp-4.1-dynamic/gmp-mparam.h0100644000175000001440000000302707520341371021302 0ustar joachimusers/* 80486 gmp-mparam.h -- Compiler/machine parameter header file. Copyright 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define BITS_PER_MP_LIMB 32 #define BYTES_PER_MP_LIMB 4 /* 75MHz DX4, gcc 2.95.2 */ /* Generated by tuneup.c, 2001-02-03. */ #define MUL_KARATSUBA_THRESHOLD 22 #define MUL_TOOM3_THRESHOLD 278 #define SQR_KARATSUBA_THRESHOLD 58 #define SQR_TOOM3_THRESHOLD 226 #define DIV_SB_PREINV_THRESHOLD MP_SIZE_T_MAX #define DIV_DC_THRESHOLD 92 #define POWM_THRESHOLD 125 #define GCD_ACCEL_THRESHOLD 3 #define GCDEXT_THRESHOLD 70 #define USE_PREINV_MOD_1 0 #define DIVREM_2_THRESHOLD MP_SIZE_T_MAX #define MODEXACT_1_ODD_THRESHOLD 25 core++-1.7/win32/patches/gmp-4.1-dynamic/gmp.dsp0100644000175000001440000022777610017704503020404 0ustar joachimusers# Microsoft Developer Studio Project File - Name="gmp" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=gmp - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "gmp.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gmp.mak" CFG="gmp - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gmp - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "gmp - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "gmp - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "../lib" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /YX /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "../lib" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /YX /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"../lib/gmpDebug.dll" /pdbtype:sept !ENDIF # Begin Target # Name "gmp - Win32 Release" # Name "gmp - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\mpf\abs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\abs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\abs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\add.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\add.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\add.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\add_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\add_n.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" # ADD CPP /D "OPERATION_add_n" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" # ADD CPP /D "OPERATION_add_n" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\add_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\add_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\addmul_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" # ADD CPP /D "OPERATION_addmul_1" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" # ADD CPP /D "OPERATION_addmul_1" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\and.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\aors.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\aorsmul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\aorsmul_i.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\array_init.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\asprintf.c # End Source File # Begin Source File SOURCE=.\printf\asprntffuns.c # End Source File # Begin Source File SOURCE=.\assert.c # End Source File # Begin Source File SOURCE=.\mpn\generic\bdivmod.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\bin_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\bin_uiui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\canonicalize.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\ceilfloor.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cfdiv_q_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cfdiv_r_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\clear.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\clear.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\clear.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\clrbit.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\cmp_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmp_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmpabs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmpabs_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmpabs_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\com.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\compat.c # End Source File # Begin Source File SOURCE=.\mpz\cong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cong_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cong_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\dc_divrem_n.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\div.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\div.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\div_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\div_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\dive_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\dive_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\diveby3.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divegcd.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divexact.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\divis.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divis.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divis_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divis_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\divrem.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\divrem_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\divrem_2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\doprnt.c # End Source File # Begin Source File SOURCE=.\printf\doprntf.c # End Source File # Begin Source File SOURCE=.\printf\doprnti.c # End Source File # Begin Source File SOURCE=.\scanf\doscan.c # End Source File # Begin Source File SOURCE=.\mpf\dump.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\dump.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\dump.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\eq.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\equal.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\errno.c # End Source File # Begin Source File SOURCE=".\extract-dbl.c" # End Source File # Begin Source File SOURCE=.\mpz\fac_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\fib2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fib2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fib_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_sint.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_sint.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_slong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_slong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_sshort.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_sshort.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_uint.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_uint.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_ulong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_ulong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_ushort.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_ushort.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\fprintf.c # End Source File # Begin Source File SOURCE=.\scanf\fscanf.c # End Source File # Begin Source File SOURCE=.\scanf\fscanffuns.c # End Source File # Begin Source File SOURCE=.\mpn\generic\gcd.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\gcd.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\gcd_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\gcd_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\gcdext.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\gcdext.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_d_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_d_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\get_den.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_dfl_prec.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\get_num.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_prc.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\getlimbn.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\hamdist.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\hamdist.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\init.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\init.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\init.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\init2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\init2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\inp_raw.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=".\insert-dbl.c" # End Source File # Begin Source File SOURCE=.\mpf\int_p.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\inv.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\invert.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\ior.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\jacbase.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\jacobi.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\kronsz.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\kronuz.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\kronzs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\kronzu.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\lcm.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\lcm_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\lshift.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\lucnum2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\lucnum_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\md_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\memory.c # End Source File # Begin Source File SOURCE=.\mpz\millerrabin.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mod.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mod_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mod_34lsub1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mode1o.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\mp_bases.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mp_bpl.c # End Source File # Begin Source File SOURCE=.\mp_clz_tab.c # End Source File # Begin Source File SOURCE=.\mp_minv_tab.c # End Source File # Begin Source File SOURCE=.\mp_set_fns.c # End Source File # Begin Source File SOURCE=.\mpf\mul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\mul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\mul_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mul_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul_basecase.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul_fft.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul_n.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mul_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\mul_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mul_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\n_pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\neg.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\neg.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\neg.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\nextprime.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\obprintf.c # End Source File # Begin Source File SOURCE=.\printf\obprntffuns.c # End Source File # Begin Source File SOURCE=.\printf\obvprintf.c # End Source File # Begin Source File SOURCE=.\mpz\out_raw.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\perfpow.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\perfsqr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\perfsqr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\popcount.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\popcount.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\pow_1.c # End Source File # Begin Source File SOURCE=.\mpf\pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\powm.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\powm_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\pprime_p.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\pre_divrem_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\pre_mod_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\printf.c # End Source File # Begin Source File SOURCE=.\printf\printffuns.c # End Source File # Begin Source File SOURCE=.\rand.c # End Source File # Begin Source File SOURCE=.\randclr.c # End Source File # Begin Source File SOURCE=.\randdef.c # End Source File # Begin Source File SOURCE=.\randlc.c # End Source File # Begin Source File SOURCE=.\randlc2s.c # End Source File # Begin Source File SOURCE=.\randlc2x.c # End Source File # Begin Source File SOURCE=.\mpn\generic\random.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\random.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\random2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\random2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\random2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\randraw.c # End Source File # Begin Source File SOURCE=.\rands.c # End Source File # Begin Source File SOURCE=.\randsd.c # End Source File # Begin Source File SOURCE=.\randsdui.c # End Source File # Begin Source File SOURCE=.\mpz\realloc.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\realloc2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\reldiff.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\remove.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=".\printf\repl-vsnprintf.c" # End Source File # Begin Source File SOURCE=.\mpz\root.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\rootrem.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\rrandomb.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\rshift.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sb_divrem_mn.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\scan0.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\scan0.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\scan1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\scan1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\scanf\scanf.c # End Source File # Begin Source File SOURCE=.\mpf\set.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_den.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_dfl_prec.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_f.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_f.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_num.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_prc.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_prc_raw.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_z.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_z.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\setbit.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\size.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\size.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sizeinbase.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\snprintf.c # End Source File # Begin Source File SOURCE=.\printf\snprntffuns.c # End Source File # Begin Source File SOURCE=.\printf\sprintf.c # End Source File # Begin Source File SOURCE=.\printf\sprintffuns.c # End Source File # Begin Source File SOURCE=.\mpn\generic\sqr_basecase.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\sqrt.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sqrt.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\sqrt_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sqrtrem.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sqrtrem.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\scanf\sscanf.c # End Source File # Begin Source File SOURCE=.\scanf\sscanffuns.c # End Source File # Begin Source File SOURCE=.\mpf\sub.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sub.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sub.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sub_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sub_n.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" # ADD CPP /D "OPERATION_sub_n" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" # ADD CPP /D "OPERATION_sub_n" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\sub_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sub_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\submul_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" # ADD CPP /D "OPERATION_submul_1" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" # ADD CPP /D "OPERATION_submul_1" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\swap.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\swap.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\swap.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_q_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\tdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_r_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\trunc.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tstbit.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\ui_div.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\ui_pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\ui_sub.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\urandomb.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\urandomb.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\urandomm.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\vasprintf.c # End Source File # Begin Source File SOURCE=.\version.c # End Source File # Begin Source File SOURCE=.\printf\vfprintf.c # End Source File # Begin Source File SOURCE=.\scanf\vfscanf.c # End Source File # Begin Source File SOURCE=.\printf\vprintf.c # End Source File # Begin Source File SOURCE=.\scanf\vscanf.c # End Source File # Begin Source File SOURCE=.\printf\vsnprintf.c # End Source File # Begin Source File SOURCE=.\printf\vsprintf.c # End Source File # Begin Source File SOURCE=.\scanf\vsscanf.c # End Source File # Begin Source File SOURCE=.\mpz\xor.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/patches/gmp-4.1-dynamic/gmp.dsw0100644000175000001440000000102107520341372020366 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "gmp"=.\gmp.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/patches/gmp-4.1-dynamic/gmp.h0100644000175000001440000023212307520341372020031 0ustar joachimusers/* Definitions for GNU multiple precision functions. -*- mode: c -*- Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __GMP_H__ #if defined (__cplusplus) #include /* for istream, ostream */ #endif /* Instantiated by configure. */ #if ! __GMP_WITHIN_CONFIGURE #define __GMP_BITS_PER_MP_LIMB 32 #define __GMP_HAVE_HOST_CPU_FAMILY_power 0 #define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0 #define GMP_LIMB_BITS 32 #define GMP_NAIL_BITS 0 #endif #define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS) #define GMP_NUMB_MASK ((~(mp_limb_t) 0) >> GMP_NAIL_BITS) #define GMP_NUMB_MAX GMP_NUMB_MASK #define GMP_NAIL_MASK (~ GMP_NUMB_MASK) /* The following (everything under ifndef __GNU_MP__) must be identical in gmp.h and mp.h to allow both to be included in an application or during the library build. */ #ifndef __GNU_MP__ #define __GNU_MP__ 4 #define __need_size_t /* tell gcc stddef.h we only want size_t */ #if defined (__cplusplus) #include /* for size_t */ #else #include /* for size_t */ #endif #undef __need_size_t /* Instantiated by configure. */ #if ! __GMP_WITHIN_CONFIGURE /* #undef _LONG_LONG_LIMB */ #define __GMP_LIBGMP_DLL 1 #endif /* __STDC__ - some ANSI compilers define this only to 0, hence the use of "defined" and not "__STDC__-0". In particular Sun workshop C 5.0 sets __STDC__ to 0, but requires "##" for token pasting. _AIX - gnu ansidecl.h asserts that all known AIX compilers are ANSI but don't always define __STDC__. _mips - gnu ansidecl.h says the RISC/OS MIPS compiler is ANSI in SVR4 mode, but doesn't define __STDC__. _MSC_VER - Microsoft C is ANSI, but __STDC__ is undefined unless the /Za option is given (in which case it's 1). _WIN32 - tested for by gnu ansidecl.h, no doubt on the assumption that all w32 compilers are ansi. */ #if defined (__STDC__) \ || defined (__cplusplus) \ || defined (_AIX) \ || defined (__DECC) \ || (defined (__mips) && defined (_SYSTYPE_SVR4)) \ || defined (_MSC_VER) \ || defined (_WIN32) #define __GMP_HAVE_CONST 1 #define __GMP_HAVE_PROTOTYPES 1 #define __GMP_HAVE_TOKEN_PASTE 1 #else #define __GMP_HAVE_CONST 0 #define __GMP_HAVE_PROTOTYPES 0 #define __GMP_HAVE_TOKEN_PASTE 0 #endif #if __GMP_HAVE_CONST #define __gmp_const const #define __gmp_signed signed #else #define __gmp_const #define __gmp_signed #endif /* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in all other circumstances. When compiling objects for libgmp, __GMP_DECLSPEC is an export directive, or when compiling for an application it's an import directive. The two cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles (and not defined from an application). __GMP_DECLSPEC_XX is similarly used for libgmpxx. __GMP_WITHIN_GMPXX indicates when building libgmpxx, and in that case libgmpxx functions are exports, but libgmp functions which might get called are imports. libmp.la uses __GMP_DECLSPEC, just as if it were libgmp.la. libgmp and libmp don't call each other, so there's no conflict or confusion. Libtool DLL_EXPORT define is not used. There's no attempt to support GMP built both static and DLL. Doing so would mean applications would have to tell us which of the two is going to be used when linking, and that seems very tedious and error prone if using GMP by hand, and equally tedious from a package since autoconf and automake don't give much help. __GMP_DECLSPEC is required on all documented global functions and variables, the various internals in gmp-impl.h etc can be left unadorned. But internals used by the test programs or speed measuring programs should have __GMP_DECLSPEC, and certainly constants or variables must have it or the wrong address will be resolved. */ #if defined (__GNUC__) || defined (_MSC_VER) || defined (__BORLANDC__) #define __GMP_DECLSPEC_EXPORT __declspec(dllexport) #define __GMP_DECLSPEC_IMPORT __declspec(dllimport) #endif #ifdef __WATCOMC__ #define __GMP_DECLSPEC_EXPORT __export #define __GMP_DECLSPEC_IMPORT __import #endif #ifdef __IBMC__ #define __GMP_DECLSPEC_EXPORT _Export #define __GMP_DECLSPEC_IMPORT _Import #endif #if __GMP_LIBGMP_DLL #if __GMP_WITHIN_GMP /* compiling to go into a DLL libgmp */ #define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT #else /* compiling to go into an application which will link to a DLL libgmp */ #define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT #endif #else /* all other cases */ #define __GMP_DECLSPEC #endif #ifdef _SHORT_LIMB typedef unsigned int mp_limb_t; typedef int mp_limb_signed_t; #else #ifdef _LONG_LONG_LIMB typedef unsigned long long int mp_limb_t; typedef long long int mp_limb_signed_t; #else typedef unsigned long int mp_limb_t; typedef long int mp_limb_signed_t; #endif #endif typedef mp_limb_t * mp_ptr; typedef __gmp_const mp_limb_t * mp_srcptr; #if defined (_CRAY) && ! defined (_CRAYMPP) /* plain `int' is much faster (48 bits) */ #define __GMP_MP_SIZE_T_INT 1 typedef int mp_size_t; typedef int mp_exp_t; #else #define __GMP_MP_SIZE_T_INT 0 typedef long int mp_size_t; typedef long int mp_exp_t; #endif typedef struct { int _mp_alloc; /* Number of *limbs* allocated and pointed to by the _mp_d field. */ int _mp_size; /* abs(_mp_size) is the number of limbs the last field points to. If _mp_size is negative this is a negative number. */ mp_limb_t *_mp_d; /* Pointer to the limbs. */ } __mpz_struct; #endif /* __GNU_MP__ */ typedef __mpz_struct MP_INT; typedef __mpz_struct mpz_t[1]; typedef struct { __mpz_struct _mp_num; __mpz_struct _mp_den; } __mpq_struct; typedef __mpq_struct MP_RAT; typedef __mpq_struct mpq_t[1]; typedef struct { int _mp_prec; /* Max precision, in number of `mp_limb_t's. Set by mpf_init and modified by mpf_set_prec. The area pointed to by the _mp_d field contains `prec' + 1 limbs. */ int _mp_size; /* abs(_mp_size) is the number of limbs the last field points to. If _mp_size is negative this is a negative number. */ mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */ mp_limb_t *_mp_d; /* Pointer to the limbs. */ } __mpf_struct; /* typedef __mpf_struct MP_FLOAT; */ typedef __mpf_struct mpf_t[1]; /* Available random number generation algorithms. */ typedef enum { GMP_RAND_ALG_DEFAULT = 0, GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */ } gmp_randalg_t; /* Linear congruential data struct. */ typedef struct { mpz_t _mp_a; /* Multiplier. */ unsigned long int _mp_c; /* Adder. */ mpz_t _mp_m; /* Modulus (valid only if m2exp == 0). */ unsigned long int _mp_m2exp; /* If != 0, modulus is 2 ^ m2exp. */ } __gmp_randata_lc; /* Random state struct. */ typedef struct { mpz_t _mp_seed; /* Current seed. */ gmp_randalg_t _mp_alg; /* Algorithm used. */ union { /* Algorithm specific data. */ __gmp_randata_lc *_mp_lc; /* Linear congruential. */ } _mp_algdata; } __gmp_randstate_struct; typedef __gmp_randstate_struct gmp_randstate_t[1]; /* Types for function declarations in gmp files. */ /* ??? Should not pollute user name space with these ??? */ typedef __gmp_const __mpz_struct *mpz_srcptr; typedef __mpz_struct *mpz_ptr; typedef __gmp_const __mpf_struct *mpf_srcptr; typedef __mpf_struct *mpf_ptr; typedef __gmp_const __mpq_struct *mpq_srcptr; typedef __mpq_struct *mpq_ptr; /* This is not wanted in mp.h, so put it outside the __GNU_MP__ common section. */ #if __GMP_LIBGMP_DLL #if __GMP_WITHIN_GMPXX /* compiling to go into a DLL libgmpxx */ #define __GMP_DECLSPEC_XX __GMP_DECLSPEC_EXPORT #else /* compiling to go into a application which will link to a DLL libgmpxx */ #define __GMP_DECLSPEC_XX __GMP_DECLSPEC_IMPORT #endif #else /* all other cases */ #define __GMP_DECLSPEC_XX #endif #if __GMP_HAVE_PROTOTYPES #define __GMP_PROTO(x) x #else #define __GMP_PROTO(x) () #endif #ifndef __MPN #if __GMP_HAVE_TOKEN_PASTE #define __MPN(x) __gmpn_##x #else #define __MPN(x) __gmpn_/**/x #endif #endif #if defined (FILE) \ || defined (H_STDIO) \ || defined (_H_STDIO) /* AIX */ \ || defined (_STDIO_H) /* glibc, Sun, SCO */ \ || defined (_STDIO_H_) /* BSD, OSF */ \ || defined (__STDIO_H) /* Borland */ \ || defined (__STDIO_H__) /* IRIX */ \ || defined (_STDIO_INCLUDED) /* HPUX */ \ || defined (__dj_include_stdio_h_) /* DJGPP */ \ || defined (_FILE_DEFINED) /* Microsoft */ \ || defined (__STDIO__) /* Apple MPW MrC */ #define _GMP_H_HAVE_FILE 1 #endif /* In ISO C, if a prototype involving "struct obstack *" is given without that structure defined, then the struct is scoped down to just the prototype, causing a conflict if it's subsequently defined for real. So only give prototypes if we've got obstack.h. */ #if defined (_OBSTACK_H) /* glibc */ #define _GMP_H_HAVE_OBSTACK 1 #endif /* The prototypes for gmp_vprintf etc are provided only if va_list is available, via an application having included or . Usually va_list is a typedef so can't be tested directly, but va_start is almost certainly a macro, so look for that. will define some sort of va_list for vprintf and vfprintf, but let's not bother trying to use that since it's not standard and since application uses for gmp_vprintf etc will almost certainly require the whole or anyway. */ #ifdef va_start #define _GMP_H_HAVE_VA_LIST 1 #endif /* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ #if defined (__GNUC__) && defined (__GNUC_MINOR__) #define __GMP_GNUC_PREREQ(maj, min) \ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) #else #define __GMP_GNUC_PREREQ(maj, min) 0 #endif /* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically it means a function does nothing but examine its arguments and memory (global or via arguments) to generate a return value, but changes nothing and has no side-effects. */ #if __GMP_GNUC_PREREQ (2,96) #define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else #define __GMP_ATTRIBUTE_PURE #endif /* An empty "throw ()" means the function doesn't throw any C++ exceptions, this can save some stack frame info in applications. Currently it's given only on functions which never divide-by-zero etc, don't allocate memory, and are expected to never need to allocate memory. This leaves open the possibility of a C++ throw from a future GMP exceptions scheme. mpz_set_ui etc are omitted to leave open the lazy allocation scheme described in doc/tasks.html. mpz_get_d etc are omitted to leave open exceptions for float overflows. Note that __GMP_NOTHROW must be given on any inlines the same as on their prototypes (for g++ at least, where they're used together). Note also that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like __GMP_ATTRIBUTE_PURE. */ #if defined (__cplusplus) #define __GMP_NOTHROW throw () #else #define __GMP_NOTHROW #endif /* PORTME: What other compilers have a useful "extern inline"? "static inline" would be an acceptable substitute if the compiler (or linker) discards unused statics. */ /* gcc has __inline__ in all modes, including strict ansi. Give a prototype for an inline too, so as to correctly specify "dllimport" on windows, in case the function is called rather than inlined. */ #ifdef __GNUC__ #define __GMP_EXTERN_INLINE extern __inline__ #define __GMP_INLINE_PROTOTYPES 1 #endif /* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes place under -O. Without -O "foo" seems to be emitted whether it's used or not, which is wasteful. "extern inline foo()" isn't useful, the "extern" is apparently ignored, so foo is inlined if possible but also emitted as a global, which causes multiple definition errors when building a shared libgmp. */ #if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \ && ! defined (__GMP_EXTERN_INLINE) #define __GMP_EXTERN_INLINE static inline #endif /* C++ always has "inline" and since it's a normal feature the linker should discard duplicate non-inlined copies, or if it doesn't then that's a problem for everyone, not just GMP. */ #if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE) #define __GMP_EXTERN_INLINE inline #endif /* By default, don't give a prototype when there's going to be an inline version. Note in particular that Cray C++ objects to the combination of prototype and inline. */ #ifdef __GMP_EXTERN_INLINE #ifndef __GMP_INLINE_PROTOTYPES #define __GMP_INLINE_PROTOTYPES 0 #endif #else #define __GMP_INLINE_PROTOTYPES 1 #endif #define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x)) #define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i)) #define __GMP_UINT_MAX (~ (unsigned) 0) #define __GMP_ULONG_MAX (~ (unsigned long) 0) #define __GMP_USHRT_MAX ((unsigned short) ~0) /* Allow direct user access to numerator and denominator of a mpq_t object. */ #define mpq_numref(Q) (&((Q)->_mp_num)) #define mpq_denref(Q) (&((Q)->_mp_den)) #if defined (__cplusplus) extern "C" { #endif #define mp_set_memory_functions __gmp_set_memory_functions __GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t), void *(*) (void *, size_t, size_t), void (*) (void *, size_t))) __GMP_NOTHROW; #define mp_bits_per_limb __gmp_bits_per_limb __GMP_DECLSPEC extern __gmp_const int mp_bits_per_limb; #define gmp_errno __gmp_errno __GMP_DECLSPEC extern int gmp_errno; #define gmp_version __gmp_version __GMP_DECLSPEC extern __gmp_const char * __gmp_const gmp_version; /* The following for internal use only. Enhancement: __gmp_allocate_func could have "__attribute__ ((malloc))", but current gcc (3.0) doesn't seem to support that. */ __GMP_DECLSPEC extern void * (*__gmp_allocate_func) __GMP_PROTO ((size_t)); __GMP_DECLSPEC extern void * (*__gmp_reallocate_func) __GMP_PROTO ((void *, size_t, size_t)); __GMP_DECLSPEC extern void (*__gmp_free_func) __GMP_PROTO ((void *, size_t)); /**************** Random number routines. ****************/ /* obsolete */ #define gmp_randinit __gmp_randinit __GMP_DECLSPEC void gmp_randinit __GMP_PROTO ((gmp_randstate_t, gmp_randalg_t, ...)); #define gmp_randinit_default __gmp_randinit_default __GMP_DECLSPEC void gmp_randinit_default __GMP_PROTO ((gmp_randstate_t)); #define gmp_randinit_lc __gmp_randinit_lc __GMP_DECLSPEC void gmp_randinit_lc __GMP_PROTO ((gmp_randstate_t, mpz_srcptr, unsigned long int, mpz_srcptr)); #define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp __GMP_DECLSPEC void gmp_randinit_lc_2exp __GMP_PROTO ((gmp_randstate_t, mpz_srcptr, unsigned long int, unsigned long int)); #define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size __GMP_DECLSPEC int gmp_randinit_lc_2exp_size __GMP_PROTO ((gmp_randstate_t, unsigned long)); #define gmp_randseed __gmp_randseed __GMP_DECLSPEC void gmp_randseed __GMP_PROTO ((gmp_randstate_t, mpz_srcptr)); #define gmp_randseed_ui __gmp_randseed_ui __GMP_DECLSPEC void gmp_randseed_ui __GMP_PROTO ((gmp_randstate_t, unsigned long int)); #define gmp_randclear __gmp_randclear __GMP_DECLSPEC void gmp_randclear __GMP_PROTO ((gmp_randstate_t)); /**************** Formatted output routines. ****************/ #define gmp_asprintf __gmp_asprintf __GMP_DECLSPEC int gmp_asprintf __GMP_PROTO ((char **, const char *, ...)); #define gmp_fprintf __gmp_fprintf #if _GMP_H_HAVE_FILE __GMP_DECLSPEC int gmp_fprintf __GMP_PROTO ((FILE *, const char *, ...)); #endif #define gmp_obstack_printf __gmp_obstack_printf #if _GMP_H_HAVE_OBSTACK __GMP_DECLSPEC int gmp_obstack_printf __GMP_PROTO ((struct obstack *, const char *, ...)); #endif #define gmp_obstack_vprintf __gmp_obstack_vprintf #if _GMP_H_HAVE_OBSTACK && _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_obstack_vprintf __GMP_PROTO ((struct obstack *, const char *, va_list)); #endif #define gmp_printf __gmp_printf __GMP_DECLSPEC int gmp_printf __GMP_PROTO ((const char *, ...)); #define gmp_snprintf __gmp_snprintf __GMP_DECLSPEC int gmp_snprintf __GMP_PROTO ((char *, size_t, const char *, ...)); #define gmp_sprintf __gmp_sprintf __GMP_DECLSPEC int gmp_sprintf __GMP_PROTO ((char *, const char *, ...)); #define gmp_vasprintf __gmp_vasprintf #if _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vasprintf __GMP_PROTO ((char **, const char *, va_list)); #endif #define gmp_vfprintf __gmp_vfprintf #if _GMP_H_HAVE_FILE && _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vfprintf __GMP_PROTO ((FILE *, const char *, va_list)); #endif #define gmp_vprintf __gmp_vprintf #if _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vprintf __GMP_PROTO ((const char *, va_list)); #endif #define gmp_vsnprintf __gmp_vsnprintf #if _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vsnprintf __GMP_PROTO ((char *, size_t, const char *, va_list)); #endif #define gmp_vsprintf __gmp_vsprintf #if _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vsprintf __GMP_PROTO ((char *, const char *, va_list)); #endif /**************** Formatted input routines. ****************/ #define gmp_fscanf __gmp_fscanf #if _GMP_H_HAVE_FILE __GMP_DECLSPEC int gmp_fscanf __GMP_PROTO ((FILE *, const char *, ...)); #endif #define gmp_scanf __gmp_scanf __GMP_DECLSPEC int gmp_scanf __GMP_PROTO ((const char *, ...)); #define gmp_sscanf __gmp_sscanf __GMP_DECLSPEC int gmp_sscanf __GMP_PROTO ((const char *, const char *, ...)); #define gmp_vfscanf __gmp_vfscanf #if _GMP_H_HAVE_FILE && _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vfscanf __GMP_PROTO ((FILE *, const char *, va_list)); #endif #define gmp_vscanf __gmp_vscanf #if _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vscanf __GMP_PROTO ((const char *, va_list)); #endif #define gmp_vsscanf __gmp_vsscanf #if _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vsscanf __GMP_PROTO ((const char *, const char *, va_list)); #endif /**************** Integer (i.e. Z) routines. ****************/ #define _mpz_realloc __gmpz_realloc #define mpz_realloc __gmpz_realloc __GMP_DECLSPEC void *_mpz_realloc __GMP_PROTO ((mpz_ptr, mp_size_t)); #define mpz_abs __gmpz_abs #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_abs __GMP_DECLSPEC void mpz_abs __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #endif #define mpz_add __gmpz_add __GMP_DECLSPEC void mpz_add __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_add_ui __gmpz_add_ui __GMP_DECLSPEC void mpz_add_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_addmul __gmpz_addmul __GMP_DECLSPEC void mpz_addmul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_addmul_ui __gmpz_addmul_ui __GMP_DECLSPEC void mpz_addmul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_and __gmpz_and __GMP_DECLSPEC void mpz_and __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_array_init __gmpz_array_init __GMP_DECLSPEC void mpz_array_init __GMP_PROTO ((mpz_ptr, mp_size_t, mp_size_t)); #define mpz_bin_ui __gmpz_bin_ui __GMP_DECLSPEC void mpz_bin_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_bin_uiui __gmpz_bin_uiui __GMP_DECLSPEC void mpz_bin_uiui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int)); #define mpz_cdiv_q __gmpz_cdiv_q __GMP_DECLSPEC void mpz_cdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp __GMP_DECLSPEC void mpz_cdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); #define mpz_cdiv_q_ui __gmpz_cdiv_q_ui __GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_cdiv_qr __gmpz_cdiv_qr __GMP_DECLSPEC void mpz_cdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui __GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_cdiv_r __gmpz_cdiv_r __GMP_DECLSPEC void mpz_cdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp __GMP_DECLSPEC void mpz_cdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); #define mpz_cdiv_r_ui __gmpz_cdiv_r_ui __GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_cdiv_ui __gmpz_cdiv_ui __GMP_DECLSPEC unsigned long int mpz_cdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_clear __gmpz_clear __GMP_DECLSPEC void mpz_clear __GMP_PROTO ((mpz_ptr)); #define mpz_clrbit __gmpz_clrbit __GMP_DECLSPEC void mpz_clrbit __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_cmp __gmpz_cmp __GMP_DECLSPEC int mpz_cmp __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_cmp_d __gmpz_cmp_d __GMP_DECLSPEC int mpz_cmp_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; #define _mpz_cmp_si __gmpz_cmp_si __GMP_DECLSPEC int _mpz_cmp_si __GMP_PROTO ((mpz_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define _mpz_cmp_ui __gmpz_cmp_ui __GMP_DECLSPEC int _mpz_cmp_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_cmpabs __gmpz_cmpabs __GMP_DECLSPEC int mpz_cmpabs __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_cmpabs_d __gmpz_cmpabs_d __GMP_DECLSPEC int mpz_cmpabs_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; #define mpz_cmpabs_ui __gmpz_cmpabs_ui __GMP_DECLSPEC int mpz_cmpabs_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_com __gmpz_com __GMP_DECLSPEC void mpz_com __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_congruent_p __gmpz_congruent_p __GMP_DECLSPEC int mpz_congruent_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_congruent_2exp_p __gmpz_congruent_2exp_p __GMP_DECLSPEC int mpz_congruent_2exp_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, unsigned long)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_congruent_ui_p __gmpz_congruent_ui_p __GMP_DECLSPEC int mpz_congruent_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long, unsigned long)) __GMP_ATTRIBUTE_PURE; #define mpz_divexact __gmpz_divexact __GMP_DECLSPEC void mpz_divexact __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_divexact_ui __gmpz_divexact_ui __GMP_DECLSPEC void mpz_divexact_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); #define mpz_divisible_p __gmpz_divisible_p __GMP_DECLSPEC int mpz_divisible_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_divisible_ui_p __gmpz_divisible_ui_p __GMP_DECLSPEC int mpz_divisible_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE; #define mpz_divisible_2exp_p __gmpz_divisible_2exp_p __GMP_DECLSPEC int mpz_divisible_2exp_p __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_dump __gmpz_dump __GMP_DECLSPEC void mpz_dump __GMP_PROTO ((mpz_srcptr)); #define mpz_export __gmpz_export __GMP_DECLSPEC void *mpz_export __GMP_PROTO ((void *, size_t *, int, size_t, int, size_t, mpz_srcptr z)); #define mpz_fac_ui __gmpz_fac_ui __GMP_DECLSPEC void mpz_fac_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_fdiv_q __gmpz_fdiv_q __GMP_DECLSPEC void mpz_fdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp __GMP_DECLSPEC void mpz_fdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_q_ui __gmpz_fdiv_q_ui __GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_qr __gmpz_fdiv_qr __GMP_DECLSPEC void mpz_fdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui __GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_r __gmpz_fdiv_r __GMP_DECLSPEC void mpz_fdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp __GMP_DECLSPEC void mpz_fdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_r_ui __gmpz_fdiv_r_ui __GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_ui __gmpz_fdiv_ui __GMP_DECLSPEC unsigned long int mpz_fdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_fib_ui __gmpz_fib_ui __GMP_DECLSPEC void mpz_fib_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_fib2_ui __gmpz_fib2_ui __GMP_DECLSPEC void mpz_fib2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int)); #define mpz_fits_sint_p __gmpz_fits_sint_p __GMP_DECLSPEC int mpz_fits_sint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_fits_slong_p __gmpz_fits_slong_p __GMP_DECLSPEC int mpz_fits_slong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_fits_sshort_p __gmpz_fits_sshort_p __GMP_DECLSPEC int mpz_fits_sshort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_fits_uint_p __gmpz_fits_uint_p #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_fits_uint_p __GMP_DECLSPEC int mpz_fits_uint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_fits_ulong_p __gmpz_fits_ulong_p #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_fits_ulong_p __GMP_DECLSPEC int mpz_fits_ulong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_fits_ushort_p __gmpz_fits_ushort_p #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_fits_ushort_p __GMP_DECLSPEC int mpz_fits_ushort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_gcd __gmpz_gcd __GMP_DECLSPEC void mpz_gcd __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_gcd_ui __gmpz_gcd_ui __GMP_DECLSPEC unsigned long int mpz_gcd_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_gcdext __gmpz_gcdext __GMP_DECLSPEC void mpz_gcdext __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_get_d __gmpz_get_d __GMP_DECLSPEC double mpz_get_d __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_get_d_2exp __gmpz_get_d_2exp __GMP_DECLSPEC double mpz_get_d_2exp __GMP_PROTO ((signed long int *, mpz_srcptr)); #define mpz_get_si __gmpz_get_si __GMP_DECLSPEC /* signed */ long int mpz_get_si __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_get_str __gmpz_get_str __GMP_DECLSPEC char *mpz_get_str __GMP_PROTO ((char *, int, mpz_srcptr)); #define mpz_get_ui __gmpz_get_ui #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_get_ui __GMP_DECLSPEC unsigned long int mpz_get_ui __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_getlimbn __gmpz_getlimbn #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_getlimbn __GMP_DECLSPEC mp_limb_t mpz_getlimbn __GMP_PROTO ((mpz_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_hamdist __gmpz_hamdist __GMP_DECLSPEC unsigned long int mpz_hamdist __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_import __gmpz_import __GMP_DECLSPEC void mpz_import __GMP_PROTO ((mpz_ptr, size_t, int, size_t, int, size_t, const void *)); #define mpz_init __gmpz_init __GMP_DECLSPEC void mpz_init __GMP_PROTO ((mpz_ptr)); #define mpz_init2 __gmpz_init2 __GMP_DECLSPEC void mpz_init2 __GMP_PROTO ((mpz_ptr, unsigned long)); #define mpz_init_set __gmpz_init_set __GMP_DECLSPEC void mpz_init_set __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_init_set_d __gmpz_init_set_d __GMP_DECLSPEC void mpz_init_set_d __GMP_PROTO ((mpz_ptr, double)); #define mpz_init_set_si __gmpz_init_set_si __GMP_DECLSPEC void mpz_init_set_si __GMP_PROTO ((mpz_ptr, signed long int)); #define mpz_init_set_str __gmpz_init_set_str __GMP_DECLSPEC int mpz_init_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int)); #define mpz_init_set_ui __gmpz_init_set_ui __GMP_DECLSPEC void mpz_init_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_inp_raw __gmpz_inp_raw #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpz_inp_raw __GMP_PROTO ((mpz_ptr, FILE *)); #endif #define mpz_inp_str __gmpz_inp_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpz_inp_str __GMP_PROTO ((mpz_ptr, FILE *, int)); #endif #define mpz_invert __gmpz_invert __GMP_DECLSPEC int mpz_invert __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_ior __gmpz_ior __GMP_DECLSPEC void mpz_ior __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_jacobi __gmpz_jacobi __GMP_DECLSPEC int mpz_jacobi __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_kronecker mpz_jacobi /* alias */ #define mpz_kronecker_si __gmpz_kronecker_si __GMP_DECLSPEC int mpz_kronecker_si __GMP_PROTO ((mpz_srcptr, long)) __GMP_ATTRIBUTE_PURE; #define mpz_kronecker_ui __gmpz_kronecker_ui __GMP_DECLSPEC int mpz_kronecker_ui __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE; #define mpz_si_kronecker __gmpz_si_kronecker __GMP_DECLSPEC int mpz_si_kronecker __GMP_PROTO ((long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_ui_kronecker __gmpz_ui_kronecker __GMP_DECLSPEC int mpz_ui_kronecker __GMP_PROTO ((unsigned long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_lcm __gmpz_lcm __GMP_DECLSPEC void mpz_lcm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_lcm_ui __gmpz_lcm_ui __GMP_DECLSPEC void mpz_lcm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); #define mpz_legendre mpz_jacobi /* alias */ #define mpz_lucnum_ui __gmpz_lucnum_ui __GMP_DECLSPEC void mpz_lucnum_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_lucnum2_ui __gmpz_lucnum2_ui __GMP_DECLSPEC void mpz_lucnum2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int)); #define mpz_millerrabin __gmpz_millerrabin __GMP_DECLSPEC int mpz_millerrabin __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; #define mpz_mod __gmpz_mod __GMP_DECLSPEC void mpz_mod __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_mul __gmpz_mul __GMP_DECLSPEC void mpz_mul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_mul_2exp __gmpz_mul_2exp __GMP_DECLSPEC void mpz_mul_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_mul_si __gmpz_mul_si __GMP_DECLSPEC void mpz_mul_si __GMP_PROTO ((mpz_ptr, mpz_srcptr, long int)); #define mpz_mul_ui __gmpz_mul_ui __GMP_DECLSPEC void mpz_mul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_neg __gmpz_neg #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_neg __GMP_DECLSPEC void mpz_neg __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #endif #define mpz_nextprime __gmpz_nextprime __GMP_DECLSPEC void mpz_nextprime __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_out_raw __gmpz_out_raw #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpz_out_raw __GMP_PROTO ((FILE *, mpz_srcptr)); #endif #define mpz_out_str __gmpz_out_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpz_out_str __GMP_PROTO ((FILE *, int, mpz_srcptr)); #endif #define mpz_perfect_power_p __gmpz_perfect_power_p __GMP_DECLSPEC int mpz_perfect_power_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_perfect_square_p __gmpz_perfect_square_p #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_perfect_square_p __GMP_DECLSPEC int mpz_perfect_square_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #endif #define mpz_popcount __gmpz_popcount #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_popcount __GMP_DECLSPEC unsigned long int mpz_popcount __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_pow_ui __gmpz_pow_ui __GMP_DECLSPEC void mpz_pow_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_powm __gmpz_powm __GMP_DECLSPEC void mpz_powm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr)); #define mpz_powm_ui __gmpz_powm_ui __GMP_DECLSPEC void mpz_powm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr)); #define mpz_probab_prime_p __gmpz_probab_prime_p __GMP_DECLSPEC int mpz_probab_prime_p __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; #define mpz_random __gmpz_random __GMP_DECLSPEC void mpz_random __GMP_PROTO ((mpz_ptr, mp_size_t)); #define mpz_random2 __gmpz_random2 __GMP_DECLSPEC void mpz_random2 __GMP_PROTO ((mpz_ptr, mp_size_t)); #define mpz_realloc2 __gmpz_realloc2 __GMP_DECLSPEC void mpz_realloc2 __GMP_PROTO ((mpz_ptr, unsigned long)); #define mpz_remove __gmpz_remove __GMP_DECLSPEC unsigned long int mpz_remove __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_root __gmpz_root __GMP_DECLSPEC int mpz_root __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_rrandomb __gmpz_rrandomb __GMP_DECLSPEC void mpz_rrandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, unsigned long int)); #define mpz_scan0 __gmpz_scan0 __GMP_DECLSPEC unsigned long int mpz_scan0 __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_scan1 __gmpz_scan1 __GMP_DECLSPEC unsigned long int mpz_scan1 __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_set __gmpz_set __GMP_DECLSPEC void mpz_set __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_set_d __gmpz_set_d __GMP_DECLSPEC void mpz_set_d __GMP_PROTO ((mpz_ptr, double)); #define mpz_set_f __gmpz_set_f __GMP_DECLSPEC void mpz_set_f __GMP_PROTO ((mpz_ptr, mpf_srcptr)); #define mpz_set_q __gmpz_set_q #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_set_q __GMP_DECLSPEC void mpz_set_q __GMP_PROTO ((mpz_ptr, mpq_srcptr)); #endif #define mpz_set_si __gmpz_set_si __GMP_DECLSPEC void mpz_set_si __GMP_PROTO ((mpz_ptr, signed long int)); #define mpz_set_str __gmpz_set_str __GMP_DECLSPEC int mpz_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int)); #define mpz_set_ui __gmpz_set_ui __GMP_DECLSPEC void mpz_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_setbit __gmpz_setbit __GMP_DECLSPEC void mpz_setbit __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_size __gmpz_size #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_size __GMP_DECLSPEC size_t mpz_size __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_sizeinbase __gmpz_sizeinbase __GMP_DECLSPEC size_t mpz_sizeinbase __GMP_PROTO ((mpz_srcptr, int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_sqrt __gmpz_sqrt __GMP_DECLSPEC void mpz_sqrt __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_sqrtrem __gmpz_sqrtrem __GMP_DECLSPEC void mpz_sqrtrem __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr)); #define mpz_sub __gmpz_sub __GMP_DECLSPEC void mpz_sub __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_sub_ui __gmpz_sub_ui __GMP_DECLSPEC void mpz_sub_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_ui_sub __gmpz_ui_sub __GMP_DECLSPEC void mpz_ui_sub __GMP_PROTO ((mpz_ptr, unsigned long int, mpz_srcptr)); #define mpz_submul __gmpz_submul __GMP_DECLSPEC void mpz_submul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_submul_ui __gmpz_submul_ui __GMP_DECLSPEC void mpz_submul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_swap __gmpz_swap __GMP_DECLSPEC void mpz_swap __GMP_PROTO ((mpz_ptr, mpz_ptr)) __GMP_NOTHROW; #define mpz_tdiv_ui __gmpz_tdiv_ui __GMP_DECLSPEC unsigned long int mpz_tdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_tdiv_q __gmpz_tdiv_q __GMP_DECLSPEC void mpz_tdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp __GMP_DECLSPEC void mpz_tdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tdiv_q_ui __gmpz_tdiv_q_ui __GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tdiv_qr __gmpz_tdiv_qr __GMP_DECLSPEC void mpz_tdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui __GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tdiv_r __gmpz_tdiv_r __GMP_DECLSPEC void mpz_tdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp __GMP_DECLSPEC void mpz_tdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tdiv_r_ui __gmpz_tdiv_r_ui __GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tstbit __gmpz_tstbit __GMP_DECLSPEC int mpz_tstbit __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_ui_pow_ui __gmpz_ui_pow_ui __GMP_DECLSPEC void mpz_ui_pow_ui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int)); #define mpz_urandomb __gmpz_urandomb __GMP_DECLSPEC void mpz_urandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, unsigned long int)); #define mpz_urandomm __gmpz_urandomm __GMP_DECLSPEC void mpz_urandomm __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mpz_srcptr)); #define mpz_xor __gmpz_xor #define mpz_eor __gmpz_xor __GMP_DECLSPEC void mpz_xor __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); /**************** Rational (i.e. Q) routines. ****************/ #define mpq_abs __gmpq_abs #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpq_abs __GMP_DECLSPEC void mpq_abs __GMP_PROTO ((mpq_ptr, mpq_srcptr)); #endif #define mpq_add __gmpq_add __GMP_DECLSPEC void mpq_add __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); #define mpq_canonicalize __gmpq_canonicalize __GMP_DECLSPEC void mpq_canonicalize __GMP_PROTO ((mpq_ptr)); #define mpq_clear __gmpq_clear __GMP_DECLSPEC void mpq_clear __GMP_PROTO ((mpq_ptr)); #define mpq_cmp __gmpq_cmp __GMP_DECLSPEC int mpq_cmp __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_ATTRIBUTE_PURE; #define _mpq_cmp_si __gmpq_cmp_si __GMP_DECLSPEC int _mpq_cmp_si __GMP_PROTO ((mpq_srcptr, long, unsigned long)) __GMP_ATTRIBUTE_PURE; #define _mpq_cmp_ui __gmpq_cmp_ui __GMP_DECLSPEC int _mpq_cmp_ui __GMP_PROTO ((mpq_srcptr, unsigned long int, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpq_div __gmpq_div __GMP_DECLSPEC void mpq_div __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); #define mpq_div_2exp __gmpq_div_2exp __GMP_DECLSPEC void mpq_div_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, unsigned long)); #define mpq_equal __gmpq_equal __GMP_DECLSPEC int mpq_equal __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpq_get_num __gmpq_get_num __GMP_DECLSPEC void mpq_get_num __GMP_PROTO ((mpz_ptr, mpq_srcptr)); #define mpq_get_den __gmpq_get_den __GMP_DECLSPEC void mpq_get_den __GMP_PROTO ((mpz_ptr, mpq_srcptr)); #define mpq_get_d __gmpq_get_d __GMP_DECLSPEC double mpq_get_d __GMP_PROTO ((mpq_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpq_get_str __gmpq_get_str __GMP_DECLSPEC char *mpq_get_str __GMP_PROTO ((char *, int, mpq_srcptr)); #define mpq_init __gmpq_init __GMP_DECLSPEC void mpq_init __GMP_PROTO ((mpq_ptr)); #define mpq_inp_str __gmpq_inp_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpq_inp_str __GMP_PROTO ((mpq_ptr, FILE *, int)); #endif #define mpq_inv __gmpq_inv __GMP_DECLSPEC void mpq_inv __GMP_PROTO ((mpq_ptr, mpq_srcptr)); #define mpq_mul __gmpq_mul __GMP_DECLSPEC void mpq_mul __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); #define mpq_mul_2exp __gmpq_mul_2exp __GMP_DECLSPEC void mpq_mul_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, unsigned long)); #define mpq_neg __gmpq_neg #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpq_neg __GMP_DECLSPEC void mpq_neg __GMP_PROTO ((mpq_ptr, mpq_srcptr)); #endif #define mpq_out_str __gmpq_out_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpq_out_str __GMP_PROTO ((FILE *, int, mpq_srcptr)); #endif #define mpq_set __gmpq_set __GMP_DECLSPEC void mpq_set __GMP_PROTO ((mpq_ptr, mpq_srcptr)); #define mpq_set_d __gmpq_set_d __GMP_DECLSPEC void mpq_set_d __GMP_PROTO ((mpq_ptr, double)); #define mpq_set_den __gmpq_set_den __GMP_DECLSPEC void mpq_set_den __GMP_PROTO ((mpq_ptr, mpz_srcptr)); #define mpq_set_f __gmpq_set_f __GMP_DECLSPEC void mpq_set_f __GMP_PROTO ((mpq_ptr, mpf_srcptr)); #define mpq_set_num __gmpq_set_num __GMP_DECLSPEC void mpq_set_num __GMP_PROTO ((mpq_ptr, mpz_srcptr)); #define mpq_set_si __gmpq_set_si __GMP_DECLSPEC void mpq_set_si __GMP_PROTO ((mpq_ptr, signed long int, unsigned long int)); #define mpq_set_str __gmpq_set_str __GMP_DECLSPEC int mpq_set_str __GMP_PROTO ((mpq_ptr, const char *, int)); #define mpq_set_ui __gmpq_set_ui __GMP_DECLSPEC void mpq_set_ui __GMP_PROTO ((mpq_ptr, unsigned long int, unsigned long int)); #define mpq_set_z __gmpq_set_z __GMP_DECLSPEC void mpq_set_z __GMP_PROTO ((mpq_ptr, mpz_srcptr)); #define mpq_sub __gmpq_sub __GMP_DECLSPEC void mpq_sub __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); #define mpq_swap __gmpq_swap __GMP_DECLSPEC void mpq_swap __GMP_PROTO ((mpq_ptr, mpq_ptr)) __GMP_NOTHROW; /**************** Float (i.e. F) routines. ****************/ #define mpf_abs __gmpf_abs __GMP_DECLSPEC void mpf_abs __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_add __gmpf_add __GMP_DECLSPEC void mpf_add __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_add_ui __gmpf_add_ui __GMP_DECLSPEC void mpf_add_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_ceil __gmpf_ceil __GMP_DECLSPEC void mpf_ceil __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_clear __gmpf_clear __GMP_DECLSPEC void mpf_clear __GMP_PROTO ((mpf_ptr)); #define mpf_cmp __gmpf_cmp __GMP_DECLSPEC int mpf_cmp __GMP_PROTO ((mpf_srcptr, mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_cmp_d __gmpf_cmp_d __GMP_DECLSPEC int mpf_cmp_d __GMP_PROTO ((mpf_srcptr, double)) __GMP_ATTRIBUTE_PURE; #define mpf_cmp_si __gmpf_cmp_si __GMP_DECLSPEC int mpf_cmp_si __GMP_PROTO ((mpf_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_cmp_ui __gmpf_cmp_ui __GMP_DECLSPEC int mpf_cmp_ui __GMP_PROTO ((mpf_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_div __gmpf_div __GMP_DECLSPEC void mpf_div __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_div_2exp __gmpf_div_2exp __GMP_DECLSPEC void mpf_div_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_div_ui __gmpf_div_ui __GMP_DECLSPEC void mpf_div_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_dump __gmpf_dump __GMP_DECLSPEC void mpf_dump __GMP_PROTO ((mpf_srcptr)); #define mpf_eq __gmpf_eq __GMP_DECLSPEC int mpf_eq __GMP_PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpf_fits_sint_p __gmpf_fits_sint_p __GMP_DECLSPEC int mpf_fits_sint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_fits_slong_p __gmpf_fits_slong_p __GMP_DECLSPEC int mpf_fits_slong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_fits_sshort_p __gmpf_fits_sshort_p __GMP_DECLSPEC int mpf_fits_sshort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_fits_uint_p __gmpf_fits_uint_p __GMP_DECLSPEC int mpf_fits_uint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_fits_ulong_p __gmpf_fits_ulong_p __GMP_DECLSPEC int mpf_fits_ulong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_fits_ushort_p __gmpf_fits_ushort_p __GMP_DECLSPEC int mpf_fits_ushort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_floor __gmpf_floor __GMP_DECLSPEC void mpf_floor __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_get_d __gmpf_get_d __GMP_DECLSPEC double mpf_get_d __GMP_PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_get_d_2exp __gmpf_get_d_2exp __GMP_DECLSPEC double mpf_get_d_2exp __GMP_PROTO ((signed long int *, mpf_srcptr)); #define mpf_get_default_prec __gmpf_get_default_prec __GMP_DECLSPEC unsigned long int mpf_get_default_prec __GMP_PROTO ((void)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_get_prec __gmpf_get_prec __GMP_DECLSPEC unsigned long int mpf_get_prec __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_get_si __gmpf_get_si __GMP_DECLSPEC long mpf_get_si __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_get_str __gmpf_get_str __GMP_DECLSPEC char *mpf_get_str __GMP_PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr)); #define mpf_get_ui __gmpf_get_ui __GMP_DECLSPEC unsigned long mpf_get_ui __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_init __gmpf_init __GMP_DECLSPEC void mpf_init __GMP_PROTO ((mpf_ptr)); #define mpf_init2 __gmpf_init2 __GMP_DECLSPEC void mpf_init2 __GMP_PROTO ((mpf_ptr, unsigned long int)); #define mpf_init_set __gmpf_init_set __GMP_DECLSPEC void mpf_init_set __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_init_set_d __gmpf_init_set_d __GMP_DECLSPEC void mpf_init_set_d __GMP_PROTO ((mpf_ptr, double)); #define mpf_init_set_si __gmpf_init_set_si __GMP_DECLSPEC void mpf_init_set_si __GMP_PROTO ((mpf_ptr, signed long int)); #define mpf_init_set_str __gmpf_init_set_str __GMP_DECLSPEC int mpf_init_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int)); #define mpf_init_set_ui __gmpf_init_set_ui __GMP_DECLSPEC void mpf_init_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int)); #define mpf_inp_str __gmpf_inp_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpf_inp_str __GMP_PROTO ((mpf_ptr, FILE *, int)); #endif #define mpf_integer_p __gmpf_integer_p __GMP_DECLSPEC int mpf_integer_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_mul __gmpf_mul __GMP_DECLSPEC void mpf_mul __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_mul_2exp __gmpf_mul_2exp __GMP_DECLSPEC void mpf_mul_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_mul_ui __gmpf_mul_ui __GMP_DECLSPEC void mpf_mul_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_neg __gmpf_neg __GMP_DECLSPEC void mpf_neg __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_out_str __gmpf_out_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpf_out_str __GMP_PROTO ((FILE *, int, size_t, mpf_srcptr)); #endif #define mpf_pow_ui __gmpf_pow_ui __GMP_DECLSPEC void mpf_pow_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_random2 __gmpf_random2 __GMP_DECLSPEC void mpf_random2 __GMP_PROTO ((mpf_ptr, mp_size_t, mp_exp_t)); #define mpf_reldiff __gmpf_reldiff __GMP_DECLSPEC void mpf_reldiff __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_set __gmpf_set __GMP_DECLSPEC void mpf_set __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_set_d __gmpf_set_d __GMP_DECLSPEC void mpf_set_d __GMP_PROTO ((mpf_ptr, double)); #define mpf_set_default_prec __gmpf_set_default_prec __GMP_DECLSPEC void mpf_set_default_prec __GMP_PROTO ((unsigned long int)) __GMP_NOTHROW; #define mpf_set_prec __gmpf_set_prec __GMP_DECLSPEC void mpf_set_prec __GMP_PROTO ((mpf_ptr, unsigned long int)); #define mpf_set_prec_raw __gmpf_set_prec_raw __GMP_DECLSPEC void mpf_set_prec_raw __GMP_PROTO ((mpf_ptr, unsigned long int)) __GMP_NOTHROW; #define mpf_set_q __gmpf_set_q __GMP_DECLSPEC void mpf_set_q __GMP_PROTO ((mpf_ptr, mpq_srcptr)); #define mpf_set_si __gmpf_set_si __GMP_DECLSPEC void mpf_set_si __GMP_PROTO ((mpf_ptr, signed long int)); #define mpf_set_str __gmpf_set_str __GMP_DECLSPEC int mpf_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int)); #define mpf_set_ui __gmpf_set_ui __GMP_DECLSPEC void mpf_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int)); #define mpf_set_z __gmpf_set_z __GMP_DECLSPEC void mpf_set_z __GMP_PROTO ((mpf_ptr, mpz_srcptr)); #define mpf_size __gmpf_size __GMP_DECLSPEC size_t mpf_size __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_sqrt __gmpf_sqrt __GMP_DECLSPEC void mpf_sqrt __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_sqrt_ui __gmpf_sqrt_ui __GMP_DECLSPEC void mpf_sqrt_ui __GMP_PROTO ((mpf_ptr, unsigned long int)); #define mpf_sub __gmpf_sub __GMP_DECLSPEC void mpf_sub __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_sub_ui __gmpf_sub_ui __GMP_DECLSPEC void mpf_sub_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_swap __gmpf_swap __GMP_DECLSPEC void mpf_swap __GMP_PROTO ((mpf_ptr, mpf_ptr)) __GMP_NOTHROW; #define mpf_trunc __gmpf_trunc __GMP_DECLSPEC void mpf_trunc __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_ui_div __gmpf_ui_div __GMP_DECLSPEC void mpf_ui_div __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr)); #define mpf_ui_sub __gmpf_ui_sub __GMP_DECLSPEC void mpf_ui_sub __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr)); #define mpf_urandomb __gmpf_urandomb __GMP_DECLSPEC void mpf_urandomb __GMP_PROTO ((mpf_t, gmp_randstate_t, unsigned long int)); /************ Low level positive-integer (i.e. N) routines. ************/ /* This is ugly, but we need to make user calls reach the prefixed function. */ #define mpn_add __MPN(add) #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpn_add __GMP_DECLSPEC mp_limb_t mpn_add __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); #endif #define mpn_add_1 __MPN(add_1) #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpn_add_1 __GMP_DECLSPEC mp_limb_t mpn_add_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW; #endif #define mpn_add_n __MPN(add_n) __GMP_DECLSPEC mp_limb_t mpn_add_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #define mpn_addmul_1 __MPN(addmul_1) __GMP_DECLSPEC mp_limb_t mpn_addmul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_bdivmod __MPN(bdivmod) __GMP_DECLSPEC mp_limb_t mpn_bdivmod __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, unsigned long int)); #define mpn_cmp __MPN(cmp) #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpn_cmp __GMP_DECLSPEC int mpn_cmp __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpn_divexact_by3(dst,src,size) \ mpn_divexact_by3c (dst, src, size, (mp_limb_t) 0) #define mpn_divexact_by3c __MPN(divexact_by3c) __GMP_DECLSPEC mp_limb_t mpn_divexact_by3c __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_divmod_1(qp,np,nsize,dlimb) \ mpn_divrem_1 (qp, (mp_size_t) 0, np, nsize, dlimb) #define mpn_divrem __MPN(divrem) __GMP_DECLSPEC mp_limb_t mpn_divrem __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t)); #define mpn_divrem_1 __MPN(divrem_1) __GMP_DECLSPEC mp_limb_t mpn_divrem_1 __GMP_PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_divrem_2 __MPN(divrem_2) __GMP_DECLSPEC mp_limb_t mpn_divrem_2 __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr)); #define mpn_gcd __MPN(gcd) __GMP_DECLSPEC mp_size_t mpn_gcd __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); #define mpn_gcd_1 __MPN(gcd_1) __GMP_DECLSPEC mp_limb_t mpn_gcd_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; #define mpn_gcdext __MPN(gcdext) __GMP_DECLSPEC mp_size_t mpn_gcdext __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); #define mpn_get_str __MPN(get_str) __GMP_DECLSPEC size_t mpn_get_str __GMP_PROTO ((unsigned char *, int, mp_ptr, mp_size_t)); #define mpn_hamdist __MPN(hamdist) __GMP_DECLSPEC unsigned long int mpn_hamdist __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpn_lshift __MPN(lshift) __GMP_DECLSPEC mp_limb_t mpn_lshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); #define mpn_mod_1 __MPN(mod_1) __GMP_DECLSPEC mp_limb_t mpn_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; #define mpn_mul __MPN(mul) __GMP_DECLSPEC mp_limb_t mpn_mul __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); #define mpn_mul_1 __MPN(mul_1) __GMP_DECLSPEC mp_limb_t mpn_mul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_mul_n __MPN(mul_n) __GMP_DECLSPEC void mpn_mul_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #define mpn_perfect_square_p __MPN(perfect_square_p) __GMP_DECLSPEC int mpn_perfect_square_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE; #define mpn_popcount __MPN(popcount) __GMP_DECLSPEC unsigned long int mpn_popcount __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpn_pow_1 __MPN(pow_1) __GMP_DECLSPEC mp_size_t mpn_pow_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr)); /* undocumented now, but retained here for upward compatibility */ #define mpn_preinv_mod_1 __MPN(preinv_mod_1) __GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; #define mpn_random __MPN(random) __GMP_DECLSPEC void mpn_random __GMP_PROTO ((mp_ptr, mp_size_t)); #define mpn_random2 __MPN(random2) __GMP_DECLSPEC void mpn_random2 __GMP_PROTO ((mp_ptr, mp_size_t)); #define mpn_rshift __MPN(rshift) __GMP_DECLSPEC mp_limb_t mpn_rshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); #define mpn_scan0 __MPN(scan0) __GMP_DECLSPEC unsigned long int mpn_scan0 __GMP_PROTO ((mp_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpn_scan1 __MPN(scan1) __GMP_DECLSPEC unsigned long int mpn_scan1 __GMP_PROTO ((mp_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpn_set_str __MPN(set_str) __GMP_DECLSPEC mp_size_t mpn_set_str __GMP_PROTO ((mp_ptr, __gmp_const unsigned char *, size_t, int)); #define mpn_sqrtrem __MPN(sqrtrem) __GMP_DECLSPEC mp_size_t mpn_sqrtrem __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t)); #define mpn_sub __MPN(sub) #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpn_sub __GMP_DECLSPEC mp_limb_t mpn_sub __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); #endif #define mpn_sub_1 __MPN(sub_1) #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpn_sub_1 __GMP_DECLSPEC mp_limb_t mpn_sub_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW; #endif #define mpn_sub_n __MPN(sub_n) __GMP_DECLSPEC mp_limb_t mpn_sub_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #define mpn_submul_1 __MPN(submul_1) __GMP_DECLSPEC mp_limb_t mpn_submul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_tdiv_qr __MPN(tdiv_qr) __GMP_DECLSPEC void mpn_tdiv_qr __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); /**************** mpz inlines ****************/ /* The following are provided as inlines where possible, but always exist as library functions too, for binary compatibility. Within gmp itself this inlining generally isn't relied on, since it doesn't get done for all compilers, whereas if something is worth inlining then it's worth arranging always. There are two styles of inlining here. When the same bit of code is wanted for the inline as for the library version, then __GMP_FORCE_foo arranges for that code to be emitted and the __GMP_EXTERN_INLINE directive suppressed, eg. mpz_fits_uint_p. When a different bit of code is wanted for the inline than for the library version, then __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */ #if defined (__GMP_EXTERN_INLINE) && ! __GMP_FORCE_mpz_abs __GMP_EXTERN_INLINE void mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) { if (__gmp_w != __gmp_u) mpz_set (__gmp_w, __gmp_u); __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size); } #endif #if GMP_NAIL_BITS == 0 #define __GMPZ_FITS_UTYPE_P(z,maxval) \ mp_size_t __gmp_n = z->_mp_size; \ mp_ptr __gmp_p = z->_mp_d; \ return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)); #else #define __GMPZ_FITS_UTYPE_P(z,maxval) \ mp_size_t __gmp_n = z->_mp_size; \ mp_ptr __gmp_p = z->_mp_d; \ return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval) \ || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS))); #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_fits_uint_p #if ! __GMP_FORCE_mpz_fits_uint_p __GMP_EXTERN_INLINE #endif int mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW { __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_UINT_MAX); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_fits_ulong_p #if ! __GMP_FORCE_mpz_fits_ulong_p __GMP_EXTERN_INLINE #endif int mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW { __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_ULONG_MAX); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_fits_ushort_p #if ! __GMP_FORCE_mpz_fits_ushort_p __GMP_EXTERN_INLINE #endif int mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW { __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_USHRT_MAX); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_get_ui #if ! __GMP_FORCE_mpz_get_ui __GMP_EXTERN_INLINE #endif unsigned long mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW { mp_ptr __gmp_p = __gmp_z->_mp_d; mp_size_t __gmp_n = __gmp_z->_mp_size; mp_limb_t __gmp_l = __gmp_p[0]; if (__GMP_ULONG_MAX <= GMP_NUMB_MASK) return __gmp_l & (-(mp_limb_t) (__gmp_n != 0)); #if GMP_NAIL_BITS != 0 /* redundant #if, shuts up compiler warnings */ else /* happens for nails, but not if LONG_LONG_LIMB */ { /* assume two limbs are enough to fill an ulong */ __gmp_n = __GMP_ABS (__gmp_n); if (__gmp_n <= 1) return __gmp_l & (-(mp_limb_t) (__gmp_n != 0)); else return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS); } #endif } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_getlimbn #if ! __GMP_FORCE_mpz_getlimbn __GMP_EXTERN_INLINE #endif mp_limb_t mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW { if (__GMP_ABS (__gmp_z->_mp_size) <= __gmp_n || __gmp_n < 0) return 0; else return __gmp_z->_mp_d[__gmp_n]; } #endif #if defined (__GMP_EXTERN_INLINE) && ! __GMP_FORCE_mpz_neg __GMP_EXTERN_INLINE void mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) { if (__gmp_w != __gmp_u) mpz_set (__gmp_w, __gmp_u); __gmp_w->_mp_size = - __gmp_w->_mp_size; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_perfect_square_p #if ! __GMP_FORCE_mpz_perfect_square_p __GMP_EXTERN_INLINE #endif int mpz_perfect_square_p (mpz_srcptr __gmp_a) { mp_size_t __gmp_asize = __gmp_a->_mp_size; if (__gmp_asize <= 0) return (__gmp_asize == 0); /* zero is a square, negatives are not */ else return mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_popcount #if ! __GMP_FORCE_mpz_popcount __GMP_EXTERN_INLINE #endif unsigned long mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW { mp_size_t __gmp_usize = __gmp_u->_mp_size; if (__gmp_usize <= 0) return (__gmp_usize < 0 ? __GMP_ULONG_MAX : 0); else return mpn_popcount (__gmp_u->_mp_d, __gmp_usize); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_set_q #if ! __GMP_FORCE_mpz_set_q __GMP_EXTERN_INLINE #endif void mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u) { mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u)); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_size #if ! __GMP_FORCE_mpz_size __GMP_EXTERN_INLINE #endif size_t mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW { return __GMP_ABS (__gmp_z->_mp_size); } #endif /**************** mpq inlines ****************/ #if defined (__GMP_EXTERN_INLINE) && ! __GMP_FORCE_mpq_abs __GMP_EXTERN_INLINE void mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) { if (__gmp_w != __gmp_u) mpq_set (__gmp_w, __gmp_u); __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size); } #endif #if defined (__GMP_EXTERN_INLINE) && ! __GMP_FORCE_mpq_neg __GMP_EXTERN_INLINE void mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) { if (__gmp_w != __gmp_u) mpq_set (__gmp_w, __gmp_u); __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; } #endif /**************** mpn inlines ****************/ /* The comments with __GMPN_ADD_1 below apply here too. The test for FUNCTION returning 0 should predict well. If it's assumed {yp,ysize} will usually have a random number of bits then the high limb won't be full and a carry out will occur a good deal less than 50% of the time. ysize==0 isn't a documented feature, but is used internally in a few places. Producing cout last stops it using up a register during the main part of the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))" doesn't seem able to move the true and false legs of the conditional up to the two places cout is generated. */ #define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \ do { \ mp_size_t __gmp_i; \ mp_limb_t __gmp_x; \ \ /* ASSERT ((ysize) >= 0); */ \ /* ASSERT ((xsize) >= (ysize)); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \ \ __gmp_i = (ysize); \ if (__gmp_i != 0) \ { \ if (FUNCTION (wp, xp, yp, __gmp_i)) \ { \ do \ { \ if (__gmp_i >= (xsize)) \ { \ (cout) = 1; \ goto __gmp_done; \ } \ __gmp_x = (xp)[__gmp_i]; \ } \ while (TEST); \ } \ } \ if ((wp) != (xp)) \ __GMPN_COPY_REST (wp, xp, xsize, __gmp_i); \ (cout) = 0; \ __gmp_done: \ ; \ } while (0) #define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \ __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \ (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0)) #define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \ __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \ (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0)) /* The use of __gmp_i indexing is designed to ensure a compile time src==dst remains nice and clear to the compiler, so that __GMPN_COPY_REST can disappear, and the load/add/store gets a chance to become a read-modify-write on CISC CPUs. Alternatives: Using a pair of pointers instead of indexing would be possible, but gcc isn't able to recognise compile-time src==dst in that case, even when the pointers are incremented more or less together. Other compilers would very likely have similar difficulty. gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or similar to detect a compile-time src==dst. This works nicely on gcc 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems to be always false, for a pointer p. But the current code form seems good enough for src==dst anyway. gcc on x86 as usual doesn't give particularly good flags handling for the carry/borrow detection. It's tempting to want some multi instruction asm blocks to help it, and this was tried, but in truth there's only a few instructions to save and any gain is all too easily lost by register juggling setting up for the asm. */ #if GMP_NAIL_BITS == 0 #define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ do { \ mp_size_t __gmp_i; \ mp_limb_t __gmp_x, __gmp_r; \ \ /* ASSERT ((n) >= 1); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ \ __gmp_x = (src)[0]; \ __gmp_r = __gmp_x OP (v); \ (dst)[0] = __gmp_r; \ if (CB (__gmp_r, __gmp_x, (v))) \ { \ (cout) = 1; \ for (__gmp_i = 1; __gmp_i < (n);) \ { \ __gmp_x = (src)[__gmp_i]; \ __gmp_r = __gmp_x OP 1; \ (dst)[__gmp_i] = __gmp_r; \ ++__gmp_i; \ if (!CB (__gmp_r, __gmp_x, 1)) \ { \ if ((src) != (dst)) \ __GMPN_COPY_REST (dst, src, n, __gmp_i); \ (cout) = 0; \ break; \ } \ } \ } \ else \ { \ if ((src) != (dst)) \ __GMPN_COPY_REST (dst, src, n, 1); \ (cout) = 0; \ } \ } while (0) #endif #if GMP_NAIL_BITS >= 1 #define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ do { \ mp_size_t __gmp_i; \ mp_limb_t __gmp_x, __gmp_r; \ \ /* ASSERT ((n) >= 1); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ \ __gmp_x = (src)[0]; \ __gmp_r = __gmp_x OP (v); \ (dst)[0] = __gmp_r & GMP_NUMB_MASK; \ if (__gmp_r >> GMP_NUMB_BITS != 0) \ { \ (cout) = 1; \ for (__gmp_i = 1; __gmp_i < (n);) \ { \ __gmp_x = (src)[__gmp_i]; \ __gmp_r = __gmp_x OP 1; \ (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK; \ ++__gmp_i; \ if (__gmp_r >> GMP_NUMB_BITS == 0) \ { \ if ((src) != (dst)) \ __GMPN_COPY_REST (dst, src, n, __gmp_i); \ (cout) = 0; \ break; \ } \ } \ } \ else \ { \ if ((src) != (dst)) \ __GMPN_COPY_REST (dst, src, n, 1); \ (cout) = 0; \ } \ } while (0) #endif #define __GMPN_ADDCB(r,x,y) ((r) < (y)) #define __GMPN_SUBCB(r,x,y) ((x) < (y)) #define __GMPN_ADD_1(cout, dst, src, n, v) \ __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB) #define __GMPN_SUB_1(cout, dst, src, n, v) \ __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB) /* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or negative. size==0 is allowed. On random data usually only one limb will need to be examined to get a result, so it's worth having it inline. */ #define __GMPN_CMP(result, xp, yp, size) \ do { \ mp_size_t __gmp_i; \ mp_limb_t __gmp_x, __gmp_y; \ \ /* ASSERT ((size) >= 0); */ \ \ (result) = 0; \ __gmp_i = (size); \ while (--__gmp_i >= 0) \ { \ __gmp_x = (xp)[__gmp_i]; \ __gmp_y = (yp)[__gmp_i]; \ if (__gmp_x != __gmp_y) \ { \ /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */ \ (result) = (__gmp_x > __gmp_y ? 1 : -1); \ break; \ } \ } \ } while (0) /* For power and powerpc we want an inline ldu/stu/bdnz loop for copying. On ppc630 for instance this is optimal since it can sustain only 1 store per cycle. gcc 2.95.x (powerpc64 -maix64, or powerpc32) doesn't recognise the "for" loop in the generic code below can become ldu/stu/bdnz. The do/while here helps it get to that. In gcc -mpowerpc64 mode, without -maix64, __size seems to want to be an mp_limb_t to get into the ctr register, and even then the loop is a curious ldu/stu/bdz/b. But let's not worry about that unless there's a system using this. An asm block could force what we want if necessary. xlc 3.1 already generates ldu/stu/bdnz from the generic C, and does so from this loop too. */ #if __GMP_HAVE_HOST_CPU_FAMILY_power || __GMP_HAVE_HOST_CPU_FAMILY_powerpc #define __GMPN_COPY_INCR(dst, src, size) \ do { \ /* ASSERT ((size) >= 0); */ \ /* ASSERT (MPN_SAME_OR_INCR_P (dst, src, size)); */ \ if ((size) != 0) \ { \ mp_ptr __gmp_copy_incr_dst = (dst) - 1; \ mp_srcptr __gmp_copy_incr_src = (src) - 1; \ mp_size_t __gmp_copy_incr_size = (size); \ do \ *++__gmp_copy_incr_dst = *++__gmp_copy_incr_src; \ while (--__gmp_copy_incr_size != 0); \ } \ } while (0) #define __GMPN_COPY(dst, src, size) \ do { \ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \ __GMPN_COPY_INCR (dst, src, size); \ } while (0) #endif #if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST) #define __GMPN_COPY_REST(dst, src, size, start) \ do { \ /* ASSERT ((start) >= 0); */ \ /* ASSERT ((start) <= (size)); */ \ __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \ } while (0) #endif /* Copy {src,size} to {dst,size}, starting at "start". This is designed to keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1, __GMPN_ADD, etc. */ #if ! defined (__GMPN_COPY_REST) #define __GMPN_COPY_REST(dst, src, size, start) \ do { \ mp_size_t __gmp_j; \ /* ASSERT ((size) >= 0); */ \ /* ASSERT ((start) >= 0); */ \ /* ASSERT ((start) <= (size)); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \ for (__gmp_j = (start); __gmp_j < (size); __gmp_j++) \ (dst)[__gmp_j] = (src)[__gmp_j]; \ } while (0) #endif /* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use mpn_copyi if there's a native version, and if we don't mind demanding binary compatibility for it (on targets which use it). */ #if ! defined (__GMPN_COPY) #define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0) #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_add #if ! __GMP_FORCE_mpn_add __GMP_EXTERN_INLINE #endif mp_limb_t mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) { mp_limb_t __gmp_c; __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); return __gmp_c; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_add_1 #if ! __GMP_FORCE_mpn_add_1 __GMP_EXTERN_INLINE #endif mp_limb_t mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW { mp_limb_t __gmp_c; __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); return __gmp_c; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_cmp #if ! __GMP_FORCE_mpn_cmp __GMP_EXTERN_INLINE #endif int mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW { int __gmp_result; __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size); return __gmp_result; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_sub #if ! __GMP_FORCE_mpn_sub __GMP_EXTERN_INLINE #endif mp_limb_t mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) { mp_limb_t __gmp_c; __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); return __gmp_c; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_sub_1 #if ! __GMP_FORCE_mpn_sub_1 __GMP_EXTERN_INLINE #endif mp_limb_t mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW { mp_limb_t __gmp_c; __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); return __gmp_c; } #endif #if defined (__cplusplus) } #endif /* Allow faster testing for negative, zero, and positive. */ #define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0) #define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0) #define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0) /* When using GCC, optimize certain common comparisons. */ #if defined (__GNUC__) #define mpz_cmp_ui(Z,UI) \ (__builtin_constant_p (UI) && (UI) == 0 \ ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI)) #define mpz_cmp_si(Z,SI) \ (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z) \ : __builtin_constant_p (SI) && (SI) > 0 \ ? _mpz_cmp_ui (Z, (unsigned long int) SI) \ : _mpz_cmp_si (Z,SI)) #define mpq_cmp_ui(Q,NUI,DUI) \ (__builtin_constant_p (NUI) && (NUI) == 0 \ ? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI)) #define mpq_cmp_si(q,n,d) \ (__builtin_constant_p ((n) >= 0) && (n) >= 0 \ ? mpq_cmp_ui (q, (unsigned long) (n), d) \ : _mpq_cmp_si (q, n, d)) #else #define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI) #define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI) #define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI) #define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d) #endif /* Using "&" rather than "&&" means these can come out branch-free. Every mpz_t has at least one limb allocated, so fetching the low limb is always allowed. */ #define mpz_odd_p(z) ((int) ((z)->_mp_size != 0) & (int) (z)->_mp_d[0]) #define mpz_even_p(z) (! mpz_odd_p (z)) /**************** C++ routines ****************/ #ifdef __cplusplus __GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr); __GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr); __GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr); __GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr); __GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr); __GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr); #endif /* Compatibility with GMP 2 and earlier. */ #define mpn_divmod(qp,np,nsize,dp,dsize) \ mpn_divrem (qp, (mp_size_t) 0, np, nsize, dp, dsize) /* Compatibility with GMP 1. */ #define mpz_mdiv mpz_fdiv_q #define mpz_mdivmod mpz_fdiv_qr #define mpz_mmod mpz_fdiv_r #define mpz_mdiv_ui mpz_fdiv_q_ui #define mpz_mdivmod_ui(q,r,n,d) \ ((r == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d)) #define mpz_mmod_ui(r,n,d) \ ((r == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d)) /* Useful synonyms, but not quite compatible with GMP 1. */ #define mpz_div mpz_fdiv_q #define mpz_divmod mpz_fdiv_qr #define mpz_div_ui mpz_fdiv_q_ui #define mpz_divmod_ui mpz_fdiv_qr_ui #define mpz_mod_ui mpz_fdiv_r_ui #define mpz_div_2exp mpz_fdiv_q_2exp #define mpz_mod_2exp mpz_fdiv_r_2exp enum { GMP_ERROR_NONE = 0, GMP_ERROR_UNSUPPORTED_ARGUMENT = 1, GMP_ERROR_DIVISION_BY_ZERO = 2, GMP_ERROR_SQRT_OF_NEGATIVE = 4, GMP_ERROR_INVALID_ARGUMENT = 8, GMP_ERROR_ALLOCATE = 16, GMP_ERROR_BAD_STRING = 32, GMP_ERROR_UNUSED_ERROR }; /* Major version number is the value of __GNU_MP__ too, above and in mp.h. */ #define __GNU_MP_VERSION 4 #define __GNU_MP_VERSION_MINOR 1 #define __GNU_MP_VERSION_PATCHLEVEL 0 #define __GMP_H__ #endif /* __GMP_H__ */ core++-1.7/win32/patches/gmp-4.1-dynamic/gmp.mak0100644000175000001440000117132210017704503020350 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on gmp.dsp !IF "$(CFG)" == "" CFG=gmp - Win32 Debug !MESSAGE No configuration specified. Defaulting to gmp - Win32 Debug. !ENDIF !IF "$(CFG)" != "gmp - Win32 Release" && "$(CFG)" != "gmp - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gmp.mak" CFG="gmp - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gmp - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "gmp - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "gmp - Win32 Release" OUTDIR=.\../lib INTDIR=.\Release ALL : "$(OUTDIR)\gmp.dll" CLEAN : -@erase "$(INTDIR)\asprintf.obj" -@erase "$(INTDIR)\asprntffuns.obj" -@erase "$(INTDIR)\assert.obj" -@erase "$(INTDIR)\compat.obj" -@erase "$(INTDIR)\doprnt.obj" -@erase "$(INTDIR)\doprntf.obj" -@erase "$(INTDIR)\doprnti.obj" -@erase "$(INTDIR)\doscan.obj" -@erase "$(INTDIR)\errno.obj" -@erase "$(INTDIR)\extract-dbl.obj" -@erase "$(INTDIR)\fprintf.obj" -@erase "$(INTDIR)\fscanf.obj" -@erase "$(INTDIR)\fscanffuns.obj" -@erase "$(INTDIR)\insert-dbl.obj" -@erase "$(INTDIR)\memory.obj" -@erase "$(INTDIR)\mp_bpl.obj" -@erase "$(INTDIR)\mp_clz_tab.obj" -@erase "$(INTDIR)\mp_minv_tab.obj" -@erase "$(INTDIR)\mp_set_fns.obj" -@erase "$(INTDIR)\mpf\vc60.idb" -@erase "$(INTDIR)\mpn\vc60.idb" -@erase "$(INTDIR)\mpq\vc60.idb" -@erase "$(INTDIR)\mpz\vc60.idb" -@erase "$(INTDIR)\obprintf.obj" -@erase "$(INTDIR)\obprntffuns.obj" -@erase "$(INTDIR)\obvprintf.obj" -@erase "$(INTDIR)\pow_1.obj" -@erase "$(INTDIR)\printf.obj" -@erase "$(INTDIR)\printffuns.obj" -@erase "$(INTDIR)\rand.obj" -@erase "$(INTDIR)\randclr.obj" -@erase "$(INTDIR)\randdef.obj" -@erase "$(INTDIR)\randlc.obj" -@erase "$(INTDIR)\randlc2s.obj" -@erase "$(INTDIR)\randlc2x.obj" -@erase "$(INTDIR)\randraw.obj" -@erase "$(INTDIR)\rands.obj" -@erase "$(INTDIR)\randsd.obj" -@erase "$(INTDIR)\randsdui.obj" -@erase "$(INTDIR)\repl-vsnprintf.obj" -@erase "$(INTDIR)\scanf.obj" -@erase "$(INTDIR)\snprintf.obj" -@erase "$(INTDIR)\snprntffuns.obj" -@erase "$(INTDIR)\sprintf.obj" -@erase "$(INTDIR)\sprintffuns.obj" -@erase "$(INTDIR)\sscanf.obj" -@erase "$(INTDIR)\sscanffuns.obj" -@erase "$(INTDIR)\vasprintf.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\version.obj" -@erase "$(INTDIR)\vfprintf.obj" -@erase "$(INTDIR)\vfscanf.obj" -@erase "$(INTDIR)\vprintf.obj" -@erase "$(INTDIR)\vscanf.obj" -@erase "$(INTDIR)\vsnprintf.obj" -@erase "$(INTDIR)\vsprintf.obj" -@erase "$(INTDIR)\vsscanf.obj" -@erase "$(OUTDIR)\gmp.dll" -@erase "$(OUTDIR)\gmp.exp" -@erase "$(OUTDIR)\gmp.lib" -@erase "$(INTDIR)\mpf\abs.obj" -@erase "$(INTDIR)\mpf\add.obj" -@erase "$(INTDIR)\mpf\add_ui.obj" -@erase "$(INTDIR)\mpf\ceilfloor.obj" -@erase "$(INTDIR)\mpf\clear.obj" -@erase "$(INTDIR)\mpf\cmp.obj" -@erase "$(INTDIR)\mpf\cmp_d.obj" -@erase "$(INTDIR)\mpf\cmp_si.obj" -@erase "$(INTDIR)\mpf\cmp_ui.obj" -@erase "$(INTDIR)\mpf\div.obj" -@erase "$(INTDIR)\mpf\div_2exp.obj" -@erase "$(INTDIR)\mpf\div_ui.obj" -@erase "$(INTDIR)\mpf\dump.obj" -@erase "$(INTDIR)\mpf\eq.obj" -@erase "$(INTDIR)\mpf\fits_sint.obj" -@erase "$(INTDIR)\mpf\fits_slong.obj" -@erase "$(INTDIR)\mpf\fits_sshort.obj" -@erase "$(INTDIR)\mpf\fits_uint.obj" -@erase "$(INTDIR)\mpf\fits_ulong.obj" -@erase "$(INTDIR)\mpf\fits_ushort.obj" -@erase "$(INTDIR)\mpf\get_d.obj" -@erase "$(INTDIR)\mpf\get_d_2exp.obj" -@erase "$(INTDIR)\mpf\get_dfl_prec.obj" -@erase "$(INTDIR)\mpf\get_prc.obj" -@erase "$(INTDIR)\mpf\get_si.obj" -@erase "$(INTDIR)\mpf\get_str.obj" -@erase "$(INTDIR)\mpf\get_ui.obj" -@erase "$(INTDIR)\mpf\init.obj" -@erase "$(INTDIR)\mpf\init2.obj" -@erase "$(INTDIR)\mpf\inp_str.obj" -@erase "$(INTDIR)\mpf\int_p.obj" -@erase "$(INTDIR)\mpf\iset.obj" -@erase "$(INTDIR)\mpf\iset_d.obj" -@erase "$(INTDIR)\mpf\iset_si.obj" -@erase "$(INTDIR)\mpf\iset_str.obj" -@erase "$(INTDIR)\mpf\iset_ui.obj" -@erase "$(INTDIR)\mpf\mul.obj" -@erase "$(INTDIR)\mpf\mul_2exp.obj" -@erase "$(INTDIR)\mpf\mul_ui.obj" -@erase "$(INTDIR)\mpf\neg.obj" -@erase "$(INTDIR)\mpf\out_str.obj" -@erase "$(INTDIR)\mpf\pow_ui.obj" -@erase "$(INTDIR)\mpf\random2.obj" -@erase "$(INTDIR)\mpf\reldiff.obj" -@erase "$(INTDIR)\mpf\set.obj" -@erase "$(INTDIR)\mpf\set_d.obj" -@erase "$(INTDIR)\mpf\set_dfl_prec.obj" -@erase "$(INTDIR)\mpf\set_prc.obj" -@erase "$(INTDIR)\mpf\set_prc_raw.obj" -@erase "$(INTDIR)\mpf\set_q.obj" -@erase "$(INTDIR)\mpf\set_si.obj" -@erase "$(INTDIR)\mpf\set_str.obj" -@erase "$(INTDIR)\mpf\set_ui.obj" -@erase "$(INTDIR)\mpf\set_z.obj" -@erase "$(INTDIR)\mpf\size.obj" -@erase "$(INTDIR)\mpf\sqrt.obj" -@erase "$(INTDIR)\mpf\sqrt_ui.obj" -@erase "$(INTDIR)\mpf\sub.obj" -@erase "$(INTDIR)\mpf\sub_ui.obj" -@erase "$(INTDIR)\mpf\swap.obj" -@erase "$(INTDIR)\mpf\trunc.obj" -@erase "$(INTDIR)\mpf\ui_div.obj" -@erase "$(INTDIR)\mpf\ui_sub.obj" -@erase "$(INTDIR)\mpf\urandomb.obj" -@erase "$(INTDIR)\mpn\add.obj" -@erase "$(INTDIR)\mpn\add_1.obj" -@erase "$(INTDIR)\mpn\add_n.obj" -@erase "$(INTDIR)\mpn\addmul_1.obj" -@erase "$(INTDIR)\mpn\bdivmod.obj" -@erase "$(INTDIR)\mpn\cmp.obj" -@erase "$(INTDIR)\mpn\dc_divrem_n.obj" -@erase "$(INTDIR)\mpn\dive_1.obj" -@erase "$(INTDIR)\mpn\diveby3.obj" -@erase "$(INTDIR)\mpn\divis.obj" -@erase "$(INTDIR)\mpn\divrem.obj" -@erase "$(INTDIR)\mpn\divrem_1.obj" -@erase "$(INTDIR)\mpn\divrem_2.obj" -@erase "$(INTDIR)\mpn\dump.obj" -@erase "$(INTDIR)\mpn\fib2_ui.obj" -@erase "$(INTDIR)\mpn\gcd.obj" -@erase "$(INTDIR)\mpn\gcd_1.obj" -@erase "$(INTDIR)\mpn\gcdext.obj" -@erase "$(INTDIR)\mpn\get_str.obj" -@erase "$(INTDIR)\mpn\hamdist.obj" -@erase "$(INTDIR)\mpn\jacbase.obj" -@erase "$(INTDIR)\mpn\lshift.obj" -@erase "$(INTDIR)\mpn\mod_1.obj" -@erase "$(INTDIR)\mpn\mod_34lsub1.obj" -@erase "$(INTDIR)\mpn\mode1o.obj" -@erase "$(INTDIR)\mpn\mp_bases.obj" -@erase "$(INTDIR)\mpn\mul.obj" -@erase "$(INTDIR)\mpn\mul_1.obj" -@erase "$(INTDIR)\mpn\mul_basecase.obj" -@erase "$(INTDIR)\mpn\mul_fft.obj" -@erase "$(INTDIR)\mpn\mul_n.obj" -@erase "$(INTDIR)\mpn\perfsqr.obj" -@erase "$(INTDIR)\mpn\popcount.obj" -@erase "$(INTDIR)\mpn\pre_divrem_1.obj" -@erase "$(INTDIR)\mpn\pre_mod_1.obj" -@erase "$(INTDIR)\mpn\random.obj" -@erase "$(INTDIR)\mpn\random2.obj" -@erase "$(INTDIR)\mpn\rshift.obj" -@erase "$(INTDIR)\mpn\sb_divrem_mn.obj" -@erase "$(INTDIR)\mpn\scan0.obj" -@erase "$(INTDIR)\mpn\scan1.obj" -@erase "$(INTDIR)\mpn\set_str.obj" -@erase "$(INTDIR)\mpn\sqr_basecase.obj" -@erase "$(INTDIR)\mpn\sqrtrem.obj" -@erase "$(INTDIR)\mpn\sub.obj" -@erase "$(INTDIR)\mpn\sub_1.obj" -@erase "$(INTDIR)\mpn\sub_n.obj" -@erase "$(INTDIR)\mpn\submul_1.obj" -@erase "$(INTDIR)\mpn\tdiv_qr.obj" -@erase "$(INTDIR)\mpq\abs.obj" -@erase "$(INTDIR)\mpq\aors.obj" -@erase "$(INTDIR)\mpq\canonicalize.obj" -@erase "$(INTDIR)\mpq\clear.obj" -@erase "$(INTDIR)\mpq\cmp.obj" -@erase "$(INTDIR)\mpq\cmp_si.obj" -@erase "$(INTDIR)\mpq\cmp_ui.obj" -@erase "$(INTDIR)\mpq\div.obj" -@erase "$(INTDIR)\mpq\equal.obj" -@erase "$(INTDIR)\mpq\get_d.obj" -@erase "$(INTDIR)\mpq\get_den.obj" -@erase "$(INTDIR)\mpq\get_num.obj" -@erase "$(INTDIR)\mpq\get_str.obj" -@erase "$(INTDIR)\mpq\init.obj" -@erase "$(INTDIR)\mpq\inp_str.obj" -@erase "$(INTDIR)\mpq\inv.obj" -@erase "$(INTDIR)\mpq\md_2exp.obj" -@erase "$(INTDIR)\mpq\mul.obj" -@erase "$(INTDIR)\mpq\neg.obj" -@erase "$(INTDIR)\mpq\out_str.obj" -@erase "$(INTDIR)\mpq\set.obj" -@erase "$(INTDIR)\mpq\set_d.obj" -@erase "$(INTDIR)\mpq\set_den.obj" -@erase "$(INTDIR)\mpq\set_f.obj" -@erase "$(INTDIR)\mpq\set_num.obj" -@erase "$(INTDIR)\mpq\set_si.obj" -@erase "$(INTDIR)\mpq\set_str.obj" -@erase "$(INTDIR)\mpq\set_ui.obj" -@erase "$(INTDIR)\mpq\set_z.obj" -@erase "$(INTDIR)\mpq\swap.obj" -@erase "$(INTDIR)\mpz\abs.obj" -@erase "$(INTDIR)\mpz\add.obj" -@erase "$(INTDIR)\mpz\add_ui.obj" -@erase "$(INTDIR)\mpz\and.obj" -@erase "$(INTDIR)\mpz\aorsmul.obj" -@erase "$(INTDIR)\mpz\aorsmul_i.obj" -@erase "$(INTDIR)\mpz\array_init.obj" -@erase "$(INTDIR)\mpz\bin_ui.obj" -@erase "$(INTDIR)\mpz\bin_uiui.obj" -@erase "$(INTDIR)\mpz\cdiv_q.obj" -@erase "$(INTDIR)\mpz\cdiv_q_ui.obj" -@erase "$(INTDIR)\mpz\cdiv_qr.obj" -@erase "$(INTDIR)\mpz\cdiv_qr_ui.obj" -@erase "$(INTDIR)\mpz\cdiv_r.obj" -@erase "$(INTDIR)\mpz\cdiv_r_ui.obj" -@erase "$(INTDIR)\mpz\cdiv_ui.obj" -@erase "$(INTDIR)\mpz\cfdiv_q_2exp.obj" -@erase "$(INTDIR)\mpz\cfdiv_r_2exp.obj" -@erase "$(INTDIR)\mpz\clear.obj" -@erase "$(INTDIR)\mpz\clrbit.obj" -@erase "$(INTDIR)\mpz\cmp.obj" -@erase "$(INTDIR)\mpz\cmp_d.obj" -@erase "$(INTDIR)\mpz\cmp_si.obj" -@erase "$(INTDIR)\mpz\cmp_ui.obj" -@erase "$(INTDIR)\mpz\cmpabs.obj" -@erase "$(INTDIR)\mpz\cmpabs_d.obj" -@erase "$(INTDIR)\mpz\cmpabs_ui.obj" -@erase "$(INTDIR)\mpz\com.obj" -@erase "$(INTDIR)\mpz\cong.obj" -@erase "$(INTDIR)\mpz\cong_2exp.obj" -@erase "$(INTDIR)\mpz\cong_ui.obj" -@erase "$(INTDIR)\mpz\dive_ui.obj" -@erase "$(INTDIR)\mpz\divegcd.obj" -@erase "$(INTDIR)\mpz\divexact.obj" -@erase "$(INTDIR)\mpz\divis.obj" -@erase "$(INTDIR)\mpz\divis_2exp.obj" -@erase "$(INTDIR)\mpz\divis_ui.obj" -@erase "$(INTDIR)\mpz\dump.obj" -@erase "$(INTDIR)\mpz\fac_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_q.obj" -@erase "$(INTDIR)\mpz\fdiv_q_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_qr.obj" -@erase "$(INTDIR)\mpz\fdiv_qr_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_r.obj" -@erase "$(INTDIR)\mpz\fdiv_r_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_ui.obj" -@erase "$(INTDIR)\mpz\fib2_ui.obj" -@erase "$(INTDIR)\mpz\fib_ui.obj" -@erase "$(INTDIR)\mpz\fits_sint.obj" -@erase "$(INTDIR)\mpz\fits_slong.obj" -@erase "$(INTDIR)\mpz\fits_sshort.obj" -@erase "$(INTDIR)\mpz\fits_uint.obj" -@erase "$(INTDIR)\mpz\fits_ulong.obj" -@erase "$(INTDIR)\mpz\fits_ushort.obj" -@erase "$(INTDIR)\mpz\gcd.obj" -@erase "$(INTDIR)\mpz\gcd_ui.obj" -@erase "$(INTDIR)\mpz\gcdext.obj" -@erase "$(INTDIR)\mpz\get_d.obj" -@erase "$(INTDIR)\mpz\get_d_2exp.obj" -@erase "$(INTDIR)\mpz\get_si.obj" -@erase "$(INTDIR)\mpz\get_str.obj" -@erase "$(INTDIR)\mpz\get_ui.obj" -@erase "$(INTDIR)\mpz\getlimbn.obj" -@erase "$(INTDIR)\mpz\hamdist.obj" -@erase "$(INTDIR)\mpz\init.obj" -@erase "$(INTDIR)\mpz\init2.obj" -@erase "$(INTDIR)\mpz\inp_raw.obj" -@erase "$(INTDIR)\mpz\inp_str.obj" -@erase "$(INTDIR)\mpz\invert.obj" -@erase "$(INTDIR)\mpz\ior.obj" -@erase "$(INTDIR)\mpz\iset.obj" -@erase "$(INTDIR)\mpz\iset_d.obj" -@erase "$(INTDIR)\mpz\iset_si.obj" -@erase "$(INTDIR)\mpz\iset_str.obj" -@erase "$(INTDIR)\mpz\iset_ui.obj" -@erase "$(INTDIR)\mpz\jacobi.obj" -@erase "$(INTDIR)\mpz\kronsz.obj" -@erase "$(INTDIR)\mpz\kronuz.obj" -@erase "$(INTDIR)\mpz\kronzs.obj" -@erase "$(INTDIR)\mpz\kronzu.obj" -@erase "$(INTDIR)\mpz\lcm.obj" -@erase "$(INTDIR)\mpz\lcm_ui.obj" -@erase "$(INTDIR)\mpz\lucnum2_ui.obj" -@erase "$(INTDIR)\mpz\lucnum_ui.obj" -@erase "$(INTDIR)\mpz\millerrabin.obj" -@erase "$(INTDIR)\mpz\mod.obj" -@erase "$(INTDIR)\mpz\mul.obj" -@erase "$(INTDIR)\mpz\mul_2exp.obj" -@erase "$(INTDIR)\mpz\mul_si.obj" -@erase "$(INTDIR)\mpz\mul_ui.obj" -@erase "$(INTDIR)\mpz\n_pow_ui.obj" -@erase "$(INTDIR)\mpz\neg.obj" -@erase "$(INTDIR)\mpz\nextprime.obj" -@erase "$(INTDIR)\mpz\out_raw.obj" -@erase "$(INTDIR)\mpz\out_str.obj" -@erase "$(INTDIR)\mpz\perfpow.obj" -@erase "$(INTDIR)\mpz\perfsqr.obj" -@erase "$(INTDIR)\mpz\popcount.obj" -@erase "$(INTDIR)\mpz\pow_ui.obj" -@erase "$(INTDIR)\mpz\powm.obj" -@erase "$(INTDIR)\mpz\powm_ui.obj" -@erase "$(INTDIR)\mpz\pprime_p.obj" -@erase "$(INTDIR)\mpz\random.obj" -@erase "$(INTDIR)\mpz\random2.obj" -@erase "$(INTDIR)\mpz\realloc.obj" -@erase "$(INTDIR)\mpz\realloc2.obj" -@erase "$(INTDIR)\mpz\remove.obj" -@erase "$(INTDIR)\mpz\root.obj" -@erase "$(INTDIR)\mpz\rootrem.obj" -@erase "$(INTDIR)\mpz\rrandomb.obj" -@erase "$(INTDIR)\mpz\scan0.obj" -@erase "$(INTDIR)\mpz\scan1.obj" -@erase "$(INTDIR)\mpz\set.obj" -@erase "$(INTDIR)\mpz\set_d.obj" -@erase "$(INTDIR)\mpz\set_f.obj" -@erase "$(INTDIR)\mpz\set_q.obj" -@erase "$(INTDIR)\mpz\set_si.obj" -@erase "$(INTDIR)\mpz\set_str.obj" -@erase "$(INTDIR)\mpz\set_ui.obj" -@erase "$(INTDIR)\mpz\setbit.obj" -@erase "$(INTDIR)\mpz\size.obj" -@erase "$(INTDIR)\mpz\sizeinbase.obj" -@erase "$(INTDIR)\mpz\sqrt.obj" -@erase "$(INTDIR)\mpz\sqrtrem.obj" -@erase "$(INTDIR)\mpz\sub.obj" -@erase "$(INTDIR)\mpz\sub_ui.obj" -@erase "$(INTDIR)\mpz\swap.obj" -@erase "$(INTDIR)\mpz\tdiv_q.obj" -@erase "$(INTDIR)\mpz\tdiv_q_2exp.obj" -@erase "$(INTDIR)\mpz\tdiv_q_ui.obj" -@erase "$(INTDIR)\mpz\tdiv_qr.obj" -@erase "$(INTDIR)\mpz\tdiv_qr_ui.obj" -@erase "$(INTDIR)\mpz\tdiv_r.obj" -@erase "$(INTDIR)\mpz\tdiv_r_2exp.obj" -@erase "$(INTDIR)\mpz\tdiv_r_ui.obj" -@erase "$(INTDIR)\mpz\tdiv_ui.obj" -@erase "$(INTDIR)\mpz\tstbit.obj" -@erase "$(INTDIR)\mpz\ui_pow_ui.obj" -@erase "$(INTDIR)\mpz\urandomb.obj" -@erase "$(INTDIR)\mpz\urandomm.obj" -@erase "$(INTDIR)\mpz\xor.obj" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" "$(INTDIR)" : if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)" if not exist "$(INTDIR)\mpf" mkdir "$(INTDIR)\mpf" if not exist "$(INTDIR)\mpn" mkdir "$(INTDIR)\mpn" if not exist "$(INTDIR)\mpq" mkdir "$(INTDIR)\mpq" if not exist "$(INTDIR)\mpz" mkdir "$(INTDIR)\mpz" CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"$(INTDIR)\gmp.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gmp.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\gmp.pdb" /machine:I386 /out:"$(OUTDIR)\gmp.dll" /implib:"$(OUTDIR)\gmp.lib" LINK32_OBJS= \ "$(INTDIR)\mpf\abs.obj" \ "$(INTDIR)\mpq\abs.obj" \ "$(INTDIR)\mpz\abs.obj" \ "$(INTDIR)\mpf\add.obj" \ "$(INTDIR)\mpn\add.obj" \ "$(INTDIR)\mpz\add.obj" \ "$(INTDIR)\mpn\add_1.obj" \ "$(INTDIR)\mpn\add_n.obj" \ "$(INTDIR)\mpf\add_ui.obj" \ "$(INTDIR)\mpz\add_ui.obj" \ "$(INTDIR)\mpn\addmul_1.obj" \ "$(INTDIR)\mpz\and.obj" \ "$(INTDIR)\mpq\aors.obj" \ "$(INTDIR)\mpz\aorsmul.obj" \ "$(INTDIR)\mpz\aorsmul_i.obj" \ "$(INTDIR)\mpz\array_init.obj" \ "$(INTDIR)\asprintf.obj" \ "$(INTDIR)\asprntffuns.obj" \ "$(INTDIR)\assert.obj" \ "$(INTDIR)\mpn\bdivmod.obj" \ "$(INTDIR)\mpz\bin_ui.obj" \ "$(INTDIR)\mpz\bin_uiui.obj" \ "$(INTDIR)\mpq\canonicalize.obj" \ "$(INTDIR)\mpz\cdiv_q.obj" \ "$(INTDIR)\mpz\cdiv_q_ui.obj" \ "$(INTDIR)\mpz\cdiv_qr.obj" \ "$(INTDIR)\mpz\cdiv_qr_ui.obj" \ "$(INTDIR)\mpz\cdiv_r.obj" \ "$(INTDIR)\mpz\cdiv_r_ui.obj" \ "$(INTDIR)\mpz\cdiv_ui.obj" \ "$(INTDIR)\mpf\ceilfloor.obj" \ "$(INTDIR)\mpz\cfdiv_q_2exp.obj" \ "$(INTDIR)\mpz\cfdiv_r_2exp.obj" \ "$(INTDIR)\mpf\clear.obj" \ "$(INTDIR)\mpq\clear.obj" \ "$(INTDIR)\mpz\clear.obj" \ "$(INTDIR)\mpz\clrbit.obj" \ "$(INTDIR)\mpf\cmp.obj" \ "$(INTDIR)\mpn\cmp.obj" \ "$(INTDIR)\mpq\cmp.obj" \ "$(INTDIR)\mpz\cmp.obj" \ "$(INTDIR)\mpf\cmp_d.obj" \ "$(INTDIR)\mpz\cmp_d.obj" \ "$(INTDIR)\mpf\cmp_si.obj" \ "$(INTDIR)\mpq\cmp_si.obj" \ "$(INTDIR)\mpz\cmp_si.obj" \ "$(INTDIR)\mpf\cmp_ui.obj" \ "$(INTDIR)\mpq\cmp_ui.obj" \ "$(INTDIR)\mpz\cmp_ui.obj" \ "$(INTDIR)\mpz\cmpabs.obj" \ "$(INTDIR)\mpz\cmpabs_d.obj" \ "$(INTDIR)\mpz\cmpabs_ui.obj" \ "$(INTDIR)\mpz\com.obj" \ "$(INTDIR)\compat.obj" \ "$(INTDIR)\mpz\cong.obj" \ "$(INTDIR)\mpz\cong_2exp.obj" \ "$(INTDIR)\mpz\cong_ui.obj" \ "$(INTDIR)\mpn\dc_divrem_n.obj" \ "$(INTDIR)\mpf\div.obj" \ "$(INTDIR)\mpq\div.obj" \ "$(INTDIR)\mpf\div_2exp.obj" \ "$(INTDIR)\mpf\div_ui.obj" \ "$(INTDIR)\mpn\dive_1.obj" \ "$(INTDIR)\mpz\dive_ui.obj" \ "$(INTDIR)\mpn\diveby3.obj" \ "$(INTDIR)\mpz\divegcd.obj" \ "$(INTDIR)\mpz\divexact.obj" \ "$(INTDIR)\mpn\divis.obj" \ "$(INTDIR)\mpz\divis.obj" \ "$(INTDIR)\mpz\divis_2exp.obj" \ "$(INTDIR)\mpz\divis_ui.obj" \ "$(INTDIR)\mpn\divrem.obj" \ "$(INTDIR)\mpn\divrem_1.obj" \ "$(INTDIR)\mpn\divrem_2.obj" \ "$(INTDIR)\doprnt.obj" \ "$(INTDIR)\doprntf.obj" \ "$(INTDIR)\doprnti.obj" \ "$(INTDIR)\doscan.obj" \ "$(INTDIR)\mpf\dump.obj" \ "$(INTDIR)\mpn\dump.obj" \ "$(INTDIR)\mpz\dump.obj" \ "$(INTDIR)\mpf\eq.obj" \ "$(INTDIR)\mpq\equal.obj" \ "$(INTDIR)\errno.obj" \ "$(INTDIR)\extract-dbl.obj" \ "$(INTDIR)\mpz\fac_ui.obj" \ "$(INTDIR)\mpz\fdiv_q.obj" \ "$(INTDIR)\mpz\fdiv_q_ui.obj" \ "$(INTDIR)\mpz\fdiv_qr.obj" \ "$(INTDIR)\mpz\fdiv_qr_ui.obj" \ "$(INTDIR)\mpz\fdiv_r.obj" \ "$(INTDIR)\mpz\fdiv_r_ui.obj" \ "$(INTDIR)\mpz\fdiv_ui.obj" \ "$(INTDIR)\mpn\fib2_ui.obj" \ "$(INTDIR)\mpz\fib2_ui.obj" \ "$(INTDIR)\mpz\fib_ui.obj" \ "$(INTDIR)\mpf\fits_sint.obj" \ "$(INTDIR)\mpz\fits_sint.obj" \ "$(INTDIR)\mpf\fits_slong.obj" \ "$(INTDIR)\mpz\fits_slong.obj" \ "$(INTDIR)\mpf\fits_sshort.obj" \ "$(INTDIR)\mpz\fits_sshort.obj" \ "$(INTDIR)\mpf\fits_uint.obj" \ "$(INTDIR)\mpz\fits_uint.obj" \ "$(INTDIR)\mpf\fits_ulong.obj" \ "$(INTDIR)\mpz\fits_ulong.obj" \ "$(INTDIR)\mpf\fits_ushort.obj" \ "$(INTDIR)\mpz\fits_ushort.obj" \ "$(INTDIR)\fprintf.obj" \ "$(INTDIR)\fscanf.obj" \ "$(INTDIR)\fscanffuns.obj" \ "$(INTDIR)\mpn\gcd.obj" \ "$(INTDIR)\mpz\gcd.obj" \ "$(INTDIR)\mpn\gcd_1.obj" \ "$(INTDIR)\mpz\gcd_ui.obj" \ "$(INTDIR)\mpn\gcdext.obj" \ "$(INTDIR)\mpz\gcdext.obj" \ "$(INTDIR)\mpf\get_d.obj" \ "$(INTDIR)\mpq\get_d.obj" \ "$(INTDIR)\mpz\get_d.obj" \ "$(INTDIR)\mpf\get_d_2exp.obj" \ "$(INTDIR)\mpz\get_d_2exp.obj" \ "$(INTDIR)\mpq\get_den.obj" \ "$(INTDIR)\mpf\get_dfl_prec.obj" \ "$(INTDIR)\mpq\get_num.obj" \ "$(INTDIR)\mpf\get_prc.obj" \ "$(INTDIR)\mpf\get_si.obj" \ "$(INTDIR)\mpz\get_si.obj" \ "$(INTDIR)\mpf\get_str.obj" \ "$(INTDIR)\mpn\get_str.obj" \ "$(INTDIR)\mpq\get_str.obj" \ "$(INTDIR)\mpz\get_str.obj" \ "$(INTDIR)\mpf\get_ui.obj" \ "$(INTDIR)\mpz\get_ui.obj" \ "$(INTDIR)\mpz\getlimbn.obj" \ "$(INTDIR)\mpn\hamdist.obj" \ "$(INTDIR)\mpz\hamdist.obj" \ "$(INTDIR)\mpf\init.obj" \ "$(INTDIR)\mpq\init.obj" \ "$(INTDIR)\mpz\init.obj" \ "$(INTDIR)\mpf\init2.obj" \ "$(INTDIR)\mpz\init2.obj" \ "$(INTDIR)\mpz\inp_raw.obj" \ "$(INTDIR)\mpf\inp_str.obj" \ "$(INTDIR)\mpq\inp_str.obj" \ "$(INTDIR)\mpz\inp_str.obj" \ "$(INTDIR)\insert-dbl.obj" \ "$(INTDIR)\mpf\int_p.obj" \ "$(INTDIR)\mpq\inv.obj" \ "$(INTDIR)\mpz\invert.obj" \ "$(INTDIR)\mpz\ior.obj" \ "$(INTDIR)\mpf\iset.obj" \ "$(INTDIR)\mpz\iset.obj" \ "$(INTDIR)\mpf\iset_d.obj" \ "$(INTDIR)\mpz\iset_d.obj" \ "$(INTDIR)\mpf\iset_si.obj" \ "$(INTDIR)\mpz\iset_si.obj" \ "$(INTDIR)\mpf\iset_str.obj" \ "$(INTDIR)\mpz\iset_str.obj" \ "$(INTDIR)\mpf\iset_ui.obj" \ "$(INTDIR)\mpz\iset_ui.obj" \ "$(INTDIR)\mpn\jacbase.obj" \ "$(INTDIR)\mpz\jacobi.obj" \ "$(INTDIR)\mpz\kronsz.obj" \ "$(INTDIR)\mpz\kronuz.obj" \ "$(INTDIR)\mpz\kronzs.obj" \ "$(INTDIR)\mpz\kronzu.obj" \ "$(INTDIR)\mpz\lcm.obj" \ "$(INTDIR)\mpz\lcm_ui.obj" \ "$(INTDIR)\mpn\lshift.obj" \ "$(INTDIR)\mpz\lucnum2_ui.obj" \ "$(INTDIR)\mpz\lucnum_ui.obj" \ "$(INTDIR)\mpq\md_2exp.obj" \ "$(INTDIR)\memory.obj" \ "$(INTDIR)\mpz\millerrabin.obj" \ "$(INTDIR)\mpz\mod.obj" \ "$(INTDIR)\mpn\mod_1.obj" \ "$(INTDIR)\mpn\mod_34lsub1.obj" \ "$(INTDIR)\mpn\mode1o.obj" \ "$(INTDIR)\mpn\mp_bases.obj" \ "$(INTDIR)\mp_bpl.obj" \ "$(INTDIR)\mp_clz_tab.obj" \ "$(INTDIR)\mp_minv_tab.obj" \ "$(INTDIR)\mp_set_fns.obj" \ "$(INTDIR)\mpf\mul.obj" \ "$(INTDIR)\mpn\mul.obj" \ "$(INTDIR)\mpq\mul.obj" \ "$(INTDIR)\mpz\mul.obj" \ "$(INTDIR)\mpn\mul_1.obj" \ "$(INTDIR)\mpf\mul_2exp.obj" \ "$(INTDIR)\mpz\mul_2exp.obj" \ "$(INTDIR)\mpn\mul_basecase.obj" \ "$(INTDIR)\mpn\mul_fft.obj" \ "$(INTDIR)\mpn\mul_n.obj" \ "$(INTDIR)\mpz\mul_si.obj" \ "$(INTDIR)\mpf\mul_ui.obj" \ "$(INTDIR)\mpz\mul_ui.obj" \ "$(INTDIR)\mpz\n_pow_ui.obj" \ "$(INTDIR)\mpf\neg.obj" \ "$(INTDIR)\mpq\neg.obj" \ "$(INTDIR)\mpz\neg.obj" \ "$(INTDIR)\mpz\nextprime.obj" \ "$(INTDIR)\obprintf.obj" \ "$(INTDIR)\obprntffuns.obj" \ "$(INTDIR)\obvprintf.obj" \ "$(INTDIR)\mpz\out_raw.obj" \ "$(INTDIR)\mpf\out_str.obj" \ "$(INTDIR)\mpq\out_str.obj" \ "$(INTDIR)\mpz\out_str.obj" \ "$(INTDIR)\mpz\perfpow.obj" \ "$(INTDIR)\mpn\perfsqr.obj" \ "$(INTDIR)\mpz\perfsqr.obj" \ "$(INTDIR)\mpn\popcount.obj" \ "$(INTDIR)\mpz\popcount.obj" \ "$(INTDIR)\pow_1.obj" \ "$(INTDIR)\mpf\pow_ui.obj" \ "$(INTDIR)\mpz\pow_ui.obj" \ "$(INTDIR)\mpz\powm.obj" \ "$(INTDIR)\mpz\powm_ui.obj" \ "$(INTDIR)\mpz\pprime_p.obj" \ "$(INTDIR)\mpn\pre_divrem_1.obj" \ "$(INTDIR)\mpn\pre_mod_1.obj" \ "$(INTDIR)\printf.obj" \ "$(INTDIR)\printffuns.obj" \ "$(INTDIR)\rand.obj" \ "$(INTDIR)\randclr.obj" \ "$(INTDIR)\randdef.obj" \ "$(INTDIR)\randlc.obj" \ "$(INTDIR)\randlc2s.obj" \ "$(INTDIR)\randlc2x.obj" \ "$(INTDIR)\mpn\random.obj" \ "$(INTDIR)\mpz\random.obj" \ "$(INTDIR)\mpf\random2.obj" \ "$(INTDIR)\mpn\random2.obj" \ "$(INTDIR)\mpz\random2.obj" \ "$(INTDIR)\randraw.obj" \ "$(INTDIR)\rands.obj" \ "$(INTDIR)\randsd.obj" \ "$(INTDIR)\randsdui.obj" \ "$(INTDIR)\mpz\realloc.obj" \ "$(INTDIR)\mpz\realloc2.obj" \ "$(INTDIR)\mpf\reldiff.obj" \ "$(INTDIR)\mpz\remove.obj" \ "$(INTDIR)\repl-vsnprintf.obj" \ "$(INTDIR)\mpz\root.obj" \ "$(INTDIR)\mpz\rootrem.obj" \ "$(INTDIR)\mpz\rrandomb.obj" \ "$(INTDIR)\mpn\rshift.obj" \ "$(INTDIR)\mpn\sb_divrem_mn.obj" \ "$(INTDIR)\mpn\scan0.obj" \ "$(INTDIR)\mpz\scan0.obj" \ "$(INTDIR)\mpn\scan1.obj" \ "$(INTDIR)\mpz\scan1.obj" \ "$(INTDIR)\scanf.obj" \ "$(INTDIR)\mpf\set.obj" \ "$(INTDIR)\mpq\set.obj" \ "$(INTDIR)\mpz\set.obj" \ "$(INTDIR)\mpf\set_d.obj" \ "$(INTDIR)\mpq\set_d.obj" \ "$(INTDIR)\mpz\set_d.obj" \ "$(INTDIR)\mpq\set_den.obj" \ "$(INTDIR)\mpf\set_dfl_prec.obj" \ "$(INTDIR)\mpq\set_f.obj" \ "$(INTDIR)\mpz\set_f.obj" \ "$(INTDIR)\mpq\set_num.obj" \ "$(INTDIR)\mpf\set_prc.obj" \ "$(INTDIR)\mpf\set_prc_raw.obj" \ "$(INTDIR)\mpf\set_q.obj" \ "$(INTDIR)\mpz\set_q.obj" \ "$(INTDIR)\mpf\set_si.obj" \ "$(INTDIR)\mpq\set_si.obj" \ "$(INTDIR)\mpz\set_si.obj" \ "$(INTDIR)\mpf\set_str.obj" \ "$(INTDIR)\mpn\set_str.obj" \ "$(INTDIR)\mpq\set_str.obj" \ "$(INTDIR)\mpz\set_str.obj" \ "$(INTDIR)\mpf\set_ui.obj" \ "$(INTDIR)\mpq\set_ui.obj" \ "$(INTDIR)\mpz\set_ui.obj" \ "$(INTDIR)\mpf\set_z.obj" \ "$(INTDIR)\mpq\set_z.obj" \ "$(INTDIR)\mpz\setbit.obj" \ "$(INTDIR)\mpf\size.obj" \ "$(INTDIR)\mpz\size.obj" \ "$(INTDIR)\mpz\sizeinbase.obj" \ "$(INTDIR)\snprintf.obj" \ "$(INTDIR)\snprntffuns.obj" \ "$(INTDIR)\sprintf.obj" \ "$(INTDIR)\sprintffuns.obj" \ "$(INTDIR)\mpn\sqr_basecase.obj" \ "$(INTDIR)\mpf\sqrt.obj" \ "$(INTDIR)\mpz\sqrt.obj" \ "$(INTDIR)\mpf\sqrt_ui.obj" \ "$(INTDIR)\mpn\sqrtrem.obj" \ "$(INTDIR)\mpz\sqrtrem.obj" \ "$(INTDIR)\sscanf.obj" \ "$(INTDIR)\sscanffuns.obj" \ "$(INTDIR)\mpf\sub.obj" \ "$(INTDIR)\mpn\sub.obj" \ "$(INTDIR)\mpz\sub.obj" \ "$(INTDIR)\mpn\sub_1.obj" \ "$(INTDIR)\mpn\sub_n.obj" \ "$(INTDIR)\mpf\sub_ui.obj" \ "$(INTDIR)\mpz\sub_ui.obj" \ "$(INTDIR)\mpn\submul_1.obj" \ "$(INTDIR)\mpf\swap.obj" \ "$(INTDIR)\mpq\swap.obj" \ "$(INTDIR)\mpz\swap.obj" \ "$(INTDIR)\mpz\tdiv_q.obj" \ "$(INTDIR)\mpz\tdiv_q_2exp.obj" \ "$(INTDIR)\mpz\tdiv_q_ui.obj" \ "$(INTDIR)\mpn\tdiv_qr.obj" \ "$(INTDIR)\mpz\tdiv_qr.obj" \ "$(INTDIR)\mpz\tdiv_qr_ui.obj" \ "$(INTDIR)\mpz\tdiv_r.obj" \ "$(INTDIR)\mpz\tdiv_r_2exp.obj" \ "$(INTDIR)\mpz\tdiv_r_ui.obj" \ "$(INTDIR)\mpz\tdiv_ui.obj" \ "$(INTDIR)\mpf\trunc.obj" \ "$(INTDIR)\mpz\tstbit.obj" \ "$(INTDIR)\mpf\ui_div.obj" \ "$(INTDIR)\mpz\ui_pow_ui.obj" \ "$(INTDIR)\mpf\ui_sub.obj" \ "$(INTDIR)\mpf\urandomb.obj" \ "$(INTDIR)\mpz\urandomb.obj" \ "$(INTDIR)\mpz\urandomm.obj" \ "$(INTDIR)\vasprintf.obj" \ "$(INTDIR)\version.obj" \ "$(INTDIR)\vfprintf.obj" \ "$(INTDIR)\vfscanf.obj" \ "$(INTDIR)\vprintf.obj" \ "$(INTDIR)\vscanf.obj" \ "$(INTDIR)\vsnprintf.obj" \ "$(INTDIR)\vsprintf.obj" \ "$(INTDIR)\vsscanf.obj" \ "$(INTDIR)\mpz\xor.obj" "$(OUTDIR)\gmp.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" OUTDIR=.\../lib INTDIR=.\Debug ALL : "$(OUTDIR)\gmpDebug.dll" CLEAN : -@erase "$(INTDIR)\asprintf.obj" -@erase "$(INTDIR)\asprntffuns.obj" -@erase "$(INTDIR)\assert.obj" -@erase "$(INTDIR)\compat.obj" -@erase "$(INTDIR)\doprnt.obj" -@erase "$(INTDIR)\doprntf.obj" -@erase "$(INTDIR)\doprnti.obj" -@erase "$(INTDIR)\doscan.obj" -@erase "$(INTDIR)\errno.obj" -@erase "$(INTDIR)\extract-dbl.obj" -@erase "$(INTDIR)\fprintf.obj" -@erase "$(INTDIR)\fscanf.obj" -@erase "$(INTDIR)\fscanffuns.obj" -@erase "$(INTDIR)\insert-dbl.obj" -@erase "$(INTDIR)\memory.obj" -@erase "$(INTDIR)\mp_bpl.obj" -@erase "$(INTDIR)\mp_clz_tab.obj" -@erase "$(INTDIR)\mp_minv_tab.obj" -@erase "$(INTDIR)\mp_set_fns.obj" -@erase "$(INTDIR)\mpf\vc60.idb" -@erase "$(INTDIR)\mpf\vc60.pdb" -@erase "$(INTDIR)\mpn\vc60.idb" -@erase "$(INTDIR)\mpn\vc60.pdb" -@erase "$(INTDIR)\mpq\vc60.idb" -@erase "$(INTDIR)\mpq\vc60.pdb" -@erase "$(INTDIR)\mpz\vc60.idb" -@erase "$(INTDIR)\mpz\vc60.pdb" -@erase "$(INTDIR)\obprintf.obj" -@erase "$(INTDIR)\obprntffuns.obj" -@erase "$(INTDIR)\obvprintf.obj" -@erase "$(INTDIR)\pow_1.obj" -@erase "$(INTDIR)\printf.obj" -@erase "$(INTDIR)\printffuns.obj" -@erase "$(INTDIR)\rand.obj" -@erase "$(INTDIR)\randclr.obj" -@erase "$(INTDIR)\randdef.obj" -@erase "$(INTDIR)\randlc.obj" -@erase "$(INTDIR)\randlc2s.obj" -@erase "$(INTDIR)\randlc2x.obj" -@erase "$(INTDIR)\randraw.obj" -@erase "$(INTDIR)\rands.obj" -@erase "$(INTDIR)\randsd.obj" -@erase "$(INTDIR)\randsdui.obj" -@erase "$(INTDIR)\repl-vsnprintf.obj" -@erase "$(INTDIR)\scanf.obj" -@erase "$(INTDIR)\snprintf.obj" -@erase "$(INTDIR)\snprntffuns.obj" -@erase "$(INTDIR)\sprintf.obj" -@erase "$(INTDIR)\sprintffuns.obj" -@erase "$(INTDIR)\sscanf.obj" -@erase "$(INTDIR)\sscanffuns.obj" -@erase "$(INTDIR)\vasprintf.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(INTDIR)\version.obj" -@erase "$(INTDIR)\vfprintf.obj" -@erase "$(INTDIR)\vfscanf.obj" -@erase "$(INTDIR)\vprintf.obj" -@erase "$(INTDIR)\vscanf.obj" -@erase "$(INTDIR)\vsnprintf.obj" -@erase "$(INTDIR)\vsprintf.obj" -@erase "$(INTDIR)\vsscanf.obj" -@erase "$(OUTDIR)\gmpDebug.dll" -@erase "$(OUTDIR)\gmpDebug.exp" -@erase "$(OUTDIR)\gmpDebug.ilk" -@erase "$(OUTDIR)\gmpDebug.lib" -@erase "$(OUTDIR)\gmpDebug.pdb" -@erase "$(INTDIR)\mpf\abs.obj" -@erase "$(INTDIR)\mpf\add.obj" -@erase "$(INTDIR)\mpf\add_ui.obj" -@erase "$(INTDIR)\mpf\ceilfloor.obj" -@erase "$(INTDIR)\mpf\clear.obj" -@erase "$(INTDIR)\mpf\cmp.obj" -@erase "$(INTDIR)\mpf\cmp_d.obj" -@erase "$(INTDIR)\mpf\cmp_si.obj" -@erase "$(INTDIR)\mpf\cmp_ui.obj" -@erase "$(INTDIR)\mpf\div.obj" -@erase "$(INTDIR)\mpf\div_2exp.obj" -@erase "$(INTDIR)\mpf\div_ui.obj" -@erase "$(INTDIR)\mpf\dump.obj" -@erase "$(INTDIR)\mpf\eq.obj" -@erase "$(INTDIR)\mpf\fits_sint.obj" -@erase "$(INTDIR)\mpf\fits_slong.obj" -@erase "$(INTDIR)\mpf\fits_sshort.obj" -@erase "$(INTDIR)\mpf\fits_uint.obj" -@erase "$(INTDIR)\mpf\fits_ulong.obj" -@erase "$(INTDIR)\mpf\fits_ushort.obj" -@erase "$(INTDIR)\mpf\get_d.obj" -@erase "$(INTDIR)\mpf\get_d_2exp.obj" -@erase "$(INTDIR)\mpf\get_dfl_prec.obj" -@erase "$(INTDIR)\mpf\get_prc.obj" -@erase "$(INTDIR)\mpf\get_si.obj" -@erase "$(INTDIR)\mpf\get_str.obj" -@erase "$(INTDIR)\mpf\get_ui.obj" -@erase "$(INTDIR)\mpf\init.obj" -@erase "$(INTDIR)\mpf\init2.obj" -@erase "$(INTDIR)\mpf\inp_str.obj" -@erase "$(INTDIR)\mpf\int_p.obj" -@erase "$(INTDIR)\mpf\iset.obj" -@erase "$(INTDIR)\mpf\iset_d.obj" -@erase "$(INTDIR)\mpf\iset_si.obj" -@erase "$(INTDIR)\mpf\iset_str.obj" -@erase "$(INTDIR)\mpf\iset_ui.obj" -@erase "$(INTDIR)\mpf\mul.obj" -@erase "$(INTDIR)\mpf\mul_2exp.obj" -@erase "$(INTDIR)\mpf\mul_ui.obj" -@erase "$(INTDIR)\mpf\neg.obj" -@erase "$(INTDIR)\mpf\out_str.obj" -@erase "$(INTDIR)\mpf\pow_ui.obj" -@erase "$(INTDIR)\mpf\random2.obj" -@erase "$(INTDIR)\mpf\reldiff.obj" -@erase "$(INTDIR)\mpf\set.obj" -@erase "$(INTDIR)\mpf\set_d.obj" -@erase "$(INTDIR)\mpf\set_dfl_prec.obj" -@erase "$(INTDIR)\mpf\set_prc.obj" -@erase "$(INTDIR)\mpf\set_prc_raw.obj" -@erase "$(INTDIR)\mpf\set_q.obj" -@erase "$(INTDIR)\mpf\set_si.obj" -@erase "$(INTDIR)\mpf\set_str.obj" -@erase "$(INTDIR)\mpf\set_ui.obj" -@erase "$(INTDIR)\mpf\set_z.obj" -@erase "$(INTDIR)\mpf\size.obj" -@erase "$(INTDIR)\mpf\sqrt.obj" -@erase "$(INTDIR)\mpf\sqrt_ui.obj" -@erase "$(INTDIR)\mpf\sub.obj" -@erase "$(INTDIR)\mpf\sub_ui.obj" -@erase "$(INTDIR)\mpf\swap.obj" -@erase "$(INTDIR)\mpf\trunc.obj" -@erase "$(INTDIR)\mpf\ui_div.obj" -@erase "$(INTDIR)\mpf\ui_sub.obj" -@erase "$(INTDIR)\mpf\urandomb.obj" -@erase "$(INTDIR)\mpn\add.obj" -@erase "$(INTDIR)\mpn\add_1.obj" -@erase "$(INTDIR)\mpn\add_n.obj" -@erase "$(INTDIR)\mpn\addmul_1.obj" -@erase "$(INTDIR)\mpn\bdivmod.obj" -@erase "$(INTDIR)\mpn\cmp.obj" -@erase "$(INTDIR)\mpn\dc_divrem_n.obj" -@erase "$(INTDIR)\mpn\dive_1.obj" -@erase "$(INTDIR)\mpn\diveby3.obj" -@erase "$(INTDIR)\mpn\divis.obj" -@erase "$(INTDIR)\mpn\divrem.obj" -@erase "$(INTDIR)\mpn\divrem_1.obj" -@erase "$(INTDIR)\mpn\divrem_2.obj" -@erase "$(INTDIR)\mpn\dump.obj" -@erase "$(INTDIR)\mpn\fib2_ui.obj" -@erase "$(INTDIR)\mpn\gcd.obj" -@erase "$(INTDIR)\mpn\gcd_1.obj" -@erase "$(INTDIR)\mpn\gcdext.obj" -@erase "$(INTDIR)\mpn\get_str.obj" -@erase "$(INTDIR)\mpn\hamdist.obj" -@erase "$(INTDIR)\mpn\jacbase.obj" -@erase "$(INTDIR)\mpn\lshift.obj" -@erase "$(INTDIR)\mpn\mod_1.obj" -@erase "$(INTDIR)\mpn\mod_34lsub1.obj" -@erase "$(INTDIR)\mpn\mode1o.obj" -@erase "$(INTDIR)\mpn\mp_bases.obj" -@erase "$(INTDIR)\mpn\mul.obj" -@erase "$(INTDIR)\mpn\mul_1.obj" -@erase "$(INTDIR)\mpn\mul_basecase.obj" -@erase "$(INTDIR)\mpn\mul_fft.obj" -@erase "$(INTDIR)\mpn\mul_n.obj" -@erase "$(INTDIR)\mpn\perfsqr.obj" -@erase "$(INTDIR)\mpn\popcount.obj" -@erase "$(INTDIR)\mpn\pre_divrem_1.obj" -@erase "$(INTDIR)\mpn\pre_mod_1.obj" -@erase "$(INTDIR)\mpn\random.obj" -@erase "$(INTDIR)\mpn\random2.obj" -@erase "$(INTDIR)\mpn\rshift.obj" -@erase "$(INTDIR)\mpn\sb_divrem_mn.obj" -@erase "$(INTDIR)\mpn\scan0.obj" -@erase "$(INTDIR)\mpn\scan1.obj" -@erase "$(INTDIR)\mpn\set_str.obj" -@erase "$(INTDIR)\mpn\sqr_basecase.obj" -@erase "$(INTDIR)\mpn\sqrtrem.obj" -@erase "$(INTDIR)\mpn\sub.obj" -@erase "$(INTDIR)\mpn\sub_1.obj" -@erase "$(INTDIR)\mpn\sub_n.obj" -@erase "$(INTDIR)\mpn\submul_1.obj" -@erase "$(INTDIR)\mpn\tdiv_qr.obj" -@erase "$(INTDIR)\mpq\abs.obj" -@erase "$(INTDIR)\mpq\aors.obj" -@erase "$(INTDIR)\mpq\canonicalize.obj" -@erase "$(INTDIR)\mpq\clear.obj" -@erase "$(INTDIR)\mpq\cmp.obj" -@erase "$(INTDIR)\mpq\cmp_si.obj" -@erase "$(INTDIR)\mpq\cmp_ui.obj" -@erase "$(INTDIR)\mpq\div.obj" -@erase "$(INTDIR)\mpq\equal.obj" -@erase "$(INTDIR)\mpq\get_d.obj" -@erase "$(INTDIR)\mpq\get_den.obj" -@erase "$(INTDIR)\mpq\get_num.obj" -@erase "$(INTDIR)\mpq\get_str.obj" -@erase "$(INTDIR)\mpq\init.obj" -@erase "$(INTDIR)\mpq\inp_str.obj" -@erase "$(INTDIR)\mpq\inv.obj" -@erase "$(INTDIR)\mpq\md_2exp.obj" -@erase "$(INTDIR)\mpq\mul.obj" -@erase "$(INTDIR)\mpq\neg.obj" -@erase "$(INTDIR)\mpq\out_str.obj" -@erase "$(INTDIR)\mpq\set.obj" -@erase "$(INTDIR)\mpq\set_d.obj" -@erase "$(INTDIR)\mpq\set_den.obj" -@erase "$(INTDIR)\mpq\set_f.obj" -@erase "$(INTDIR)\mpq\set_num.obj" -@erase "$(INTDIR)\mpq\set_si.obj" -@erase "$(INTDIR)\mpq\set_str.obj" -@erase "$(INTDIR)\mpq\set_ui.obj" -@erase "$(INTDIR)\mpq\set_z.obj" -@erase "$(INTDIR)\mpq\swap.obj" -@erase "$(INTDIR)\mpz\abs.obj" -@erase "$(INTDIR)\mpz\add.obj" -@erase "$(INTDIR)\mpz\add_ui.obj" -@erase "$(INTDIR)\mpz\and.obj" -@erase "$(INTDIR)\mpz\aorsmul.obj" -@erase "$(INTDIR)\mpz\aorsmul_i.obj" -@erase "$(INTDIR)\mpz\array_init.obj" -@erase "$(INTDIR)\mpz\bin_ui.obj" -@erase "$(INTDIR)\mpz\bin_uiui.obj" -@erase "$(INTDIR)\mpz\cdiv_q.obj" -@erase "$(INTDIR)\mpz\cdiv_q_ui.obj" -@erase "$(INTDIR)\mpz\cdiv_qr.obj" -@erase "$(INTDIR)\mpz\cdiv_qr_ui.obj" -@erase "$(INTDIR)\mpz\cdiv_r.obj" -@erase "$(INTDIR)\mpz\cdiv_r_ui.obj" -@erase "$(INTDIR)\mpz\cdiv_ui.obj" -@erase "$(INTDIR)\mpz\cfdiv_q_2exp.obj" -@erase "$(INTDIR)\mpz\cfdiv_r_2exp.obj" -@erase "$(INTDIR)\mpz\clear.obj" -@erase "$(INTDIR)\mpz\clrbit.obj" -@erase "$(INTDIR)\mpz\cmp.obj" -@erase "$(INTDIR)\mpz\cmp_d.obj" -@erase "$(INTDIR)\mpz\cmp_si.obj" -@erase "$(INTDIR)\mpz\cmp_ui.obj" -@erase "$(INTDIR)\mpz\cmpabs.obj" -@erase "$(INTDIR)\mpz\cmpabs_d.obj" -@erase "$(INTDIR)\mpz\cmpabs_ui.obj" -@erase "$(INTDIR)\mpz\com.obj" -@erase "$(INTDIR)\mpz\cong.obj" -@erase "$(INTDIR)\mpz\cong_2exp.obj" -@erase "$(INTDIR)\mpz\cong_ui.obj" -@erase "$(INTDIR)\mpz\dive_ui.obj" -@erase "$(INTDIR)\mpz\divegcd.obj" -@erase "$(INTDIR)\mpz\divexact.obj" -@erase "$(INTDIR)\mpz\divis.obj" -@erase "$(INTDIR)\mpz\divis_2exp.obj" -@erase "$(INTDIR)\mpz\divis_ui.obj" -@erase "$(INTDIR)\mpz\dump.obj" -@erase "$(INTDIR)\mpz\fac_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_q.obj" -@erase "$(INTDIR)\mpz\fdiv_q_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_qr.obj" -@erase "$(INTDIR)\mpz\fdiv_qr_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_r.obj" -@erase "$(INTDIR)\mpz\fdiv_r_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_ui.obj" -@erase "$(INTDIR)\mpz\fib2_ui.obj" -@erase "$(INTDIR)\mpz\fib_ui.obj" -@erase "$(INTDIR)\mpz\fits_sint.obj" -@erase "$(INTDIR)\mpz\fits_slong.obj" -@erase "$(INTDIR)\mpz\fits_sshort.obj" -@erase "$(INTDIR)\mpz\fits_uint.obj" -@erase "$(INTDIR)\mpz\fits_ulong.obj" -@erase "$(INTDIR)\mpz\fits_ushort.obj" -@erase "$(INTDIR)\mpz\gcd.obj" -@erase "$(INTDIR)\mpz\gcd_ui.obj" -@erase "$(INTDIR)\mpz\gcdext.obj" -@erase "$(INTDIR)\mpz\get_d.obj" -@erase "$(INTDIR)\mpz\get_d_2exp.obj" -@erase "$(INTDIR)\mpz\get_si.obj" -@erase "$(INTDIR)\mpz\get_str.obj" -@erase "$(INTDIR)\mpz\get_ui.obj" -@erase "$(INTDIR)\mpz\getlimbn.obj" -@erase "$(INTDIR)\mpz\hamdist.obj" -@erase "$(INTDIR)\mpz\init.obj" -@erase "$(INTDIR)\mpz\init2.obj" -@erase "$(INTDIR)\mpz\inp_raw.obj" -@erase "$(INTDIR)\mpz\inp_str.obj" -@erase "$(INTDIR)\mpz\invert.obj" -@erase "$(INTDIR)\mpz\ior.obj" -@erase "$(INTDIR)\mpz\iset.obj" -@erase "$(INTDIR)\mpz\iset_d.obj" -@erase "$(INTDIR)\mpz\iset_si.obj" -@erase "$(INTDIR)\mpz\iset_str.obj" -@erase "$(INTDIR)\mpz\iset_ui.obj" -@erase "$(INTDIR)\mpz\jacobi.obj" -@erase "$(INTDIR)\mpz\kronsz.obj" -@erase "$(INTDIR)\mpz\kronuz.obj" -@erase "$(INTDIR)\mpz\kronzs.obj" -@erase "$(INTDIR)\mpz\kronzu.obj" -@erase "$(INTDIR)\mpz\lcm.obj" -@erase "$(INTDIR)\mpz\lcm_ui.obj" -@erase "$(INTDIR)\mpz\lucnum2_ui.obj" -@erase "$(INTDIR)\mpz\lucnum_ui.obj" -@erase "$(INTDIR)\mpz\millerrabin.obj" -@erase "$(INTDIR)\mpz\mod.obj" -@erase "$(INTDIR)\mpz\mul.obj" -@erase "$(INTDIR)\mpz\mul_2exp.obj" -@erase "$(INTDIR)\mpz\mul_si.obj" -@erase "$(INTDIR)\mpz\mul_ui.obj" -@erase "$(INTDIR)\mpz\n_pow_ui.obj" -@erase "$(INTDIR)\mpz\neg.obj" -@erase "$(INTDIR)\mpz\nextprime.obj" -@erase "$(INTDIR)\mpz\out_raw.obj" -@erase "$(INTDIR)\mpz\out_str.obj" -@erase "$(INTDIR)\mpz\perfpow.obj" -@erase "$(INTDIR)\mpz\perfsqr.obj" -@erase "$(INTDIR)\mpz\popcount.obj" -@erase "$(INTDIR)\mpz\pow_ui.obj" -@erase "$(INTDIR)\mpz\powm.obj" -@erase "$(INTDIR)\mpz\powm_ui.obj" -@erase "$(INTDIR)\mpz\pprime_p.obj" -@erase "$(INTDIR)\mpz\random.obj" -@erase "$(INTDIR)\mpz\random2.obj" -@erase "$(INTDIR)\mpz\realloc.obj" -@erase "$(INTDIR)\mpz\realloc2.obj" -@erase "$(INTDIR)\mpz\remove.obj" -@erase "$(INTDIR)\mpz\root.obj" -@erase "$(INTDIR)\mpz\rootrem.obj" -@erase "$(INTDIR)\mpz\rrandomb.obj" -@erase "$(INTDIR)\mpz\scan0.obj" -@erase "$(INTDIR)\mpz\scan1.obj" -@erase "$(INTDIR)\mpz\set.obj" -@erase "$(INTDIR)\mpz\set_d.obj" -@erase "$(INTDIR)\mpz\set_f.obj" -@erase "$(INTDIR)\mpz\set_q.obj" -@erase "$(INTDIR)\mpz\set_si.obj" -@erase "$(INTDIR)\mpz\set_str.obj" -@erase "$(INTDIR)\mpz\set_ui.obj" -@erase "$(INTDIR)\mpz\setbit.obj" -@erase "$(INTDIR)\mpz\size.obj" -@erase "$(INTDIR)\mpz\sizeinbase.obj" -@erase "$(INTDIR)\mpz\sqrt.obj" -@erase "$(INTDIR)\mpz\sqrtrem.obj" -@erase "$(INTDIR)\mpz\sub.obj" -@erase "$(INTDIR)\mpz\sub_ui.obj" -@erase "$(INTDIR)\mpz\swap.obj" -@erase "$(INTDIR)\mpz\tdiv_q.obj" -@erase "$(INTDIR)\mpz\tdiv_q_2exp.obj" -@erase "$(INTDIR)\mpz\tdiv_q_ui.obj" -@erase "$(INTDIR)\mpz\tdiv_qr.obj" -@erase "$(INTDIR)\mpz\tdiv_qr_ui.obj" -@erase "$(INTDIR)\mpz\tdiv_r.obj" -@erase "$(INTDIR)\mpz\tdiv_r_2exp.obj" -@erase "$(INTDIR)\mpz\tdiv_r_ui.obj" -@erase "$(INTDIR)\mpz\tdiv_ui.obj" -@erase "$(INTDIR)\mpz\tstbit.obj" -@erase "$(INTDIR)\mpz\ui_pow_ui.obj" -@erase "$(INTDIR)\mpz\urandomb.obj" -@erase "$(INTDIR)\mpz\urandomm.obj" -@erase "$(INTDIR)\mpz\xor.obj" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" "$(INTDIR)" : if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)" if not exist "$(INTDIR)\mpf" mkdir "$(INTDIR)\mpf" if not exist "$(INTDIR)\mpn" mkdir "$(INTDIR)\mpn" if not exist "$(INTDIR)\mpq" mkdir "$(INTDIR)\mpq" if not exist "$(INTDIR)\mpz" mkdir "$(INTDIR)\mpz" CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"$(INTDIR)\gmp.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gmp.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\gmpDebug.pdb" /debug /machine:I386 /out:"$(OUTDIR)\gmpDebug.dll" /implib:"$(OUTDIR)\gmpDebug.lib" /pdbtype:sept LINK32_OBJS= \ "$(INTDIR)\mpf\abs.obj" \ "$(INTDIR)\mpq\abs.obj" \ "$(INTDIR)\mpz\abs.obj" \ "$(INTDIR)\mpf\add.obj" \ "$(INTDIR)\mpn\add.obj" \ "$(INTDIR)\mpz\add.obj" \ "$(INTDIR)\mpn\add_1.obj" \ "$(INTDIR)\mpn\add_n.obj" \ "$(INTDIR)\mpf\add_ui.obj" \ "$(INTDIR)\mpz\add_ui.obj" \ "$(INTDIR)\mpn\addmul_1.obj" \ "$(INTDIR)\mpz\and.obj" \ "$(INTDIR)\mpq\aors.obj" \ "$(INTDIR)\mpz\aorsmul.obj" \ "$(INTDIR)\mpz\aorsmul_i.obj" \ "$(INTDIR)\mpz\array_init.obj" \ "$(INTDIR)\asprintf.obj" \ "$(INTDIR)\asprntffuns.obj" \ "$(INTDIR)\assert.obj" \ "$(INTDIR)\mpn\bdivmod.obj" \ "$(INTDIR)\mpz\bin_ui.obj" \ "$(INTDIR)\mpz\bin_uiui.obj" \ "$(INTDIR)\mpq\canonicalize.obj" \ "$(INTDIR)\mpz\cdiv_q.obj" \ "$(INTDIR)\mpz\cdiv_q_ui.obj" \ "$(INTDIR)\mpz\cdiv_qr.obj" \ "$(INTDIR)\mpz\cdiv_qr_ui.obj" \ "$(INTDIR)\mpz\cdiv_r.obj" \ "$(INTDIR)\mpz\cdiv_r_ui.obj" \ "$(INTDIR)\mpz\cdiv_ui.obj" \ "$(INTDIR)\mpf\ceilfloor.obj" \ "$(INTDIR)\mpz\cfdiv_q_2exp.obj" \ "$(INTDIR)\mpz\cfdiv_r_2exp.obj" \ "$(INTDIR)\mpf\clear.obj" \ "$(INTDIR)\mpq\clear.obj" \ "$(INTDIR)\mpz\clear.obj" \ "$(INTDIR)\mpz\clrbit.obj" \ "$(INTDIR)\mpf\cmp.obj" \ "$(INTDIR)\mpn\cmp.obj" \ "$(INTDIR)\mpq\cmp.obj" \ "$(INTDIR)\mpz\cmp.obj" \ "$(INTDIR)\mpf\cmp_d.obj" \ "$(INTDIR)\mpz\cmp_d.obj" \ "$(INTDIR)\mpf\cmp_si.obj" \ "$(INTDIR)\mpq\cmp_si.obj" \ "$(INTDIR)\mpz\cmp_si.obj" \ "$(INTDIR)\mpf\cmp_ui.obj" \ "$(INTDIR)\mpq\cmp_ui.obj" \ "$(INTDIR)\mpz\cmp_ui.obj" \ "$(INTDIR)\mpz\cmpabs.obj" \ "$(INTDIR)\mpz\cmpabs_d.obj" \ "$(INTDIR)\mpz\cmpabs_ui.obj" \ "$(INTDIR)\mpz\com.obj" \ "$(INTDIR)\compat.obj" \ "$(INTDIR)\mpz\cong.obj" \ "$(INTDIR)\mpz\cong_2exp.obj" \ "$(INTDIR)\mpz\cong_ui.obj" \ "$(INTDIR)\mpn\dc_divrem_n.obj" \ "$(INTDIR)\mpf\div.obj" \ "$(INTDIR)\mpq\div.obj" \ "$(INTDIR)\mpf\div_2exp.obj" \ "$(INTDIR)\mpf\div_ui.obj" \ "$(INTDIR)\mpn\dive_1.obj" \ "$(INTDIR)\mpz\dive_ui.obj" \ "$(INTDIR)\mpn\diveby3.obj" \ "$(INTDIR)\mpz\divegcd.obj" \ "$(INTDIR)\mpz\divexact.obj" \ "$(INTDIR)\mpn\divis.obj" \ "$(INTDIR)\mpz\divis.obj" \ "$(INTDIR)\mpz\divis_2exp.obj" \ "$(INTDIR)\mpz\divis_ui.obj" \ "$(INTDIR)\mpn\divrem.obj" \ "$(INTDIR)\mpn\divrem_1.obj" \ "$(INTDIR)\mpn\divrem_2.obj" \ "$(INTDIR)\doprnt.obj" \ "$(INTDIR)\doprntf.obj" \ "$(INTDIR)\doprnti.obj" \ "$(INTDIR)\doscan.obj" \ "$(INTDIR)\mpf\dump.obj" \ "$(INTDIR)\mpn\dump.obj" \ "$(INTDIR)\mpz\dump.obj" \ "$(INTDIR)\mpf\eq.obj" \ "$(INTDIR)\mpq\equal.obj" \ "$(INTDIR)\errno.obj" \ "$(INTDIR)\extract-dbl.obj" \ "$(INTDIR)\mpz\fac_ui.obj" \ "$(INTDIR)\mpz\fdiv_q.obj" \ "$(INTDIR)\mpz\fdiv_q_ui.obj" \ "$(INTDIR)\mpz\fdiv_qr.obj" \ "$(INTDIR)\mpz\fdiv_qr_ui.obj" \ "$(INTDIR)\mpz\fdiv_r.obj" \ "$(INTDIR)\mpz\fdiv_r_ui.obj" \ "$(INTDIR)\mpz\fdiv_ui.obj" \ "$(INTDIR)\mpn\fib2_ui.obj" \ "$(INTDIR)\mpz\fib2_ui.obj" \ "$(INTDIR)\mpz\fib_ui.obj" \ "$(INTDIR)\mpf\fits_sint.obj" \ "$(INTDIR)\mpz\fits_sint.obj" \ "$(INTDIR)\mpf\fits_slong.obj" \ "$(INTDIR)\mpz\fits_slong.obj" \ "$(INTDIR)\mpf\fits_sshort.obj" \ "$(INTDIR)\mpz\fits_sshort.obj" \ "$(INTDIR)\mpf\fits_uint.obj" \ "$(INTDIR)\mpz\fits_uint.obj" \ "$(INTDIR)\mpf\fits_ulong.obj" \ "$(INTDIR)\mpz\fits_ulong.obj" \ "$(INTDIR)\mpf\fits_ushort.obj" \ "$(INTDIR)\mpz\fits_ushort.obj" \ "$(INTDIR)\fprintf.obj" \ "$(INTDIR)\fscanf.obj" \ "$(INTDIR)\fscanffuns.obj" \ "$(INTDIR)\mpn\gcd.obj" \ "$(INTDIR)\mpz\gcd.obj" \ "$(INTDIR)\mpn\gcd_1.obj" \ "$(INTDIR)\mpz\gcd_ui.obj" \ "$(INTDIR)\mpn\gcdext.obj" \ "$(INTDIR)\mpz\gcdext.obj" \ "$(INTDIR)\mpf\get_d.obj" \ "$(INTDIR)\mpq\get_d.obj" \ "$(INTDIR)\mpz\get_d.obj" \ "$(INTDIR)\mpf\get_d_2exp.obj" \ "$(INTDIR)\mpz\get_d_2exp.obj" \ "$(INTDIR)\mpq\get_den.obj" \ "$(INTDIR)\mpf\get_dfl_prec.obj" \ "$(INTDIR)\mpq\get_num.obj" \ "$(INTDIR)\mpf\get_prc.obj" \ "$(INTDIR)\mpf\get_si.obj" \ "$(INTDIR)\mpz\get_si.obj" \ "$(INTDIR)\mpf\get_str.obj" \ "$(INTDIR)\mpn\get_str.obj" \ "$(INTDIR)\mpq\get_str.obj" \ "$(INTDIR)\mpz\get_str.obj" \ "$(INTDIR)\mpf\get_ui.obj" \ "$(INTDIR)\mpz\get_ui.obj" \ "$(INTDIR)\mpz\getlimbn.obj" \ "$(INTDIR)\mpn\hamdist.obj" \ "$(INTDIR)\mpz\hamdist.obj" \ "$(INTDIR)\mpf\init.obj" \ "$(INTDIR)\mpq\init.obj" \ "$(INTDIR)\mpz\init.obj" \ "$(INTDIR)\mpf\init2.obj" \ "$(INTDIR)\mpz\init2.obj" \ "$(INTDIR)\mpz\inp_raw.obj" \ "$(INTDIR)\mpf\inp_str.obj" \ "$(INTDIR)\mpq\inp_str.obj" \ "$(INTDIR)\mpz\inp_str.obj" \ "$(INTDIR)\insert-dbl.obj" \ "$(INTDIR)\mpf\int_p.obj" \ "$(INTDIR)\mpq\inv.obj" \ "$(INTDIR)\mpz\invert.obj" \ "$(INTDIR)\mpz\ior.obj" \ "$(INTDIR)\mpf\iset.obj" \ "$(INTDIR)\mpz\iset.obj" \ "$(INTDIR)\mpf\iset_d.obj" \ "$(INTDIR)\mpz\iset_d.obj" \ "$(INTDIR)\mpf\iset_si.obj" \ "$(INTDIR)\mpz\iset_si.obj" \ "$(INTDIR)\mpf\iset_str.obj" \ "$(INTDIR)\mpz\iset_str.obj" \ "$(INTDIR)\mpf\iset_ui.obj" \ "$(INTDIR)\mpz\iset_ui.obj" \ "$(INTDIR)\mpn\jacbase.obj" \ "$(INTDIR)\mpz\jacobi.obj" \ "$(INTDIR)\mpz\kronsz.obj" \ "$(INTDIR)\mpz\kronuz.obj" \ "$(INTDIR)\mpz\kronzs.obj" \ "$(INTDIR)\mpz\kronzu.obj" \ "$(INTDIR)\mpz\lcm.obj" \ "$(INTDIR)\mpz\lcm_ui.obj" \ "$(INTDIR)\mpn\lshift.obj" \ "$(INTDIR)\mpz\lucnum2_ui.obj" \ "$(INTDIR)\mpz\lucnum_ui.obj" \ "$(INTDIR)\mpq\md_2exp.obj" \ "$(INTDIR)\memory.obj" \ "$(INTDIR)\mpz\millerrabin.obj" \ "$(INTDIR)\mpz\mod.obj" \ "$(INTDIR)\mpn\mod_1.obj" \ "$(INTDIR)\mpn\mod_34lsub1.obj" \ "$(INTDIR)\mpn\mode1o.obj" \ "$(INTDIR)\mpn\mp_bases.obj" \ "$(INTDIR)\mp_bpl.obj" \ "$(INTDIR)\mp_clz_tab.obj" \ "$(INTDIR)\mp_minv_tab.obj" \ "$(INTDIR)\mp_set_fns.obj" \ "$(INTDIR)\mpf\mul.obj" \ "$(INTDIR)\mpn\mul.obj" \ "$(INTDIR)\mpq\mul.obj" \ "$(INTDIR)\mpz\mul.obj" \ "$(INTDIR)\mpn\mul_1.obj" \ "$(INTDIR)\mpf\mul_2exp.obj" \ "$(INTDIR)\mpz\mul_2exp.obj" \ "$(INTDIR)\mpn\mul_basecase.obj" \ "$(INTDIR)\mpn\mul_fft.obj" \ "$(INTDIR)\mpn\mul_n.obj" \ "$(INTDIR)\mpz\mul_si.obj" \ "$(INTDIR)\mpf\mul_ui.obj" \ "$(INTDIR)\mpz\mul_ui.obj" \ "$(INTDIR)\mpz\n_pow_ui.obj" \ "$(INTDIR)\mpf\neg.obj" \ "$(INTDIR)\mpq\neg.obj" \ "$(INTDIR)\mpz\neg.obj" \ "$(INTDIR)\mpz\nextprime.obj" \ "$(INTDIR)\obprintf.obj" \ "$(INTDIR)\obprntffuns.obj" \ "$(INTDIR)\obvprintf.obj" \ "$(INTDIR)\mpz\out_raw.obj" \ "$(INTDIR)\mpf\out_str.obj" \ "$(INTDIR)\mpq\out_str.obj" \ "$(INTDIR)\mpz\out_str.obj" \ "$(INTDIR)\mpz\perfpow.obj" \ "$(INTDIR)\mpn\perfsqr.obj" \ "$(INTDIR)\mpz\perfsqr.obj" \ "$(INTDIR)\mpn\popcount.obj" \ "$(INTDIR)\mpz\popcount.obj" \ "$(INTDIR)\pow_1.obj" \ "$(INTDIR)\mpf\pow_ui.obj" \ "$(INTDIR)\mpz\pow_ui.obj" \ "$(INTDIR)\mpz\powm.obj" \ "$(INTDIR)\mpz\powm_ui.obj" \ "$(INTDIR)\mpz\pprime_p.obj" \ "$(INTDIR)\mpn\pre_divrem_1.obj" \ "$(INTDIR)\mpn\pre_mod_1.obj" \ "$(INTDIR)\printf.obj" \ "$(INTDIR)\printffuns.obj" \ "$(INTDIR)\rand.obj" \ "$(INTDIR)\randclr.obj" \ "$(INTDIR)\randdef.obj" \ "$(INTDIR)\randlc.obj" \ "$(INTDIR)\randlc2s.obj" \ "$(INTDIR)\randlc2x.obj" \ "$(INTDIR)\mpn\random.obj" \ "$(INTDIR)\mpz\random.obj" \ "$(INTDIR)\mpf\random2.obj" \ "$(INTDIR)\mpn\random2.obj" \ "$(INTDIR)\mpz\random2.obj" \ "$(INTDIR)\randraw.obj" \ "$(INTDIR)\rands.obj" \ "$(INTDIR)\randsd.obj" \ "$(INTDIR)\randsdui.obj" \ "$(INTDIR)\mpz\realloc.obj" \ "$(INTDIR)\mpz\realloc2.obj" \ "$(INTDIR)\mpf\reldiff.obj" \ "$(INTDIR)\mpz\remove.obj" \ "$(INTDIR)\repl-vsnprintf.obj" \ "$(INTDIR)\mpz\root.obj" \ "$(INTDIR)\mpz\rootrem.obj" \ "$(INTDIR)\mpz\rrandomb.obj" \ "$(INTDIR)\mpn\rshift.obj" \ "$(INTDIR)\mpn\sb_divrem_mn.obj" \ "$(INTDIR)\mpn\scan0.obj" \ "$(INTDIR)\mpz\scan0.obj" \ "$(INTDIR)\mpn\scan1.obj" \ "$(INTDIR)\mpz\scan1.obj" \ "$(INTDIR)\scanf.obj" \ "$(INTDIR)\mpf\set.obj" \ "$(INTDIR)\mpq\set.obj" \ "$(INTDIR)\mpz\set.obj" \ "$(INTDIR)\mpf\set_d.obj" \ "$(INTDIR)\mpq\set_d.obj" \ "$(INTDIR)\mpz\set_d.obj" \ "$(INTDIR)\mpq\set_den.obj" \ "$(INTDIR)\mpf\set_dfl_prec.obj" \ "$(INTDIR)\mpq\set_f.obj" \ "$(INTDIR)\mpz\set_f.obj" \ "$(INTDIR)\mpq\set_num.obj" \ "$(INTDIR)\mpf\set_prc.obj" \ "$(INTDIR)\mpf\set_prc_raw.obj" \ "$(INTDIR)\mpf\set_q.obj" \ "$(INTDIR)\mpz\set_q.obj" \ "$(INTDIR)\mpf\set_si.obj" \ "$(INTDIR)\mpq\set_si.obj" \ "$(INTDIR)\mpz\set_si.obj" \ "$(INTDIR)\mpf\set_str.obj" \ "$(INTDIR)\mpn\set_str.obj" \ "$(INTDIR)\mpq\set_str.obj" \ "$(INTDIR)\mpz\set_str.obj" \ "$(INTDIR)\mpf\set_ui.obj" \ "$(INTDIR)\mpq\set_ui.obj" \ "$(INTDIR)\mpz\set_ui.obj" \ "$(INTDIR)\mpf\set_z.obj" \ "$(INTDIR)\mpq\set_z.obj" \ "$(INTDIR)\mpz\setbit.obj" \ "$(INTDIR)\mpf\size.obj" \ "$(INTDIR)\mpz\size.obj" \ "$(INTDIR)\mpz\sizeinbase.obj" \ "$(INTDIR)\snprintf.obj" \ "$(INTDIR)\snprntffuns.obj" \ "$(INTDIR)\sprintf.obj" \ "$(INTDIR)\sprintffuns.obj" \ "$(INTDIR)\mpn\sqr_basecase.obj" \ "$(INTDIR)\mpf\sqrt.obj" \ "$(INTDIR)\mpz\sqrt.obj" \ "$(INTDIR)\mpf\sqrt_ui.obj" \ "$(INTDIR)\mpn\sqrtrem.obj" \ "$(INTDIR)\mpz\sqrtrem.obj" \ "$(INTDIR)\sscanf.obj" \ "$(INTDIR)\sscanffuns.obj" \ "$(INTDIR)\mpf\sub.obj" \ "$(INTDIR)\mpn\sub.obj" \ "$(INTDIR)\mpz\sub.obj" \ "$(INTDIR)\mpn\sub_1.obj" \ "$(INTDIR)\mpn\sub_n.obj" \ "$(INTDIR)\mpf\sub_ui.obj" \ "$(INTDIR)\mpz\sub_ui.obj" \ "$(INTDIR)\mpn\submul_1.obj" \ "$(INTDIR)\mpf\swap.obj" \ "$(INTDIR)\mpq\swap.obj" \ "$(INTDIR)\mpz\swap.obj" \ "$(INTDIR)\mpz\tdiv_q.obj" \ "$(INTDIR)\mpz\tdiv_q_2exp.obj" \ "$(INTDIR)\mpz\tdiv_q_ui.obj" \ "$(INTDIR)\mpn\tdiv_qr.obj" \ "$(INTDIR)\mpz\tdiv_qr.obj" \ "$(INTDIR)\mpz\tdiv_qr_ui.obj" \ "$(INTDIR)\mpz\tdiv_r.obj" \ "$(INTDIR)\mpz\tdiv_r_2exp.obj" \ "$(INTDIR)\mpz\tdiv_r_ui.obj" \ "$(INTDIR)\mpz\tdiv_ui.obj" \ "$(INTDIR)\mpf\trunc.obj" \ "$(INTDIR)\mpz\tstbit.obj" \ "$(INTDIR)\mpf\ui_div.obj" \ "$(INTDIR)\mpz\ui_pow_ui.obj" \ "$(INTDIR)\mpf\ui_sub.obj" \ "$(INTDIR)\mpf\urandomb.obj" \ "$(INTDIR)\mpz\urandomb.obj" \ "$(INTDIR)\mpz\urandomm.obj" \ "$(INTDIR)\vasprintf.obj" \ "$(INTDIR)\version.obj" \ "$(INTDIR)\vfprintf.obj" \ "$(INTDIR)\vfscanf.obj" \ "$(INTDIR)\vprintf.obj" \ "$(INTDIR)\vscanf.obj" \ "$(INTDIR)\vsnprintf.obj" \ "$(INTDIR)\vsprintf.obj" \ "$(INTDIR)\vsscanf.obj" \ "$(INTDIR)\mpz\xor.obj" "$(OUTDIR)\gmpDebug.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("gmp.dep") !INCLUDE "gmp.dep" !ELSE !MESSAGE Warning: cannot find "gmp.dep" !ENDIF !ENDIF !IF "$(CFG)" == "gmp - Win32 Release" || "$(CFG)" == "gmp - Win32 Debug" SOURCE=.\mpf\abs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\abs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\abs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\abs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\abs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\abs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\abs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\abs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\abs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\add.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\add.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\add.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\add.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\add.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\add.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\add.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\add.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\add.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\add_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\add_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\add_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\add_n.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_add_n" /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\add_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_add_n" /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\add_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\add_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\add_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\add_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\add_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\add_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\add_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\addmul_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_addmul_1" /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\addmul_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_addmul_1" /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\addmul_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\and.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\and.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\and.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\aors.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\aors.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\aors.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\aorsmul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\aorsmul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\aorsmul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\aorsmul_i.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\aorsmul_i.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\aorsmul_i.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\array_init.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\array_init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\array_init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\asprintf.c "$(INTDIR)\asprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\asprntffuns.c "$(INTDIR)\asprntffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\assert.c "$(INTDIR)\assert.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpn\generic\bdivmod.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\bdivmod.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\bdivmod.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\bin_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\bin_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\bin_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\bin_uiui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\bin_uiui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\bin_uiui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\canonicalize.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\canonicalize.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\canonicalize.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_q_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_q_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_qr_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_qr_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_r.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_r.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_r_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_r_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\ceilfloor.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\ceilfloor.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\ceilfloor.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cfdiv_q_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cfdiv_q_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cfdiv_q_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cfdiv_r_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cfdiv_r_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cfdiv_r_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\clear.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\clear.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\clear.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\clear.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\clear.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\clear.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\clear.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\clear.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\clear.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\clrbit.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\clrbit.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\clrbit.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\cmp_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\cmp_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\cmp_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmp_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmp_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmp_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\cmp_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\cmp_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\cmp_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\cmp_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmp_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmp_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\cmp_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\cmp_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\cmp_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\cmp_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmp_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmp_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmpabs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmpabs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmpabs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmpabs_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmpabs_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmpabs_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmpabs_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmpabs_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmpabs_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\com.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\com.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\com.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\compat.c "$(INTDIR)\compat.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpz\cong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cong_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cong_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cong_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cong_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cong_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cong_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\dc_divrem_n.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\dc_divrem_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\dc_divrem_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\div.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\div.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\div.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\div.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\div.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\div.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\div_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\div_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\div_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\div_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\div_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\div_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\dive_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\dive_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\dive_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\dive_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\dive_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\dive_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\diveby3.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\diveby3.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\diveby3.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divegcd.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\divegcd.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\divegcd.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divexact.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\divexact.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\divexact.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\divis.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\divis.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\divis.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divis.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\divis.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\divis.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divis_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\divis_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\divis_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divis_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\divis_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\divis_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\divrem.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\divrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\divrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\divrem_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\divrem_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\divrem_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\divrem_2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\divrem_2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\divrem_2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\doprnt.c "$(INTDIR)\doprnt.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\doprntf.c "$(INTDIR)\doprntf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\doprnti.c "$(INTDIR)\doprnti.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\doscan.c "$(INTDIR)\doscan.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpf\dump.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\dump.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\dump.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\dump.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\dump.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\dump.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\dump.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\dump.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\dump.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\eq.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\eq.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\eq.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\equal.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\equal.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\equal.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\errno.c "$(INTDIR)\errno.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=".\extract-dbl.c" "$(INTDIR)\extract-dbl.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpz\fac_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fac_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fac_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_q_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_q_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_qr_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_qr_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_r.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_r.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_r_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_r_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\fib2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\fib2_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\fib2_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fib2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fib2_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fib2_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fib_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fib_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fib_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_sint.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\fits_sint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\fits_sint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_sint.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fits_sint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fits_sint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_slong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\fits_slong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\fits_slong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_slong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fits_slong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fits_slong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_sshort.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\fits_sshort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\fits_sshort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_sshort.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fits_sshort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fits_sshort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_uint.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\fits_uint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\fits_uint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_uint.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fits_uint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fits_uint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_ulong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\fits_ulong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\fits_ulong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_ulong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fits_ulong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fits_ulong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_ushort.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\fits_ushort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\fits_ushort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_ushort.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fits_ushort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fits_ushort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\fprintf.c "$(INTDIR)\fprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\fscanf.c "$(INTDIR)\fscanf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\fscanffuns.c "$(INTDIR)\fscanffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpn\generic\gcd.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\gcd.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\gcd.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\gcd.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\gcd.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\gcd.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\gcd_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\gcd_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\gcd_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\gcd_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\gcd_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\gcd_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\gcdext.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\gcdext.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\gcdext.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\gcdext.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\gcdext.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\gcdext.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\get_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\get_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\get_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\get_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_d_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_d_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_d_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_d_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\get_d_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\get_d_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\get_den.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\get_den.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\get_den.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_dfl_prec.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_dfl_prec.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_dfl_prec.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\get_num.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\get_num.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\get_num.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_prc.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_prc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_prc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\get_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\get_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\get_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\get_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\getlimbn.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\getlimbn.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\getlimbn.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\hamdist.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\hamdist.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\hamdist.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\hamdist.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\hamdist.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\hamdist.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\init.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\init.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\init.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\init2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\init2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\init2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\init2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\init2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\init2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\inp_raw.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\inp_raw.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\inp_raw.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\inp_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\inp_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\inp_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\inp_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\inp_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\inp_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=".\insert-dbl.c" "$(INTDIR)\insert-dbl.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpf\int_p.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\int_p.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\int_p.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\inv.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\inv.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\inv.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\invert.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\invert.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\invert.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\ior.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\ior.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\ior.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\iset.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\iset.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\iset.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\iset.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\iset_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\iset_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\iset_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\iset_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\iset_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\iset_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\iset_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\iset_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\iset_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\iset_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\iset_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\iset_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\iset_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\iset_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\iset_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\iset_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\jacbase.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\jacbase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\jacbase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\jacobi.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\jacobi.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\jacobi.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\kronsz.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\kronsz.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\kronsz.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\kronuz.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\kronuz.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\kronuz.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\kronzs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\kronzs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\kronzs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\kronzu.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\kronzu.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\kronzu.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\lcm.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\lcm.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\lcm.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\lcm_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\lcm_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\lcm_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\lshift.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\lshift.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\lshift.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\lucnum2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\lucnum2_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\lucnum2_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\lucnum_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\lucnum_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\lucnum_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\md_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\md_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\md_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\memory.c "$(INTDIR)\memory.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpz\millerrabin.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\millerrabin.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\millerrabin.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mod.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\mod.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\mod.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mod_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mod_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mod_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mod_34lsub1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mod_34lsub1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mod_34lsub1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mode1o.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mode1o.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mode1o.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\mp_bases.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mp_bases.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mp_bases.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mp_bpl.c "$(INTDIR)\mp_bpl.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mp_clz_tab.c "$(INTDIR)\mp_clz_tab.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mp_minv_tab.c "$(INTDIR)\mp_minv_tab.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mp_set_fns.c "$(INTDIR)\mp_set_fns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpf\mul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\mul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mul_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mul_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\mul_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\mul_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\mul_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mul_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\mul_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\mul_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul_basecase.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mul_basecase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mul_basecase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul_fft.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mul_fft.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mul_fft.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul_n.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mul_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mul_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mul_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\mul_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\mul_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\mul_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\mul_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\mul_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mul_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\mul_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\mul_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\n_pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\n_pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\n_pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\neg.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\neg.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\neg.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\neg.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\neg.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\neg.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\neg.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\neg.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\neg.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\nextprime.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\nextprime.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\nextprime.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\obprintf.c "$(INTDIR)\obprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\obprntffuns.c "$(INTDIR)\obprntffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\obvprintf.c "$(INTDIR)\obvprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpz\out_raw.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\out_raw.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\out_raw.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\out_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\out_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\out_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\out_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\out_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\out_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\perfpow.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\perfpow.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\perfpow.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\perfsqr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\perfsqr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\perfsqr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\perfsqr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\perfsqr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\perfsqr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\popcount.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\popcount.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\popcount.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\popcount.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\popcount.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\popcount.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\pow_1.c "$(INTDIR)\pow_1.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpf\pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\powm.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\powm.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\powm.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\powm_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\powm_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\powm_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\pprime_p.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\pprime_p.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\pprime_p.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\pre_divrem_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\pre_divrem_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\pre_divrem_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\pre_mod_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\pre_mod_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\pre_mod_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\printf.c "$(INTDIR)\printf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\printffuns.c "$(INTDIR)\printffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\rand.c "$(INTDIR)\rand.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randclr.c "$(INTDIR)\randclr.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randdef.c "$(INTDIR)\randdef.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randlc.c "$(INTDIR)\randlc.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randlc2s.c "$(INTDIR)\randlc2s.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randlc2x.c "$(INTDIR)\randlc2x.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpn\generic\random.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\random.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\random.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\random.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\random.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\random.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\random2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\random2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\random2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\random2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\random2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\random2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\random2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\random2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\random2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\randraw.c "$(INTDIR)\randraw.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\rands.c "$(INTDIR)\rands.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randsd.c "$(INTDIR)\randsd.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randsdui.c "$(INTDIR)\randsdui.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpz\realloc.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\realloc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\realloc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\realloc2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\realloc2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\realloc2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\reldiff.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\reldiff.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\reldiff.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\remove.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\remove.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\remove.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=".\printf\repl-vsnprintf.c" "$(INTDIR)\repl-vsnprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpz\root.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\root.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\root.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\rootrem.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\rootrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\rootrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\rrandomb.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\rrandomb.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\rrandomb.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\rshift.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\rshift.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\rshift.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sb_divrem_mn.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\sb_divrem_mn.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\sb_divrem_mn.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\scan0.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\scan0.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\scan0.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\scan0.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\scan0.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\scan0.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\scan1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\scan1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\scan1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\scan1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\scan1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\scan1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\scanf\scanf.c "$(INTDIR)\scanf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpf\set.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_den.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_den.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_den.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_dfl_prec.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_dfl_prec.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_dfl_prec.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_f.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_f.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_f.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_f.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set_f.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set_f.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_num.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_num.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_num.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_prc.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_prc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_prc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_prc_raw.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_prc_raw.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_prc_raw.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_z.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_z.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_z.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_z.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_z.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_z.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\setbit.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\setbit.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\setbit.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\size.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\size.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\size.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\size.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\size.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\size.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sizeinbase.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\sizeinbase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\sizeinbase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\snprintf.c "$(INTDIR)\snprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\snprntffuns.c "$(INTDIR)\snprntffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\sprintf.c "$(INTDIR)\sprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\sprintffuns.c "$(INTDIR)\sprintffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpn\generic\sqr_basecase.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\sqr_basecase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\sqr_basecase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\sqrt.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\sqrt.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\sqrt.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sqrt.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\sqrt.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\sqrt.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\sqrt_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\sqrt_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\sqrt_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sqrtrem.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\sqrtrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\sqrtrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sqrtrem.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\sqrtrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\sqrtrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\scanf\sscanf.c "$(INTDIR)\sscanf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\sscanffuns.c "$(INTDIR)\sscanffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpf\sub.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sub.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sub.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sub_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\sub_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\sub_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sub_n.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_sub_n" /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\sub_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_sub_n" /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\sub_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\sub_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\sub_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\sub_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sub_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\sub_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\sub_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\submul_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_submul_1" /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\submul_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_submul_1" /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\submul_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\swap.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\swap.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\swap.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\swap.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\swap.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\swap.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\swap.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\swap.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\swap.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_q_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_q_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_q_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_q_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_q_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\tdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\tdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\tdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_qr_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_qr_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_r.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_r.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_r_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_r_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_r_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_r_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_r_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\trunc.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\trunc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\trunc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tstbit.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tstbit.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tstbit.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\ui_div.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\ui_div.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\ui_div.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\ui_pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\ui_pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\ui_pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\ui_sub.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\ui_sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\ui_sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\urandomb.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\urandomb.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\urandomb.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\urandomb.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\urandomb.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\urandomb.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\urandomm.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\urandomm.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\urandomm.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\vasprintf.c "$(INTDIR)\vasprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\version.c "$(INTDIR)\version.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\printf\vfprintf.c "$(INTDIR)\vfprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\vfscanf.c "$(INTDIR)\vfscanf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\vprintf.c "$(INTDIR)\vprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\vscanf.c "$(INTDIR)\vscanf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\vsnprintf.c "$(INTDIR)\vsnprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\vsprintf.c "$(INTDIR)\vsprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\vsscanf.c "$(INTDIR)\vsscanf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpz\xor.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\xor.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GMP_EXPORTS" /D "__GMP_WITHIN_GMP" /D "DLL_EXPORT" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\xor.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF !ENDIF core++-1.7/win32/patches/gmp-4.1-dynamic/gmp.vcproj0100755000175000001440000116777510017717346021140 0ustar joachimusers core++-1.7/win32/patches/gmp-4.1-dynamic/mp.h0100644000175000001440000001305107520341374017661 0ustar joachimusers/* mp-h.in -- Definitions for the GNU multiple precision library -*-mode:c-*- BSD mp compatible functions. Copyright 1991, 1993, 1994, 1995, 1996, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __MP_H__ /* The following (everything under ifndef __GNU_MP__) must be identical in gmp.h and mp.h to allow both to be included in an application or during the library build. Use the t-gmp-mp-h.pl script to check. */ #ifndef __GNU_MP__ #define __GNU_MP__ 4 #define __need_size_t /* tell gcc stddef.h we only want size_t */ #if defined (__cplusplus) #include /* for size_t */ #else #include /* for size_t */ #endif #undef __need_size_t /* The following instantiated by configure, for internal use only */ #if ! __GMP_WITHIN_CONFIGURE /* #undef _LONG_LONG_LIMB */ #define __GMP_LIBGMP_DLL 1 #endif #if defined (__STDC__) \ || defined (__cplusplus) \ || defined (_AIX) \ || defined (__DECC) \ || (defined (__mips) && defined (_SYSTYPE_SVR4)) \ || defined (_MSC_VER) \ || defined (_WIN32) #define __GMP_HAVE_CONST 1 #define __GMP_HAVE_PROTOTYPES 1 #define __GMP_HAVE_TOKEN_PASTE 1 #else #define __GMP_HAVE_CONST 0 #define __GMP_HAVE_PROTOTYPES 0 #define __GMP_HAVE_TOKEN_PASTE 0 #endif #if __GMP_HAVE_CONST #define __gmp_const const #define __gmp_signed signed #else #define __gmp_const #define __gmp_signed #endif #if defined (__GNUC__) || defined (_MSC_VER) || defined (__BORLANDC__) #define __GMP_DECLSPEC_EXPORT __declspec(dllexport) #define __GMP_DECLSPEC_IMPORT __declspec(dllimport) #endif #ifdef __WATCOMC__ #define __GMP_DECLSPEC_EXPORT __export #define __GMP_DECLSPEC_IMPORT __import #endif #ifdef __IBMC__ #define __GMP_DECLSPEC_EXPORT _Export #define __GMP_DECLSPEC_IMPORT _Import #endif #if __GMP_LIBGMP_DLL #if __GMP_WITHIN_GMP #define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT #else #define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT #endif #else #define __GMP_DECLSPEC #endif #ifdef _SHORT_LIMB typedef unsigned int mp_limb_t; typedef int mp_limb_signed_t; #else #ifdef _LONG_LONG_LIMB typedef unsigned long long int mp_limb_t; typedef long long int mp_limb_signed_t; #else typedef unsigned long int mp_limb_t; typedef long int mp_limb_signed_t; #endif #endif typedef mp_limb_t * mp_ptr; typedef __gmp_const mp_limb_t * mp_srcptr; #if defined (_CRAY) && ! defined (_CRAYMPP) /* plain `int' is much faster (48 bits) */ #define __GMP_MP_SIZE_T_INT 1 typedef int mp_size_t; typedef int mp_exp_t; #else #define __GMP_MP_SIZE_T_INT 0 typedef long int mp_size_t; typedef long int mp_exp_t; #endif typedef struct { int _mp_alloc; /* Number of *limbs* allocated and pointed to by the _mp_d field. */ int _mp_size; /* abs(_mp_size) is the number of limbs the last field points to. If _mp_size is negative this is a negative number. */ mp_limb_t *_mp_d; /* Pointer to the limbs. */ } __mpz_struct; #endif /* __GNU_MP__ */ /* User-visible types. */ typedef __mpz_struct MINT; #if __GMP_HAVE_PROTOTYPES #define __GMP_PROTO(x) x #else #define __GMP_PROTO(x) () #endif #if defined (__cplusplus) extern "C" { #endif #define mp_set_memory_functions __gmp_set_memory_functions __GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t), void *(*) (void *, size_t, size_t), void (*) (void *, size_t))); __GMP_DECLSPEC MINT *itom __GMP_PROTO ((signed short int)); __GMP_DECLSPEC MINT *xtom __GMP_PROTO ((const char *)); __GMP_DECLSPEC void move __GMP_PROTO ((const MINT *, MINT *)); __GMP_DECLSPEC void madd __GMP_PROTO ((const MINT *, const MINT *, MINT *)); __GMP_DECLSPEC void msub __GMP_PROTO ((const MINT *, const MINT *, MINT *)); __GMP_DECLSPEC void mult __GMP_PROTO ((const MINT *, const MINT *, MINT *)); __GMP_DECLSPEC void mdiv __GMP_PROTO ((const MINT *, const MINT *, MINT *, MINT *)); __GMP_DECLSPEC void sdiv __GMP_PROTO ((const MINT *, signed short int, MINT *, signed short int *)); __GMP_DECLSPEC void msqrt __GMP_PROTO ((const MINT *, MINT *, MINT *)); __GMP_DECLSPEC void pow __GMP_PROTO ((const MINT *, const MINT *, const MINT *, MINT *)); __GMP_DECLSPEC void rpow __GMP_PROTO ((const MINT *, signed short int, MINT *)); __GMP_DECLSPEC void gcd __GMP_PROTO ((const MINT *, const MINT *, MINT *)); __GMP_DECLSPEC int mcmp __GMP_PROTO ((const MINT *, const MINT *)); __GMP_DECLSPEC void min __GMP_PROTO ((MINT *)); __GMP_DECLSPEC void mout __GMP_PROTO ((const MINT *)); __GMP_DECLSPEC char *mtox __GMP_PROTO ((const MINT *)); __GMP_DECLSPEC void mfree __GMP_PROTO ((MINT *)); #if defined (__cplusplus) } #endif #define __MP_H__ #endif /* __MP_H__ */ core++-1.7/win32/patches/gmp-4.1-static/0040755000175000001440000000000010147210064016730 5ustar joachimuserscore++-1.7/win32/patches/gmp-4.1-static/config.h0100644000175000001440000003611107520341410020346 0ustar joachimusers/* config.h. Generated automatically by configure. */ /* config.in. Generated automatically from configure.in by autoheader. */ /* Templates for defines setup by configure. Copyright 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Define one (and only one) of these for the CPU host. Only hosts that are going to be tested for need to be in this list, not everything that can possibly be selected. */ /* #undef HAVE_HOST_CPU_alpha */ /* #undef HAVE_HOST_CPU_alphaev5 */ /* #undef HAVE_HOST_CPU_alphaev6 */ /* #undef HAVE_HOST_CPU_alphaev67 */ /* #undef HAVE_HOST_CPU_m68k */ /* #undef HAVE_HOST_CPU_m68000 */ /* #undef HAVE_HOST_CPU_m68010 */ /* #undef HAVE_HOST_CPU_m68020 */ /* #undef HAVE_HOST_CPU_m68030 */ /* #undef HAVE_HOST_CPU_m68040 */ /* #undef HAVE_HOST_CPU_m68060 */ /* #undef HAVE_HOST_CPU_m68302 */ /* #undef HAVE_HOST_CPU_m68360 */ /* #undef HAVE_HOST_CPU_powerpc604 */ /* #undef HAVE_HOST_CPU_powerpc604e */ /* #undef HAVE_HOST_CPU_powerpc750 */ /* #undef HAVE_HOST_CPU_powerpc7400 */ /* #undef HAVE_HOST_CPU_sparc */ /* #undef HAVE_HOST_CPU_sparcv8 */ /* #undef HAVE_HOST_CPU_supersparc */ /* #undef HAVE_HOST_CPU_sparclite */ /* #undef HAVE_HOST_CPU_microsparc */ /* #undef HAVE_HOST_CPU_ultrasparc1 */ /* #undef HAVE_HOST_CPU_ultrasparc2 */ /* #undef HAVE_HOST_CPU_sparc64 */ /* #undef HAVE_HOST_CPU_hppa1_0 */ /* #undef HAVE_HOST_CPU_hppa1_1 */ /* #undef HAVE_HOST_CPU_hppa2_0n */ /* #undef HAVE_HOST_CPU_hppa2_0w */ /* #undef HAVE_HOST_CPU_i386 */ #define HAVE_HOST_CPU_i486 1 /* #undef HAVE_HOST_CPU_i586 */ /* #undef HAVE_HOST_CPU_i686 */ /* #undef HAVE_HOST_CPU_pentium */ /* #undef HAVE_HOST_CPU_pentiummmx */ /* #undef HAVE_HOST_CPU_pentiumpro */ /* #undef HAVE_HOST_CPU_pentium2 */ /* #undef HAVE_HOST_CPU_pentium3 */ /* #undef HAVE_HOST_CPU_k5 */ /* #undef HAVE_HOST_CPU_k6 */ /* #undef HAVE_HOST_CPU_k62 */ /* #undef HAVE_HOST_CPU_k63 */ /* #undef HAVE_HOST_CPU_athlon */ /* a dummy to make autoheader happy */ /* #undef HAVE_HOST_CPU_ */ /* Define one (and only one) of these for the CPU host family. Only hosts that are going to be tested for need to be in this list, not everything that can possibly be selected. */ /* #undef HAVE_HOST_CPU_FAMILY_power */ /* #undef HAVE_HOST_CPU_FAMILY_powerpc */ #define HAVE_HOST_CPU_FAMILY_x86 1 /* Define if we have native implementation of function. */ /* #undef HAVE_NATIVE_mpn_add */ /* #undef HAVE_NATIVE_mpn_add_1 */ /* #undef HAVE_NATIVE_mpn_add_n */ /* #undef HAVE_NATIVE_mpn_add_nc */ /* #undef HAVE_NATIVE_mpn_addmul_1 */ /* #undef HAVE_NATIVE_mpn_addmul_1c */ /* #undef HAVE_NATIVE_mpn_addmul_2 */ /* #undef HAVE_NATIVE_mpn_addmul_3 */ /* #undef HAVE_NATIVE_mpn_addmul_4 */ /* #undef HAVE_NATIVE_mpn_addsub_n */ /* #undef HAVE_NATIVE_mpn_addsub_nc */ /* #undef HAVE_NATIVE_mpn_and_n */ /* #undef HAVE_NATIVE_mpn_andn_n */ /* #undef HAVE_NATIVE_mpn_bdivmod */ /* #undef HAVE_NATIVE_mpn_cmp */ /* #undef HAVE_NATIVE_mpn_com_n */ /* #undef HAVE_NATIVE_mpn_copyd */ /* #undef HAVE_NATIVE_mpn_copyi */ /* #undef HAVE_NATIVE_mpn_divexact_1 */ /* #undef HAVE_NATIVE_mpn_divexact_by3c */ /* #undef HAVE_NATIVE_mpn_divrem */ /* #undef HAVE_NATIVE_mpn_divrem_1 */ /* #undef HAVE_NATIVE_mpn_divrem_1c */ /* #undef HAVE_NATIVE_mpn_divrem_2 */ /* #undef HAVE_NATIVE_mpn_divrem_newton */ /* #undef HAVE_NATIVE_mpn_divrem_classic */ /* #undef HAVE_NATIVE_mpn_dump */ /* #undef HAVE_NATIVE_mpn_gcd */ /* #undef HAVE_NATIVE_mpn_gcd_1 */ /* #undef HAVE_NATIVE_mpn_gcd_finda */ /* #undef HAVE_NATIVE_mpn_gcdext */ /* #undef HAVE_NATIVE_mpn_get_str */ /* #undef HAVE_NATIVE_mpn_hamdist */ /* #undef HAVE_NATIVE_mpn_invert_limb */ /* #undef HAVE_NATIVE_mpn_ior_n */ /* #undef HAVE_NATIVE_mpn_iorn_n */ /* #undef HAVE_NATIVE_mpn_lshift */ /* #undef HAVE_NATIVE_mpn_mod_1 */ /* #undef HAVE_NATIVE_mpn_mod_1c */ /* #undef HAVE_NATIVE_mpn_modexact_1_odd */ /* #undef HAVE_NATIVE_mpn_modexact_1c_odd */ /* #undef HAVE_NATIVE_mpn_mul */ /* #undef HAVE_NATIVE_mpn_mul_1 */ /* #undef HAVE_NATIVE_mpn_mul_1c */ /* #undef HAVE_NATIVE_mpn_mul_2 */ /* #undef HAVE_NATIVE_mpn_mul_3 */ /* #undef HAVE_NATIVE_mpn_mul_4 */ /* #undef HAVE_NATIVE_mpn_mul_basecase */ /* #undef HAVE_NATIVE_mpn_mul_n */ /* #undef HAVE_NATIVE_mpn_nand_n */ /* #undef HAVE_NATIVE_mpn_nior_n */ /* #undef HAVE_NATIVE_mpn_perfect_square_p */ /* #undef HAVE_NATIVE_mpn_popcount */ /* #undef HAVE_NATIVE_mpn_preinv_mod_1 */ /* #undef HAVE_NATIVE_mpn_random2 */ /* #undef HAVE_NATIVE_mpn_random */ /* #undef HAVE_NATIVE_mpn_rawrandom */ /* #undef HAVE_NATIVE_mpn_rshift */ /* #undef HAVE_NATIVE_mpn_scan0 */ /* #undef HAVE_NATIVE_mpn_scan1 */ /* #undef HAVE_NATIVE_mpn_set_str */ /* #undef HAVE_NATIVE_mpn_sqrtrem */ /* #undef HAVE_NATIVE_mpn_sqr_basecase */ /* #undef HAVE_NATIVE_mpn_sqr_diagonal */ /* #undef HAVE_NATIVE_mpn_sub */ /* #undef HAVE_NATIVE_mpn_sub_1 */ /* #undef HAVE_NATIVE_mpn_sub_n */ /* #undef HAVE_NATIVE_mpn_sub_nc */ /* #undef HAVE_NATIVE_mpn_submul_1 */ /* #undef HAVE_NATIVE_mpn_submul_1c */ /* #undef HAVE_NATIVE_mpn_udiv_w_sdiv */ /* #undef HAVE_NATIVE_mpn_umul_ppmm */ /* #undef HAVE_NATIVE_mpn_udiv_qrnnd */ /* #undef HAVE_NATIVE_mpn_xor_n */ /* #undef HAVE_NATIVE_mpn_xnor_n */ /* a dummy to make autoheader happy */ /* #undef HAVE_NATIVE_ */ /* bits per unsigned long, if not in gmp-mparam.h */ #define BITS_PER_ULONG BITS_PER_MP_LIMB /* bytes per mp_limb_t, if not in gmp-mparam.h */ /* #undef BYTES_PER_MP_LIMB */ /* The gmp-mparam.h to update when tuning. */ #define GMP_MPARAM_H_SUGGEST "./mpn/x86/p6/gmp-mparam.h" /* Define if you have the `alarm' function. */ /* #undef HAVE_ALARM */ /* Define if alloca() works (via gmp-impl.h). */ #define HAVE_ALLOCA 1 /* Define if you have and it should be used (not on Ultrix). */ /* #undef HAVE_ALLOCA_H */ /* Define if the compiler accepts gcc style __attribute__ ((const)) */ /* #undef HAVE_ATTRIBUTE_CONST */ /* Define if the compiler accepts gcc style __attribute__ ((malloc)) */ /* #undef HAVE_ATTRIBUTE_MALLOC */ /* Define if the compiler accepts gcc style __attribute__ ((mode (XX))) */ /* #undef HAVE_ATTRIBUTE_MODE */ /* Define if the compiler accepts gcc style __attribute__ ((noreturn)) */ /* #undef HAVE_ATTRIBUTE_NORETURN */ /* Define if tests/libtests has calling conventions checking for the CPU */ #define HAVE_CALLING_CONVENTIONS 1 /* Define if you have the `clock' function. */ #define HAVE_CLOCK 1 /* Define if you have the `clock_gettime' function. */ /* #undef HAVE_CLOCK_GETTIME */ /* Define if you have the `cputime' function. */ /* #undef HAVE_CPUTIME */ /* Define to 1 if you have the declaration of `fgetc', and to 0 if you don't. */ #define HAVE_DECL_FGETC 1 /* Define to 1 if you have the declaration of `fscanf', and to 0 if you don't. */ #define HAVE_DECL_FSCANF 1 /* Define to 1 if you have the declaration of `optarg', and to 0 if you don't. */ #define HAVE_DECL_OPTARG 0 /* Define to 1 if you have the declaration of `ungetc', and to 0 if you don't. */ #define HAVE_DECL_UNGETC 1 /* Define to 1 if you have the declaration of `vfprintf', and to 0 if you don't. */ #define HAVE_DECL_VFPRINTF 1 /* Define if denormalized floats work. */ /* #undef HAVE_DENORMS */ /* Define if you have the header file. */ /* #undef HAVE_DLFCN_H */ /* Define one (and only one) of the following for the format of a `double'. If your format is not among these choices, or you don't know what it is, then leave all of them undefined. "IEEE_LITTLE_SWAPPED" means little endian, but with the two 4-byte halves swapped, as used by ARM CPUs in little endian mode. */ /* #undef HAVE_DOUBLE_IEEE_BIG_ENDIAN */ #define HAVE_DOUBLE_IEEE_LITTLE_ENDIAN 1 /* #undef HAVE_DOUBLE_IEEE_LITTLE_SWAPPED */ /* #undef HAVE_DOUBLE_VAX_D */ /* #undef HAVE_DOUBLE_VAX_G */ /* #undef HAVE_DOUBLE_CRAY_CFP */ /* Define if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define if you have the header file. */ /* #undef HAVE_FPU_CONTROL_H */ /* Define if you have the `getpagesize' function. */ #define HAVE_GETPAGESIZE 1 /* Define if you have the `getrusage' function. */ /* #undef HAVE_GETRUSAGE */ /* Define if you have the `gettimeofday' function. */ /* #undef HAVE_GETTIMEOFDAY */ /* Define if 0/0, 1/0, -1/0 and sqrt(-1) work to generate NaN/infinities. */ /* #undef HAVE_INFS */ /* Define if the system has the type `intmax_t'. */ #define HAVE_INTMAX_T 1 /* Define if you have the header file. */ /* #undef HAVE_INTTYPES_H */ /* Define one (just one) of the following for the endiannes of `mp_limb_t'. If the endianness is not a simple big or little, or you don't know what it is, then leave both of these undefined. */ /* #undef HAVE_LIMB_BIG_ENDIAN */ #define HAVE_LIMB_LITTLE_ENDIAN 1 /* Define if you have the `localeconv' function. */ #define HAVE_LOCALECONV 1 /* Define if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define if the system has the type `long double'. */ #define HAVE_LONG_DOUBLE 1 /* Define if the system has the type `long long'. */ /* #undef HAVE_LONG_LONG */ /* Define if you have the `lrand48' function. */ /* #undef HAVE_LRAND48 */ /* Define if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define if you have the `memset' function. */ #define HAVE_MEMSET 1 /* Define if you have the `mmap' function. */ /* #undef HAVE_MMAP */ /* Define if you have the `mprotect' function. */ #define HAVE_MPROTECT 1 /* Define if you have the `obstack_vprintf' function. */ /* #undef HAVE_OBSTACK_VPRINTF */ /* Define if you have the `popen' function. */ #define HAVE_POPEN 1 /* Define if you have the `processor_info' function. */ /* #undef HAVE_PROCESSOR_INFO */ /* Define if the system has the type `ptrdiff_t'. */ #define HAVE_PTRDIFF_T 1 /* Define if the system has the type `quad_t'. */ /* #undef HAVE_QUAD_T */ /* Define if you have the `read_real_time' function. */ /* #undef HAVE_READ_REAL_TIME */ /* Define if you have the `sigaction' function. */ /* #undef HAVE_SIGACTION */ /* Define if you have the `sigaltstack' function. */ /* #undef HAVE_SIGALTSTACK */ /* Define if you have the `sigstack' function. */ /* #undef HAVE_SIGSTACK */ /* Tune directory speed_cyclecounter, undef=none, 1=32bits, 2=64bits) */ #define HAVE_SPEED_CYCLECOUNTER 2 /* Define if the system has the type `stack_t'. */ /* #undef HAVE_STACK_T */ /* Define if exists and works */ #define HAVE_STDARG 1 /* Define if you have the header file. */ /* #undef HAVE_STDINT_H */ /* Define if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define if you have the `strcasecmp' function. */ /* #undef HAVE_STRCASECMP */ /* Define if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define if cpp supports the ANSI # stringizing operator. */ #define HAVE_STRINGIZE 1 /* Define if you have the header file. */ /* #undef HAVE_STRINGS_H */ /* Define if you have the header file. */ #define HAVE_STRING_H 1 /* Define if you have the `strnlen' function. */ /* #undef HAVE_STRNLEN */ /* Define if you have the `strtoul' function. */ #define HAVE_STRTOUL 1 /* Define if you have the `sysconf' function. */ /* #undef HAVE_SYSCONF */ /* Define if you have the `sysctl' function. */ /* #undef HAVE_SYSCTL */ /* Define if you have the `sysctlbyname' function. */ /* #undef HAVE_SYSCTLBYNAME */ /* Define if you have the `syssgi' function. */ /* #undef HAVE_SYSSGI */ /* Define if you have the header file. */ /* #undef HAVE_SYS_MMAN_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_PARAM_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_PROCESSOR_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_RESOURCE_H */ /* Define if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYS_SYSCTL_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_SYSSGI_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_SYSTEMCFG_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_TIMES_H */ /* Define if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define if you have the `times' function. */ /* #undef HAVE_TIMES */ /* Define if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define if you have vsnprintf and it works properly. */ /* #undef HAVE_VSNPRINTF */ /* Assembler local label prefix */ #define LSYM_PREFIX "L" /* Define if you have the `fesetround' function via the header file. */ /* #undef MPFR_HAVE_FESETROUND */ /* Name of package */ #define PACKAGE "gmp" /* Define if compiler has function prototypes */ #define PROTOTYPES 1 /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void /* The size of a `mp_limb_t', as computed by sizeof. */ /* #undef SIZEOF_MP_LIMB_T */ /* The size of a `unsigned long', as computed by sizeof. */ /* #undef SIZEOF_UNSIGNED_LONG */ /* Define if sscanf requires writable inputs */ /* #undef SSCANF_WRITABLE_INPUT */ /* Define if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Maximum size the tune program can test for SQR_KARATSUBA_THRESHOLD */ #define TUNE_SQR_KARATSUBA_MAX 67 /* Version number of package */ #define VERSION "4.1" /* ./configure --enable-assert option, to enable some ASSERT()s */ /* #undef WANT_ASSERT */ /* ./configure --enable-fft option, to enable FFTs for multiplication */ #define WANT_FFT 1 /* --enable-alloca=yes */ #define WANT_TMP_ALLOCA 1 /* --enable-alloca=debug */ /* #undef WANT_TMP_DEBUG */ /* --enable-alloca=malloc-notreentrant */ /* #undef WANT_TMP_NOTREENTRANT */ /* --enable-alloca=malloc-reentrant */ /* #undef WANT_TMP_REENTRANT */ /* Define if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ /* #undef WORDS_BIGENDIAN */ /* Define if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ /* #undef YYTEXT_POINTER */ /* Define as `__inline' if that's what the C compiler calls it, or to nothing if it is not supported. */ #define inline __inline /* Define as `__restrict' if that's what the C compiler calls it, or to nothing if it is not supported. */ #define restrict __restrict__ core++-1.7/win32/patches/gmp-4.1-static/gmp-mparam.h0100644000175000001440000000302707520341410021137 0ustar joachimusers/* 80486 gmp-mparam.h -- Compiler/machine parameter header file. Copyright 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define BITS_PER_MP_LIMB 32 #define BYTES_PER_MP_LIMB 4 /* 75MHz DX4, gcc 2.95.2 */ /* Generated by tuneup.c, 2001-02-03. */ #define MUL_KARATSUBA_THRESHOLD 22 #define MUL_TOOM3_THRESHOLD 278 #define SQR_KARATSUBA_THRESHOLD 58 #define SQR_TOOM3_THRESHOLD 226 #define DIV_SB_PREINV_THRESHOLD MP_SIZE_T_MAX #define DIV_DC_THRESHOLD 92 #define POWM_THRESHOLD 125 #define GCD_ACCEL_THRESHOLD 3 #define GCDEXT_THRESHOLD 70 #define USE_PREINV_MOD_1 0 #define DIVREM_2_THRESHOLD MP_SIZE_T_MAX #define MODEXACT_1_ODD_THRESHOLD 25 core++-1.7/win32/patches/gmp-4.1-static/gmp.dsp0100644000175000001440000022534110017704503020231 0ustar joachimusers# Microsoft Developer Studio Project File - Name="gmp" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=gmp - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "gmp.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gmp.mak" CFG="gmp - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gmp - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "gmp - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "gmp - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"../lib/gmp.lib" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"../lib/gmpDebug.lib" !ENDIF # Begin Target # Name "gmp - Win32 Release" # Name "gmp - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\mpf\abs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\abs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\abs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\add.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\add.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\add.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\add_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\add_n.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" # ADD CPP /D "OPERATION_add_n" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" # ADD CPP /D "OPERATION_add_n" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\add_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\add_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\addmul_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" # ADD CPP /D "OPERATION_addmul_1" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" # ADD CPP /D "OPERATION_addmul_1" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\and.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\aors.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\aorsmul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\aorsmul_i.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\array_init.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\asprintf.c # End Source File # Begin Source File SOURCE=.\printf\asprntffuns.c # End Source File # Begin Source File SOURCE=.\assert.c # End Source File # Begin Source File SOURCE=.\mpn\generic\bdivmod.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\bin_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\bin_uiui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\canonicalize.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\ceilfloor.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cfdiv_q_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cfdiv_r_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\clear.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\clear.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\clear.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\clrbit.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\cmp_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmp_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmpabs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmpabs_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cmpabs_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\com.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\compat.c # End Source File # Begin Source File SOURCE=.\mpz\cong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cong_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\cong_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\dc_divrem_n.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\div.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\div.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\div_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\div_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\dive_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\dive_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\diveby3.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divegcd.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divexact.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\divis.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divis.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divis_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\divis_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\divrem.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\divrem_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\divrem_2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\doprnt.c # End Source File # Begin Source File SOURCE=.\printf\doprntf.c # End Source File # Begin Source File SOURCE=.\printf\doprnti.c # End Source File # Begin Source File SOURCE=.\scanf\doscan.c # End Source File # Begin Source File SOURCE=.\mpf\dump.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\dump.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\dump.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\eq.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\equal.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\errno.c # End Source File # Begin Source File SOURCE=".\extract-dbl.c" # End Source File # Begin Source File SOURCE=.\mpz\fac_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\fib2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fib2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fib_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_sint.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_sint.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_slong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_slong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_sshort.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_sshort.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_uint.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_uint.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_ulong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_ulong.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\fits_ushort.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\fits_ushort.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\fprintf.c # End Source File # Begin Source File SOURCE=.\scanf\fscanf.c # End Source File # Begin Source File SOURCE=.\scanf\fscanffuns.c # End Source File # Begin Source File SOURCE=.\mpn\generic\gcd.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\gcd.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\gcd_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\gcd_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\gcdext.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\gcdext.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_d_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_d_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\get_den.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_dfl_prec.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\get_num.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_prc.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\get_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\get_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\getlimbn.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\hamdist.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\hamdist.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\init.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\init.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\init.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\init2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\init2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\inp_raw.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=".\insert-dbl.c" # End Source File # Begin Source File SOURCE=.\mpf\int_p.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\inv.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\invert.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\ior.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\iset_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\iset_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\jacbase.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\jacobi.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\kronsz.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\kronuz.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\kronzs.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\kronzu.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\lcm.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\lcm_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\lshift.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\lucnum2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\lucnum_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\md_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\memory.c # End Source File # Begin Source File SOURCE=.\mpz\millerrabin.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mod.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mod_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mod_34lsub1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mode1o.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\mp_bases.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mp_bpl.c # End Source File # Begin Source File SOURCE=.\mp_clz_tab.c # End Source File # Begin Source File SOURCE=.\mp_minv_tab.c # End Source File # Begin Source File SOURCE=.\mp_set_fns.c # End Source File # Begin Source File SOURCE=.\mpf\mul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\mul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mul.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\mul_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mul_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul_basecase.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul_fft.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\mul_n.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mul_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\mul_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\mul_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\n_pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\neg.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\neg.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\neg.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\nextprime.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\obprintf.c # End Source File # Begin Source File SOURCE=.\printf\obprntffuns.c # End Source File # Begin Source File SOURCE=.\printf\obvprintf.c # End Source File # Begin Source File SOURCE=.\mpz\out_raw.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\perfpow.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\perfsqr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\perfsqr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\popcount.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\popcount.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\pow_1.c # End Source File # Begin Source File SOURCE=.\mpf\pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\powm.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\powm_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\pprime_p.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\pre_divrem_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\pre_mod_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\printf.c # End Source File # Begin Source File SOURCE=.\printf\printffuns.c # End Source File # Begin Source File SOURCE=.\rand.c # End Source File # Begin Source File SOURCE=.\randclr.c # End Source File # Begin Source File SOURCE=.\randdef.c # End Source File # Begin Source File SOURCE=.\randlc.c # End Source File # Begin Source File SOURCE=.\randlc2s.c # End Source File # Begin Source File SOURCE=.\randlc2x.c # End Source File # Begin Source File SOURCE=.\mpn\generic\random.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\random.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\random2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\random2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\random2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\randraw.c # End Source File # Begin Source File SOURCE=.\rands.c # End Source File # Begin Source File SOURCE=.\randsd.c # End Source File # Begin Source File SOURCE=.\randsdui.c # End Source File # Begin Source File SOURCE=.\mpz\realloc.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\realloc2.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\reldiff.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\remove.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=".\printf\repl-vsnprintf.c" # End Source File # Begin Source File SOURCE=.\mpz\root.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\rootrem.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\rrandomb.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\rshift.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sb_divrem_mn.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\scan0.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\scan0.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\scan1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\scan1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\scanf\scanf.c # End Source File # Begin Source File SOURCE=.\mpf\set.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_den.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_dfl_prec.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_f.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_f.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_num.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_prc.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_prc_raw.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\set_z.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\set_z.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\setbit.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\size.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\size.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sizeinbase.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\snprintf.c # End Source File # Begin Source File SOURCE=.\printf\snprntffuns.c # End Source File # Begin Source File SOURCE=.\printf\sprintf.c # End Source File # Begin Source File SOURCE=.\printf\sprintffuns.c # End Source File # Begin Source File SOURCE=.\mpn\generic\sqr_basecase.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\sqrt.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sqrt.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\sqrt_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sqrtrem.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sqrtrem.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\scanf\sscanf.c # End Source File # Begin Source File SOURCE=.\scanf\sscanffuns.c # End Source File # Begin Source File SOURCE=.\mpf\sub.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sub.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sub.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sub_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\sub_n.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" # ADD CPP /D "OPERATION_sub_n" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" # ADD CPP /D "OPERATION_sub_n" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\sub_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\sub_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\submul_1.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" # ADD CPP /D "OPERATION_submul_1" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" # ADD CPP /D "OPERATION_submul_1" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\swap.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpq\swap.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpq" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpq" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\swap.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_q_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpn\generic\tdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpn" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpn" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_r_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\trunc.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\tstbit.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\ui_div.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\ui_pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\ui_sub.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpf\urandomb.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpf" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpf" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\urandomb.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\mpz\urandomm.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # Begin Source File SOURCE=.\printf\vasprintf.c # End Source File # Begin Source File SOURCE=.\version.c # End Source File # Begin Source File SOURCE=.\printf\vfprintf.c # End Source File # Begin Source File SOURCE=.\scanf\vfscanf.c # End Source File # Begin Source File SOURCE=.\printf\vprintf.c # End Source File # Begin Source File SOURCE=.\scanf\vscanf.c # End Source File # Begin Source File SOURCE=.\printf\vsnprintf.c # End Source File # Begin Source File SOURCE=.\printf\vsprintf.c # End Source File # Begin Source File SOURCE=.\scanf\vsscanf.c # End Source File # Begin Source File SOURCE=.\mpz\xor.c !IF "$(CFG)" == "gmp - Win32 Release" # PROP Intermediate_Dir "Release\mpz" !ELSEIF "$(CFG)" == "gmp - Win32 Debug" # PROP Intermediate_Dir "Debug\mpz" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # End Target # End Project core++-1.7/win32/patches/gmp-4.1-static/gmp.dsw0100644000175000001440000000102107520341411020223 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "gmp"=.\gmp.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/patches/gmp-4.1-static/gmp.h0100644000175000001440000023212307520341411017666 0ustar joachimusers/* Definitions for GNU multiple precision functions. -*- mode: c -*- Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __GMP_H__ #if defined (__cplusplus) #include /* for istream, ostream */ #endif /* Instantiated by configure. */ #if ! __GMP_WITHIN_CONFIGURE #define __GMP_BITS_PER_MP_LIMB 32 #define __GMP_HAVE_HOST_CPU_FAMILY_power 0 #define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0 #define GMP_LIMB_BITS 32 #define GMP_NAIL_BITS 0 #endif #define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS) #define GMP_NUMB_MASK ((~(mp_limb_t) 0) >> GMP_NAIL_BITS) #define GMP_NUMB_MAX GMP_NUMB_MASK #define GMP_NAIL_MASK (~ GMP_NUMB_MASK) /* The following (everything under ifndef __GNU_MP__) must be identical in gmp.h and mp.h to allow both to be included in an application or during the library build. */ #ifndef __GNU_MP__ #define __GNU_MP__ 4 #define __need_size_t /* tell gcc stddef.h we only want size_t */ #if defined (__cplusplus) #include /* for size_t */ #else #include /* for size_t */ #endif #undef __need_size_t /* Instantiated by configure. */ #if ! __GMP_WITHIN_CONFIGURE /* #undef _LONG_LONG_LIMB */ #define __GMP_LIBGMP_DLL 0 #endif /* __STDC__ - some ANSI compilers define this only to 0, hence the use of "defined" and not "__STDC__-0". In particular Sun workshop C 5.0 sets __STDC__ to 0, but requires "##" for token pasting. _AIX - gnu ansidecl.h asserts that all known AIX compilers are ANSI but don't always define __STDC__. _mips - gnu ansidecl.h says the RISC/OS MIPS compiler is ANSI in SVR4 mode, but doesn't define __STDC__. _MSC_VER - Microsoft C is ANSI, but __STDC__ is undefined unless the /Za option is given (in which case it's 1). _WIN32 - tested for by gnu ansidecl.h, no doubt on the assumption that all w32 compilers are ansi. */ #if defined (__STDC__) \ || defined (__cplusplus) \ || defined (_AIX) \ || defined (__DECC) \ || (defined (__mips) && defined (_SYSTYPE_SVR4)) \ || defined (_MSC_VER) \ || defined (_WIN32) #define __GMP_HAVE_CONST 1 #define __GMP_HAVE_PROTOTYPES 1 #define __GMP_HAVE_TOKEN_PASTE 1 #else #define __GMP_HAVE_CONST 0 #define __GMP_HAVE_PROTOTYPES 0 #define __GMP_HAVE_TOKEN_PASTE 0 #endif #if __GMP_HAVE_CONST #define __gmp_const const #define __gmp_signed signed #else #define __gmp_const #define __gmp_signed #endif /* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in all other circumstances. When compiling objects for libgmp, __GMP_DECLSPEC is an export directive, or when compiling for an application it's an import directive. The two cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles (and not defined from an application). __GMP_DECLSPEC_XX is similarly used for libgmpxx. __GMP_WITHIN_GMPXX indicates when building libgmpxx, and in that case libgmpxx functions are exports, but libgmp functions which might get called are imports. libmp.la uses __GMP_DECLSPEC, just as if it were libgmp.la. libgmp and libmp don't call each other, so there's no conflict or confusion. Libtool DLL_EXPORT define is not used. There's no attempt to support GMP built both static and DLL. Doing so would mean applications would have to tell us which of the two is going to be used when linking, and that seems very tedious and error prone if using GMP by hand, and equally tedious from a package since autoconf and automake don't give much help. __GMP_DECLSPEC is required on all documented global functions and variables, the various internals in gmp-impl.h etc can be left unadorned. But internals used by the test programs or speed measuring programs should have __GMP_DECLSPEC, and certainly constants or variables must have it or the wrong address will be resolved. */ #if defined (__GNUC__) || defined (_MSC_VER) || defined (__BORLANDC__) #define __GMP_DECLSPEC_EXPORT __declspec(dllexport) #define __GMP_DECLSPEC_IMPORT __declspec(dllimport) #endif #ifdef __WATCOMC__ #define __GMP_DECLSPEC_EXPORT __export #define __GMP_DECLSPEC_IMPORT __import #endif #ifdef __IBMC__ #define __GMP_DECLSPEC_EXPORT _Export #define __GMP_DECLSPEC_IMPORT _Import #endif #if __GMP_LIBGMP_DLL #if __GMP_WITHIN_GMP /* compiling to go into a DLL libgmp */ #define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT #else /* compiling to go into an application which will link to a DLL libgmp */ #define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT #endif #else /* all other cases */ #define __GMP_DECLSPEC #endif #ifdef _SHORT_LIMB typedef unsigned int mp_limb_t; typedef int mp_limb_signed_t; #else #ifdef _LONG_LONG_LIMB typedef unsigned long long int mp_limb_t; typedef long long int mp_limb_signed_t; #else typedef unsigned long int mp_limb_t; typedef long int mp_limb_signed_t; #endif #endif typedef mp_limb_t * mp_ptr; typedef __gmp_const mp_limb_t * mp_srcptr; #if defined (_CRAY) && ! defined (_CRAYMPP) /* plain `int' is much faster (48 bits) */ #define __GMP_MP_SIZE_T_INT 1 typedef int mp_size_t; typedef int mp_exp_t; #else #define __GMP_MP_SIZE_T_INT 0 typedef long int mp_size_t; typedef long int mp_exp_t; #endif typedef struct { int _mp_alloc; /* Number of *limbs* allocated and pointed to by the _mp_d field. */ int _mp_size; /* abs(_mp_size) is the number of limbs the last field points to. If _mp_size is negative this is a negative number. */ mp_limb_t *_mp_d; /* Pointer to the limbs. */ } __mpz_struct; #endif /* __GNU_MP__ */ typedef __mpz_struct MP_INT; typedef __mpz_struct mpz_t[1]; typedef struct { __mpz_struct _mp_num; __mpz_struct _mp_den; } __mpq_struct; typedef __mpq_struct MP_RAT; typedef __mpq_struct mpq_t[1]; typedef struct { int _mp_prec; /* Max precision, in number of `mp_limb_t's. Set by mpf_init and modified by mpf_set_prec. The area pointed to by the _mp_d field contains `prec' + 1 limbs. */ int _mp_size; /* abs(_mp_size) is the number of limbs the last field points to. If _mp_size is negative this is a negative number. */ mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */ mp_limb_t *_mp_d; /* Pointer to the limbs. */ } __mpf_struct; /* typedef __mpf_struct MP_FLOAT; */ typedef __mpf_struct mpf_t[1]; /* Available random number generation algorithms. */ typedef enum { GMP_RAND_ALG_DEFAULT = 0, GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */ } gmp_randalg_t; /* Linear congruential data struct. */ typedef struct { mpz_t _mp_a; /* Multiplier. */ unsigned long int _mp_c; /* Adder. */ mpz_t _mp_m; /* Modulus (valid only if m2exp == 0). */ unsigned long int _mp_m2exp; /* If != 0, modulus is 2 ^ m2exp. */ } __gmp_randata_lc; /* Random state struct. */ typedef struct { mpz_t _mp_seed; /* Current seed. */ gmp_randalg_t _mp_alg; /* Algorithm used. */ union { /* Algorithm specific data. */ __gmp_randata_lc *_mp_lc; /* Linear congruential. */ } _mp_algdata; } __gmp_randstate_struct; typedef __gmp_randstate_struct gmp_randstate_t[1]; /* Types for function declarations in gmp files. */ /* ??? Should not pollute user name space with these ??? */ typedef __gmp_const __mpz_struct *mpz_srcptr; typedef __mpz_struct *mpz_ptr; typedef __gmp_const __mpf_struct *mpf_srcptr; typedef __mpf_struct *mpf_ptr; typedef __gmp_const __mpq_struct *mpq_srcptr; typedef __mpq_struct *mpq_ptr; /* This is not wanted in mp.h, so put it outside the __GNU_MP__ common section. */ #if __GMP_LIBGMP_DLL #if __GMP_WITHIN_GMPXX /* compiling to go into a DLL libgmpxx */ #define __GMP_DECLSPEC_XX __GMP_DECLSPEC_EXPORT #else /* compiling to go into a application which will link to a DLL libgmpxx */ #define __GMP_DECLSPEC_XX __GMP_DECLSPEC_IMPORT #endif #else /* all other cases */ #define __GMP_DECLSPEC_XX #endif #if __GMP_HAVE_PROTOTYPES #define __GMP_PROTO(x) x #else #define __GMP_PROTO(x) () #endif #ifndef __MPN #if __GMP_HAVE_TOKEN_PASTE #define __MPN(x) __gmpn_##x #else #define __MPN(x) __gmpn_/**/x #endif #endif #if defined (FILE) \ || defined (H_STDIO) \ || defined (_H_STDIO) /* AIX */ \ || defined (_STDIO_H) /* glibc, Sun, SCO */ \ || defined (_STDIO_H_) /* BSD, OSF */ \ || defined (__STDIO_H) /* Borland */ \ || defined (__STDIO_H__) /* IRIX */ \ || defined (_STDIO_INCLUDED) /* HPUX */ \ || defined (__dj_include_stdio_h_) /* DJGPP */ \ || defined (_FILE_DEFINED) /* Microsoft */ \ || defined (__STDIO__) /* Apple MPW MrC */ #define _GMP_H_HAVE_FILE 1 #endif /* In ISO C, if a prototype involving "struct obstack *" is given without that structure defined, then the struct is scoped down to just the prototype, causing a conflict if it's subsequently defined for real. So only give prototypes if we've got obstack.h. */ #if defined (_OBSTACK_H) /* glibc */ #define _GMP_H_HAVE_OBSTACK 1 #endif /* The prototypes for gmp_vprintf etc are provided only if va_list is available, via an application having included or . Usually va_list is a typedef so can't be tested directly, but va_start is almost certainly a macro, so look for that. will define some sort of va_list for vprintf and vfprintf, but let's not bother trying to use that since it's not standard and since application uses for gmp_vprintf etc will almost certainly require the whole or anyway. */ #ifdef va_start #define _GMP_H_HAVE_VA_LIST 1 #endif /* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ #if defined (__GNUC__) && defined (__GNUC_MINOR__) #define __GMP_GNUC_PREREQ(maj, min) \ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) #else #define __GMP_GNUC_PREREQ(maj, min) 0 #endif /* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically it means a function does nothing but examine its arguments and memory (global or via arguments) to generate a return value, but changes nothing and has no side-effects. */ #if __GMP_GNUC_PREREQ (2,96) #define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else #define __GMP_ATTRIBUTE_PURE #endif /* An empty "throw ()" means the function doesn't throw any C++ exceptions, this can save some stack frame info in applications. Currently it's given only on functions which never divide-by-zero etc, don't allocate memory, and are expected to never need to allocate memory. This leaves open the possibility of a C++ throw from a future GMP exceptions scheme. mpz_set_ui etc are omitted to leave open the lazy allocation scheme described in doc/tasks.html. mpz_get_d etc are omitted to leave open exceptions for float overflows. Note that __GMP_NOTHROW must be given on any inlines the same as on their prototypes (for g++ at least, where they're used together). Note also that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like __GMP_ATTRIBUTE_PURE. */ #if defined (__cplusplus) #define __GMP_NOTHROW throw () #else #define __GMP_NOTHROW #endif /* PORTME: What other compilers have a useful "extern inline"? "static inline" would be an acceptable substitute if the compiler (or linker) discards unused statics. */ /* gcc has __inline__ in all modes, including strict ansi. Give a prototype for an inline too, so as to correctly specify "dllimport" on windows, in case the function is called rather than inlined. */ #ifdef __GNUC__ #define __GMP_EXTERN_INLINE extern __inline__ #define __GMP_INLINE_PROTOTYPES 1 #endif /* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes place under -O. Without -O "foo" seems to be emitted whether it's used or not, which is wasteful. "extern inline foo()" isn't useful, the "extern" is apparently ignored, so foo is inlined if possible but also emitted as a global, which causes multiple definition errors when building a shared libgmp. */ #if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \ && ! defined (__GMP_EXTERN_INLINE) #define __GMP_EXTERN_INLINE static inline #endif /* C++ always has "inline" and since it's a normal feature the linker should discard duplicate non-inlined copies, or if it doesn't then that's a problem for everyone, not just GMP. */ #if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE) #define __GMP_EXTERN_INLINE inline #endif /* By default, don't give a prototype when there's going to be an inline version. Note in particular that Cray C++ objects to the combination of prototype and inline. */ #ifdef __GMP_EXTERN_INLINE #ifndef __GMP_INLINE_PROTOTYPES #define __GMP_INLINE_PROTOTYPES 0 #endif #else #define __GMP_INLINE_PROTOTYPES 1 #endif #define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x)) #define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i)) #define __GMP_UINT_MAX (~ (unsigned) 0) #define __GMP_ULONG_MAX (~ (unsigned long) 0) #define __GMP_USHRT_MAX ((unsigned short) ~0) /* Allow direct user access to numerator and denominator of a mpq_t object. */ #define mpq_numref(Q) (&((Q)->_mp_num)) #define mpq_denref(Q) (&((Q)->_mp_den)) #if defined (__cplusplus) extern "C" { #endif #define mp_set_memory_functions __gmp_set_memory_functions __GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t), void *(*) (void *, size_t, size_t), void (*) (void *, size_t))) __GMP_NOTHROW; #define mp_bits_per_limb __gmp_bits_per_limb __GMP_DECLSPEC extern __gmp_const int mp_bits_per_limb; #define gmp_errno __gmp_errno __GMP_DECLSPEC extern int gmp_errno; #define gmp_version __gmp_version __GMP_DECLSPEC extern __gmp_const char * __gmp_const gmp_version; /* The following for internal use only. Enhancement: __gmp_allocate_func could have "__attribute__ ((malloc))", but current gcc (3.0) doesn't seem to support that. */ __GMP_DECLSPEC extern void * (*__gmp_allocate_func) __GMP_PROTO ((size_t)); __GMP_DECLSPEC extern void * (*__gmp_reallocate_func) __GMP_PROTO ((void *, size_t, size_t)); __GMP_DECLSPEC extern void (*__gmp_free_func) __GMP_PROTO ((void *, size_t)); /**************** Random number routines. ****************/ /* obsolete */ #define gmp_randinit __gmp_randinit __GMP_DECLSPEC void gmp_randinit __GMP_PROTO ((gmp_randstate_t, gmp_randalg_t, ...)); #define gmp_randinit_default __gmp_randinit_default __GMP_DECLSPEC void gmp_randinit_default __GMP_PROTO ((gmp_randstate_t)); #define gmp_randinit_lc __gmp_randinit_lc __GMP_DECLSPEC void gmp_randinit_lc __GMP_PROTO ((gmp_randstate_t, mpz_srcptr, unsigned long int, mpz_srcptr)); #define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp __GMP_DECLSPEC void gmp_randinit_lc_2exp __GMP_PROTO ((gmp_randstate_t, mpz_srcptr, unsigned long int, unsigned long int)); #define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size __GMP_DECLSPEC int gmp_randinit_lc_2exp_size __GMP_PROTO ((gmp_randstate_t, unsigned long)); #define gmp_randseed __gmp_randseed __GMP_DECLSPEC void gmp_randseed __GMP_PROTO ((gmp_randstate_t, mpz_srcptr)); #define gmp_randseed_ui __gmp_randseed_ui __GMP_DECLSPEC void gmp_randseed_ui __GMP_PROTO ((gmp_randstate_t, unsigned long int)); #define gmp_randclear __gmp_randclear __GMP_DECLSPEC void gmp_randclear __GMP_PROTO ((gmp_randstate_t)); /**************** Formatted output routines. ****************/ #define gmp_asprintf __gmp_asprintf __GMP_DECLSPEC int gmp_asprintf __GMP_PROTO ((char **, const char *, ...)); #define gmp_fprintf __gmp_fprintf #if _GMP_H_HAVE_FILE __GMP_DECLSPEC int gmp_fprintf __GMP_PROTO ((FILE *, const char *, ...)); #endif #define gmp_obstack_printf __gmp_obstack_printf #if _GMP_H_HAVE_OBSTACK __GMP_DECLSPEC int gmp_obstack_printf __GMP_PROTO ((struct obstack *, const char *, ...)); #endif #define gmp_obstack_vprintf __gmp_obstack_vprintf #if _GMP_H_HAVE_OBSTACK && _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_obstack_vprintf __GMP_PROTO ((struct obstack *, const char *, va_list)); #endif #define gmp_printf __gmp_printf __GMP_DECLSPEC int gmp_printf __GMP_PROTO ((const char *, ...)); #define gmp_snprintf __gmp_snprintf __GMP_DECLSPEC int gmp_snprintf __GMP_PROTO ((char *, size_t, const char *, ...)); #define gmp_sprintf __gmp_sprintf __GMP_DECLSPEC int gmp_sprintf __GMP_PROTO ((char *, const char *, ...)); #define gmp_vasprintf __gmp_vasprintf #if _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vasprintf __GMP_PROTO ((char **, const char *, va_list)); #endif #define gmp_vfprintf __gmp_vfprintf #if _GMP_H_HAVE_FILE && _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vfprintf __GMP_PROTO ((FILE *, const char *, va_list)); #endif #define gmp_vprintf __gmp_vprintf #if _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vprintf __GMP_PROTO ((const char *, va_list)); #endif #define gmp_vsnprintf __gmp_vsnprintf #if _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vsnprintf __GMP_PROTO ((char *, size_t, const char *, va_list)); #endif #define gmp_vsprintf __gmp_vsprintf #if _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vsprintf __GMP_PROTO ((char *, const char *, va_list)); #endif /**************** Formatted input routines. ****************/ #define gmp_fscanf __gmp_fscanf #if _GMP_H_HAVE_FILE __GMP_DECLSPEC int gmp_fscanf __GMP_PROTO ((FILE *, const char *, ...)); #endif #define gmp_scanf __gmp_scanf __GMP_DECLSPEC int gmp_scanf __GMP_PROTO ((const char *, ...)); #define gmp_sscanf __gmp_sscanf __GMP_DECLSPEC int gmp_sscanf __GMP_PROTO ((const char *, const char *, ...)); #define gmp_vfscanf __gmp_vfscanf #if _GMP_H_HAVE_FILE && _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vfscanf __GMP_PROTO ((FILE *, const char *, va_list)); #endif #define gmp_vscanf __gmp_vscanf #if _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vscanf __GMP_PROTO ((const char *, va_list)); #endif #define gmp_vsscanf __gmp_vsscanf #if _GMP_H_HAVE_VA_LIST __GMP_DECLSPEC int gmp_vsscanf __GMP_PROTO ((const char *, const char *, va_list)); #endif /**************** Integer (i.e. Z) routines. ****************/ #define _mpz_realloc __gmpz_realloc #define mpz_realloc __gmpz_realloc __GMP_DECLSPEC void *_mpz_realloc __GMP_PROTO ((mpz_ptr, mp_size_t)); #define mpz_abs __gmpz_abs #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_abs __GMP_DECLSPEC void mpz_abs __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #endif #define mpz_add __gmpz_add __GMP_DECLSPEC void mpz_add __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_add_ui __gmpz_add_ui __GMP_DECLSPEC void mpz_add_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_addmul __gmpz_addmul __GMP_DECLSPEC void mpz_addmul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_addmul_ui __gmpz_addmul_ui __GMP_DECLSPEC void mpz_addmul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_and __gmpz_and __GMP_DECLSPEC void mpz_and __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_array_init __gmpz_array_init __GMP_DECLSPEC void mpz_array_init __GMP_PROTO ((mpz_ptr, mp_size_t, mp_size_t)); #define mpz_bin_ui __gmpz_bin_ui __GMP_DECLSPEC void mpz_bin_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_bin_uiui __gmpz_bin_uiui __GMP_DECLSPEC void mpz_bin_uiui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int)); #define mpz_cdiv_q __gmpz_cdiv_q __GMP_DECLSPEC void mpz_cdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp __GMP_DECLSPEC void mpz_cdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); #define mpz_cdiv_q_ui __gmpz_cdiv_q_ui __GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_cdiv_qr __gmpz_cdiv_qr __GMP_DECLSPEC void mpz_cdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui __GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_cdiv_r __gmpz_cdiv_r __GMP_DECLSPEC void mpz_cdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp __GMP_DECLSPEC void mpz_cdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); #define mpz_cdiv_r_ui __gmpz_cdiv_r_ui __GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_cdiv_ui __gmpz_cdiv_ui __GMP_DECLSPEC unsigned long int mpz_cdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_clear __gmpz_clear __GMP_DECLSPEC void mpz_clear __GMP_PROTO ((mpz_ptr)); #define mpz_clrbit __gmpz_clrbit __GMP_DECLSPEC void mpz_clrbit __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_cmp __gmpz_cmp __GMP_DECLSPEC int mpz_cmp __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_cmp_d __gmpz_cmp_d __GMP_DECLSPEC int mpz_cmp_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; #define _mpz_cmp_si __gmpz_cmp_si __GMP_DECLSPEC int _mpz_cmp_si __GMP_PROTO ((mpz_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define _mpz_cmp_ui __gmpz_cmp_ui __GMP_DECLSPEC int _mpz_cmp_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_cmpabs __gmpz_cmpabs __GMP_DECLSPEC int mpz_cmpabs __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_cmpabs_d __gmpz_cmpabs_d __GMP_DECLSPEC int mpz_cmpabs_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; #define mpz_cmpabs_ui __gmpz_cmpabs_ui __GMP_DECLSPEC int mpz_cmpabs_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_com __gmpz_com __GMP_DECLSPEC void mpz_com __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_congruent_p __gmpz_congruent_p __GMP_DECLSPEC int mpz_congruent_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_congruent_2exp_p __gmpz_congruent_2exp_p __GMP_DECLSPEC int mpz_congruent_2exp_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, unsigned long)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_congruent_ui_p __gmpz_congruent_ui_p __GMP_DECLSPEC int mpz_congruent_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long, unsigned long)) __GMP_ATTRIBUTE_PURE; #define mpz_divexact __gmpz_divexact __GMP_DECLSPEC void mpz_divexact __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_divexact_ui __gmpz_divexact_ui __GMP_DECLSPEC void mpz_divexact_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); #define mpz_divisible_p __gmpz_divisible_p __GMP_DECLSPEC int mpz_divisible_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_divisible_ui_p __gmpz_divisible_ui_p __GMP_DECLSPEC int mpz_divisible_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE; #define mpz_divisible_2exp_p __gmpz_divisible_2exp_p __GMP_DECLSPEC int mpz_divisible_2exp_p __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_dump __gmpz_dump __GMP_DECLSPEC void mpz_dump __GMP_PROTO ((mpz_srcptr)); #define mpz_export __gmpz_export __GMP_DECLSPEC void *mpz_export __GMP_PROTO ((void *, size_t *, int, size_t, int, size_t, mpz_srcptr z)); #define mpz_fac_ui __gmpz_fac_ui __GMP_DECLSPEC void mpz_fac_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_fdiv_q __gmpz_fdiv_q __GMP_DECLSPEC void mpz_fdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp __GMP_DECLSPEC void mpz_fdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_q_ui __gmpz_fdiv_q_ui __GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_qr __gmpz_fdiv_qr __GMP_DECLSPEC void mpz_fdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui __GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_r __gmpz_fdiv_r __GMP_DECLSPEC void mpz_fdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp __GMP_DECLSPEC void mpz_fdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_r_ui __gmpz_fdiv_r_ui __GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_fdiv_ui __gmpz_fdiv_ui __GMP_DECLSPEC unsigned long int mpz_fdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_fib_ui __gmpz_fib_ui __GMP_DECLSPEC void mpz_fib_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_fib2_ui __gmpz_fib2_ui __GMP_DECLSPEC void mpz_fib2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int)); #define mpz_fits_sint_p __gmpz_fits_sint_p __GMP_DECLSPEC int mpz_fits_sint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_fits_slong_p __gmpz_fits_slong_p __GMP_DECLSPEC int mpz_fits_slong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_fits_sshort_p __gmpz_fits_sshort_p __GMP_DECLSPEC int mpz_fits_sshort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_fits_uint_p __gmpz_fits_uint_p #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_fits_uint_p __GMP_DECLSPEC int mpz_fits_uint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_fits_ulong_p __gmpz_fits_ulong_p #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_fits_ulong_p __GMP_DECLSPEC int mpz_fits_ulong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_fits_ushort_p __gmpz_fits_ushort_p #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_fits_ushort_p __GMP_DECLSPEC int mpz_fits_ushort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_gcd __gmpz_gcd __GMP_DECLSPEC void mpz_gcd __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_gcd_ui __gmpz_gcd_ui __GMP_DECLSPEC unsigned long int mpz_gcd_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_gcdext __gmpz_gcdext __GMP_DECLSPEC void mpz_gcdext __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_get_d __gmpz_get_d __GMP_DECLSPEC double mpz_get_d __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_get_d_2exp __gmpz_get_d_2exp __GMP_DECLSPEC double mpz_get_d_2exp __GMP_PROTO ((signed long int *, mpz_srcptr)); #define mpz_get_si __gmpz_get_si __GMP_DECLSPEC /* signed */ long int mpz_get_si __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_get_str __gmpz_get_str __GMP_DECLSPEC char *mpz_get_str __GMP_PROTO ((char *, int, mpz_srcptr)); #define mpz_get_ui __gmpz_get_ui #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_get_ui __GMP_DECLSPEC unsigned long int mpz_get_ui __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_getlimbn __gmpz_getlimbn #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_getlimbn __GMP_DECLSPEC mp_limb_t mpz_getlimbn __GMP_PROTO ((mpz_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_hamdist __gmpz_hamdist __GMP_DECLSPEC unsigned long int mpz_hamdist __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_import __gmpz_import __GMP_DECLSPEC void mpz_import __GMP_PROTO ((mpz_ptr, size_t, int, size_t, int, size_t, const void *)); #define mpz_init __gmpz_init __GMP_DECLSPEC void mpz_init __GMP_PROTO ((mpz_ptr)); #define mpz_init2 __gmpz_init2 __GMP_DECLSPEC void mpz_init2 __GMP_PROTO ((mpz_ptr, unsigned long)); #define mpz_init_set __gmpz_init_set __GMP_DECLSPEC void mpz_init_set __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_init_set_d __gmpz_init_set_d __GMP_DECLSPEC void mpz_init_set_d __GMP_PROTO ((mpz_ptr, double)); #define mpz_init_set_si __gmpz_init_set_si __GMP_DECLSPEC void mpz_init_set_si __GMP_PROTO ((mpz_ptr, signed long int)); #define mpz_init_set_str __gmpz_init_set_str __GMP_DECLSPEC int mpz_init_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int)); #define mpz_init_set_ui __gmpz_init_set_ui __GMP_DECLSPEC void mpz_init_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_inp_raw __gmpz_inp_raw #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpz_inp_raw __GMP_PROTO ((mpz_ptr, FILE *)); #endif #define mpz_inp_str __gmpz_inp_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpz_inp_str __GMP_PROTO ((mpz_ptr, FILE *, int)); #endif #define mpz_invert __gmpz_invert __GMP_DECLSPEC int mpz_invert __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_ior __gmpz_ior __GMP_DECLSPEC void mpz_ior __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_jacobi __gmpz_jacobi __GMP_DECLSPEC int mpz_jacobi __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_kronecker mpz_jacobi /* alias */ #define mpz_kronecker_si __gmpz_kronecker_si __GMP_DECLSPEC int mpz_kronecker_si __GMP_PROTO ((mpz_srcptr, long)) __GMP_ATTRIBUTE_PURE; #define mpz_kronecker_ui __gmpz_kronecker_ui __GMP_DECLSPEC int mpz_kronecker_ui __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE; #define mpz_si_kronecker __gmpz_si_kronecker __GMP_DECLSPEC int mpz_si_kronecker __GMP_PROTO ((long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_ui_kronecker __gmpz_ui_kronecker __GMP_DECLSPEC int mpz_ui_kronecker __GMP_PROTO ((unsigned long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_lcm __gmpz_lcm __GMP_DECLSPEC void mpz_lcm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_lcm_ui __gmpz_lcm_ui __GMP_DECLSPEC void mpz_lcm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); #define mpz_legendre mpz_jacobi /* alias */ #define mpz_lucnum_ui __gmpz_lucnum_ui __GMP_DECLSPEC void mpz_lucnum_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_lucnum2_ui __gmpz_lucnum2_ui __GMP_DECLSPEC void mpz_lucnum2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int)); #define mpz_millerrabin __gmpz_millerrabin __GMP_DECLSPEC int mpz_millerrabin __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; #define mpz_mod __gmpz_mod __GMP_DECLSPEC void mpz_mod __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_mul __gmpz_mul __GMP_DECLSPEC void mpz_mul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_mul_2exp __gmpz_mul_2exp __GMP_DECLSPEC void mpz_mul_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_mul_si __gmpz_mul_si __GMP_DECLSPEC void mpz_mul_si __GMP_PROTO ((mpz_ptr, mpz_srcptr, long int)); #define mpz_mul_ui __gmpz_mul_ui __GMP_DECLSPEC void mpz_mul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_neg __gmpz_neg #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_neg __GMP_DECLSPEC void mpz_neg __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #endif #define mpz_nextprime __gmpz_nextprime __GMP_DECLSPEC void mpz_nextprime __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_out_raw __gmpz_out_raw #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpz_out_raw __GMP_PROTO ((FILE *, mpz_srcptr)); #endif #define mpz_out_str __gmpz_out_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpz_out_str __GMP_PROTO ((FILE *, int, mpz_srcptr)); #endif #define mpz_perfect_power_p __gmpz_perfect_power_p __GMP_DECLSPEC int mpz_perfect_power_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpz_perfect_square_p __gmpz_perfect_square_p #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_perfect_square_p __GMP_DECLSPEC int mpz_perfect_square_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; #endif #define mpz_popcount __gmpz_popcount #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_popcount __GMP_DECLSPEC unsigned long int mpz_popcount __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_pow_ui __gmpz_pow_ui __GMP_DECLSPEC void mpz_pow_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_powm __gmpz_powm __GMP_DECLSPEC void mpz_powm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr)); #define mpz_powm_ui __gmpz_powm_ui __GMP_DECLSPEC void mpz_powm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr)); #define mpz_probab_prime_p __gmpz_probab_prime_p __GMP_DECLSPEC int mpz_probab_prime_p __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; #define mpz_random __gmpz_random __GMP_DECLSPEC void mpz_random __GMP_PROTO ((mpz_ptr, mp_size_t)); #define mpz_random2 __gmpz_random2 __GMP_DECLSPEC void mpz_random2 __GMP_PROTO ((mpz_ptr, mp_size_t)); #define mpz_realloc2 __gmpz_realloc2 __GMP_DECLSPEC void mpz_realloc2 __GMP_PROTO ((mpz_ptr, unsigned long)); #define mpz_remove __gmpz_remove __GMP_DECLSPEC unsigned long int mpz_remove __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_root __gmpz_root __GMP_DECLSPEC int mpz_root __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_rrandomb __gmpz_rrandomb __GMP_DECLSPEC void mpz_rrandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, unsigned long int)); #define mpz_scan0 __gmpz_scan0 __GMP_DECLSPEC unsigned long int mpz_scan0 __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_scan1 __gmpz_scan1 __GMP_DECLSPEC unsigned long int mpz_scan1 __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_set __gmpz_set __GMP_DECLSPEC void mpz_set __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_set_d __gmpz_set_d __GMP_DECLSPEC void mpz_set_d __GMP_PROTO ((mpz_ptr, double)); #define mpz_set_f __gmpz_set_f __GMP_DECLSPEC void mpz_set_f __GMP_PROTO ((mpz_ptr, mpf_srcptr)); #define mpz_set_q __gmpz_set_q #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_set_q __GMP_DECLSPEC void mpz_set_q __GMP_PROTO ((mpz_ptr, mpq_srcptr)); #endif #define mpz_set_si __gmpz_set_si __GMP_DECLSPEC void mpz_set_si __GMP_PROTO ((mpz_ptr, signed long int)); #define mpz_set_str __gmpz_set_str __GMP_DECLSPEC int mpz_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int)); #define mpz_set_ui __gmpz_set_ui __GMP_DECLSPEC void mpz_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_setbit __gmpz_setbit __GMP_DECLSPEC void mpz_setbit __GMP_PROTO ((mpz_ptr, unsigned long int)); #define mpz_size __gmpz_size #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpz_size __GMP_DECLSPEC size_t mpz_size __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpz_sizeinbase __gmpz_sizeinbase __GMP_DECLSPEC size_t mpz_sizeinbase __GMP_PROTO ((mpz_srcptr, int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_sqrt __gmpz_sqrt __GMP_DECLSPEC void mpz_sqrt __GMP_PROTO ((mpz_ptr, mpz_srcptr)); #define mpz_sqrtrem __gmpz_sqrtrem __GMP_DECLSPEC void mpz_sqrtrem __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr)); #define mpz_sub __gmpz_sub __GMP_DECLSPEC void mpz_sub __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_sub_ui __gmpz_sub_ui __GMP_DECLSPEC void mpz_sub_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_ui_sub __gmpz_ui_sub __GMP_DECLSPEC void mpz_ui_sub __GMP_PROTO ((mpz_ptr, unsigned long int, mpz_srcptr)); #define mpz_submul __gmpz_submul __GMP_DECLSPEC void mpz_submul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_submul_ui __gmpz_submul_ui __GMP_DECLSPEC void mpz_submul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_swap __gmpz_swap __GMP_DECLSPEC void mpz_swap __GMP_PROTO ((mpz_ptr, mpz_ptr)) __GMP_NOTHROW; #define mpz_tdiv_ui __gmpz_tdiv_ui __GMP_DECLSPEC unsigned long int mpz_tdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpz_tdiv_q __gmpz_tdiv_q __GMP_DECLSPEC void mpz_tdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp __GMP_DECLSPEC void mpz_tdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tdiv_q_ui __gmpz_tdiv_q_ui __GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tdiv_qr __gmpz_tdiv_qr __GMP_DECLSPEC void mpz_tdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui __GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tdiv_r __gmpz_tdiv_r __GMP_DECLSPEC void mpz_tdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); #define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp __GMP_DECLSPEC void mpz_tdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tdiv_r_ui __gmpz_tdiv_r_ui __GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); #define mpz_tstbit __gmpz_tstbit __GMP_DECLSPEC int mpz_tstbit __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpz_ui_pow_ui __gmpz_ui_pow_ui __GMP_DECLSPEC void mpz_ui_pow_ui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int)); #define mpz_urandomb __gmpz_urandomb __GMP_DECLSPEC void mpz_urandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, unsigned long int)); #define mpz_urandomm __gmpz_urandomm __GMP_DECLSPEC void mpz_urandomm __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mpz_srcptr)); #define mpz_xor __gmpz_xor #define mpz_eor __gmpz_xor __GMP_DECLSPEC void mpz_xor __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); /**************** Rational (i.e. Q) routines. ****************/ #define mpq_abs __gmpq_abs #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpq_abs __GMP_DECLSPEC void mpq_abs __GMP_PROTO ((mpq_ptr, mpq_srcptr)); #endif #define mpq_add __gmpq_add __GMP_DECLSPEC void mpq_add __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); #define mpq_canonicalize __gmpq_canonicalize __GMP_DECLSPEC void mpq_canonicalize __GMP_PROTO ((mpq_ptr)); #define mpq_clear __gmpq_clear __GMP_DECLSPEC void mpq_clear __GMP_PROTO ((mpq_ptr)); #define mpq_cmp __gmpq_cmp __GMP_DECLSPEC int mpq_cmp __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_ATTRIBUTE_PURE; #define _mpq_cmp_si __gmpq_cmp_si __GMP_DECLSPEC int _mpq_cmp_si __GMP_PROTO ((mpq_srcptr, long, unsigned long)) __GMP_ATTRIBUTE_PURE; #define _mpq_cmp_ui __gmpq_cmp_ui __GMP_DECLSPEC int _mpq_cmp_ui __GMP_PROTO ((mpq_srcptr, unsigned long int, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpq_div __gmpq_div __GMP_DECLSPEC void mpq_div __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); #define mpq_div_2exp __gmpq_div_2exp __GMP_DECLSPEC void mpq_div_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, unsigned long)); #define mpq_equal __gmpq_equal __GMP_DECLSPEC int mpq_equal __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpq_get_num __gmpq_get_num __GMP_DECLSPEC void mpq_get_num __GMP_PROTO ((mpz_ptr, mpq_srcptr)); #define mpq_get_den __gmpq_get_den __GMP_DECLSPEC void mpq_get_den __GMP_PROTO ((mpz_ptr, mpq_srcptr)); #define mpq_get_d __gmpq_get_d __GMP_DECLSPEC double mpq_get_d __GMP_PROTO ((mpq_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpq_get_str __gmpq_get_str __GMP_DECLSPEC char *mpq_get_str __GMP_PROTO ((char *, int, mpq_srcptr)); #define mpq_init __gmpq_init __GMP_DECLSPEC void mpq_init __GMP_PROTO ((mpq_ptr)); #define mpq_inp_str __gmpq_inp_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpq_inp_str __GMP_PROTO ((mpq_ptr, FILE *, int)); #endif #define mpq_inv __gmpq_inv __GMP_DECLSPEC void mpq_inv __GMP_PROTO ((mpq_ptr, mpq_srcptr)); #define mpq_mul __gmpq_mul __GMP_DECLSPEC void mpq_mul __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); #define mpq_mul_2exp __gmpq_mul_2exp __GMP_DECLSPEC void mpq_mul_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, unsigned long)); #define mpq_neg __gmpq_neg #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpq_neg __GMP_DECLSPEC void mpq_neg __GMP_PROTO ((mpq_ptr, mpq_srcptr)); #endif #define mpq_out_str __gmpq_out_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpq_out_str __GMP_PROTO ((FILE *, int, mpq_srcptr)); #endif #define mpq_set __gmpq_set __GMP_DECLSPEC void mpq_set __GMP_PROTO ((mpq_ptr, mpq_srcptr)); #define mpq_set_d __gmpq_set_d __GMP_DECLSPEC void mpq_set_d __GMP_PROTO ((mpq_ptr, double)); #define mpq_set_den __gmpq_set_den __GMP_DECLSPEC void mpq_set_den __GMP_PROTO ((mpq_ptr, mpz_srcptr)); #define mpq_set_f __gmpq_set_f __GMP_DECLSPEC void mpq_set_f __GMP_PROTO ((mpq_ptr, mpf_srcptr)); #define mpq_set_num __gmpq_set_num __GMP_DECLSPEC void mpq_set_num __GMP_PROTO ((mpq_ptr, mpz_srcptr)); #define mpq_set_si __gmpq_set_si __GMP_DECLSPEC void mpq_set_si __GMP_PROTO ((mpq_ptr, signed long int, unsigned long int)); #define mpq_set_str __gmpq_set_str __GMP_DECLSPEC int mpq_set_str __GMP_PROTO ((mpq_ptr, const char *, int)); #define mpq_set_ui __gmpq_set_ui __GMP_DECLSPEC void mpq_set_ui __GMP_PROTO ((mpq_ptr, unsigned long int, unsigned long int)); #define mpq_set_z __gmpq_set_z __GMP_DECLSPEC void mpq_set_z __GMP_PROTO ((mpq_ptr, mpz_srcptr)); #define mpq_sub __gmpq_sub __GMP_DECLSPEC void mpq_sub __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); #define mpq_swap __gmpq_swap __GMP_DECLSPEC void mpq_swap __GMP_PROTO ((mpq_ptr, mpq_ptr)) __GMP_NOTHROW; /**************** Float (i.e. F) routines. ****************/ #define mpf_abs __gmpf_abs __GMP_DECLSPEC void mpf_abs __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_add __gmpf_add __GMP_DECLSPEC void mpf_add __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_add_ui __gmpf_add_ui __GMP_DECLSPEC void mpf_add_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_ceil __gmpf_ceil __GMP_DECLSPEC void mpf_ceil __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_clear __gmpf_clear __GMP_DECLSPEC void mpf_clear __GMP_PROTO ((mpf_ptr)); #define mpf_cmp __gmpf_cmp __GMP_DECLSPEC int mpf_cmp __GMP_PROTO ((mpf_srcptr, mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_cmp_d __gmpf_cmp_d __GMP_DECLSPEC int mpf_cmp_d __GMP_PROTO ((mpf_srcptr, double)) __GMP_ATTRIBUTE_PURE; #define mpf_cmp_si __gmpf_cmp_si __GMP_DECLSPEC int mpf_cmp_si __GMP_PROTO ((mpf_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_cmp_ui __gmpf_cmp_ui __GMP_DECLSPEC int mpf_cmp_ui __GMP_PROTO ((mpf_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_div __gmpf_div __GMP_DECLSPEC void mpf_div __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_div_2exp __gmpf_div_2exp __GMP_DECLSPEC void mpf_div_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_div_ui __gmpf_div_ui __GMP_DECLSPEC void mpf_div_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_dump __gmpf_dump __GMP_DECLSPEC void mpf_dump __GMP_PROTO ((mpf_srcptr)); #define mpf_eq __gmpf_eq __GMP_DECLSPEC int mpf_eq __GMP_PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpf_fits_sint_p __gmpf_fits_sint_p __GMP_DECLSPEC int mpf_fits_sint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_fits_slong_p __gmpf_fits_slong_p __GMP_DECLSPEC int mpf_fits_slong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_fits_sshort_p __gmpf_fits_sshort_p __GMP_DECLSPEC int mpf_fits_sshort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_fits_uint_p __gmpf_fits_uint_p __GMP_DECLSPEC int mpf_fits_uint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_fits_ulong_p __gmpf_fits_ulong_p __GMP_DECLSPEC int mpf_fits_ulong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_fits_ushort_p __gmpf_fits_ushort_p __GMP_DECLSPEC int mpf_fits_ushort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_floor __gmpf_floor __GMP_DECLSPEC void mpf_floor __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_get_d __gmpf_get_d __GMP_DECLSPEC double mpf_get_d __GMP_PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; #define mpf_get_d_2exp __gmpf_get_d_2exp __GMP_DECLSPEC double mpf_get_d_2exp __GMP_PROTO ((signed long int *, mpf_srcptr)); #define mpf_get_default_prec __gmpf_get_default_prec __GMP_DECLSPEC unsigned long int mpf_get_default_prec __GMP_PROTO ((void)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_get_prec __gmpf_get_prec __GMP_DECLSPEC unsigned long int mpf_get_prec __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_get_si __gmpf_get_si __GMP_DECLSPEC long mpf_get_si __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_get_str __gmpf_get_str __GMP_DECLSPEC char *mpf_get_str __GMP_PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr)); #define mpf_get_ui __gmpf_get_ui __GMP_DECLSPEC unsigned long mpf_get_ui __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_init __gmpf_init __GMP_DECLSPEC void mpf_init __GMP_PROTO ((mpf_ptr)); #define mpf_init2 __gmpf_init2 __GMP_DECLSPEC void mpf_init2 __GMP_PROTO ((mpf_ptr, unsigned long int)); #define mpf_init_set __gmpf_init_set __GMP_DECLSPEC void mpf_init_set __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_init_set_d __gmpf_init_set_d __GMP_DECLSPEC void mpf_init_set_d __GMP_PROTO ((mpf_ptr, double)); #define mpf_init_set_si __gmpf_init_set_si __GMP_DECLSPEC void mpf_init_set_si __GMP_PROTO ((mpf_ptr, signed long int)); #define mpf_init_set_str __gmpf_init_set_str __GMP_DECLSPEC int mpf_init_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int)); #define mpf_init_set_ui __gmpf_init_set_ui __GMP_DECLSPEC void mpf_init_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int)); #define mpf_inp_str __gmpf_inp_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpf_inp_str __GMP_PROTO ((mpf_ptr, FILE *, int)); #endif #define mpf_integer_p __gmpf_integer_p __GMP_DECLSPEC int mpf_integer_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_mul __gmpf_mul __GMP_DECLSPEC void mpf_mul __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_mul_2exp __gmpf_mul_2exp __GMP_DECLSPEC void mpf_mul_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_mul_ui __gmpf_mul_ui __GMP_DECLSPEC void mpf_mul_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_neg __gmpf_neg __GMP_DECLSPEC void mpf_neg __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_out_str __gmpf_out_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpf_out_str __GMP_PROTO ((FILE *, int, size_t, mpf_srcptr)); #endif #define mpf_pow_ui __gmpf_pow_ui __GMP_DECLSPEC void mpf_pow_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_random2 __gmpf_random2 __GMP_DECLSPEC void mpf_random2 __GMP_PROTO ((mpf_ptr, mp_size_t, mp_exp_t)); #define mpf_reldiff __gmpf_reldiff __GMP_DECLSPEC void mpf_reldiff __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_set __gmpf_set __GMP_DECLSPEC void mpf_set __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_set_d __gmpf_set_d __GMP_DECLSPEC void mpf_set_d __GMP_PROTO ((mpf_ptr, double)); #define mpf_set_default_prec __gmpf_set_default_prec __GMP_DECLSPEC void mpf_set_default_prec __GMP_PROTO ((unsigned long int)) __GMP_NOTHROW; #define mpf_set_prec __gmpf_set_prec __GMP_DECLSPEC void mpf_set_prec __GMP_PROTO ((mpf_ptr, unsigned long int)); #define mpf_set_prec_raw __gmpf_set_prec_raw __GMP_DECLSPEC void mpf_set_prec_raw __GMP_PROTO ((mpf_ptr, unsigned long int)) __GMP_NOTHROW; #define mpf_set_q __gmpf_set_q __GMP_DECLSPEC void mpf_set_q __GMP_PROTO ((mpf_ptr, mpq_srcptr)); #define mpf_set_si __gmpf_set_si __GMP_DECLSPEC void mpf_set_si __GMP_PROTO ((mpf_ptr, signed long int)); #define mpf_set_str __gmpf_set_str __GMP_DECLSPEC int mpf_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int)); #define mpf_set_ui __gmpf_set_ui __GMP_DECLSPEC void mpf_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int)); #define mpf_set_z __gmpf_set_z __GMP_DECLSPEC void mpf_set_z __GMP_PROTO ((mpf_ptr, mpz_srcptr)); #define mpf_size __gmpf_size __GMP_DECLSPEC size_t mpf_size __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpf_sqrt __gmpf_sqrt __GMP_DECLSPEC void mpf_sqrt __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_sqrt_ui __gmpf_sqrt_ui __GMP_DECLSPEC void mpf_sqrt_ui __GMP_PROTO ((mpf_ptr, unsigned long int)); #define mpf_sub __gmpf_sub __GMP_DECLSPEC void mpf_sub __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); #define mpf_sub_ui __gmpf_sub_ui __GMP_DECLSPEC void mpf_sub_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); #define mpf_swap __gmpf_swap __GMP_DECLSPEC void mpf_swap __GMP_PROTO ((mpf_ptr, mpf_ptr)) __GMP_NOTHROW; #define mpf_trunc __gmpf_trunc __GMP_DECLSPEC void mpf_trunc __GMP_PROTO ((mpf_ptr, mpf_srcptr)); #define mpf_ui_div __gmpf_ui_div __GMP_DECLSPEC void mpf_ui_div __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr)); #define mpf_ui_sub __gmpf_ui_sub __GMP_DECLSPEC void mpf_ui_sub __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr)); #define mpf_urandomb __gmpf_urandomb __GMP_DECLSPEC void mpf_urandomb __GMP_PROTO ((mpf_t, gmp_randstate_t, unsigned long int)); /************ Low level positive-integer (i.e. N) routines. ************/ /* This is ugly, but we need to make user calls reach the prefixed function. */ #define mpn_add __MPN(add) #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpn_add __GMP_DECLSPEC mp_limb_t mpn_add __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); #endif #define mpn_add_1 __MPN(add_1) #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpn_add_1 __GMP_DECLSPEC mp_limb_t mpn_add_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW; #endif #define mpn_add_n __MPN(add_n) __GMP_DECLSPEC mp_limb_t mpn_add_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #define mpn_addmul_1 __MPN(addmul_1) __GMP_DECLSPEC mp_limb_t mpn_addmul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_bdivmod __MPN(bdivmod) __GMP_DECLSPEC mp_limb_t mpn_bdivmod __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, unsigned long int)); #define mpn_cmp __MPN(cmp) #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpn_cmp __GMP_DECLSPEC int mpn_cmp __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #endif #define mpn_divexact_by3(dst,src,size) \ mpn_divexact_by3c (dst, src, size, (mp_limb_t) 0) #define mpn_divexact_by3c __MPN(divexact_by3c) __GMP_DECLSPEC mp_limb_t mpn_divexact_by3c __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_divmod_1(qp,np,nsize,dlimb) \ mpn_divrem_1 (qp, (mp_size_t) 0, np, nsize, dlimb) #define mpn_divrem __MPN(divrem) __GMP_DECLSPEC mp_limb_t mpn_divrem __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t)); #define mpn_divrem_1 __MPN(divrem_1) __GMP_DECLSPEC mp_limb_t mpn_divrem_1 __GMP_PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_divrem_2 __MPN(divrem_2) __GMP_DECLSPEC mp_limb_t mpn_divrem_2 __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr)); #define mpn_gcd __MPN(gcd) __GMP_DECLSPEC mp_size_t mpn_gcd __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); #define mpn_gcd_1 __MPN(gcd_1) __GMP_DECLSPEC mp_limb_t mpn_gcd_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; #define mpn_gcdext __MPN(gcdext) __GMP_DECLSPEC mp_size_t mpn_gcdext __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); #define mpn_get_str __MPN(get_str) __GMP_DECLSPEC size_t mpn_get_str __GMP_PROTO ((unsigned char *, int, mp_ptr, mp_size_t)); #define mpn_hamdist __MPN(hamdist) __GMP_DECLSPEC unsigned long int mpn_hamdist __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpn_lshift __MPN(lshift) __GMP_DECLSPEC mp_limb_t mpn_lshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); #define mpn_mod_1 __MPN(mod_1) __GMP_DECLSPEC mp_limb_t mpn_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; #define mpn_mul __MPN(mul) __GMP_DECLSPEC mp_limb_t mpn_mul __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); #define mpn_mul_1 __MPN(mul_1) __GMP_DECLSPEC mp_limb_t mpn_mul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_mul_n __MPN(mul_n) __GMP_DECLSPEC void mpn_mul_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #define mpn_perfect_square_p __MPN(perfect_square_p) __GMP_DECLSPEC int mpn_perfect_square_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE; #define mpn_popcount __MPN(popcount) __GMP_DECLSPEC unsigned long int mpn_popcount __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; #define mpn_pow_1 __MPN(pow_1) __GMP_DECLSPEC mp_size_t mpn_pow_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr)); /* undocumented now, but retained here for upward compatibility */ #define mpn_preinv_mod_1 __MPN(preinv_mod_1) __GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; #define mpn_random __MPN(random) __GMP_DECLSPEC void mpn_random __GMP_PROTO ((mp_ptr, mp_size_t)); #define mpn_random2 __MPN(random2) __GMP_DECLSPEC void mpn_random2 __GMP_PROTO ((mp_ptr, mp_size_t)); #define mpn_rshift __MPN(rshift) __GMP_DECLSPEC mp_limb_t mpn_rshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); #define mpn_scan0 __MPN(scan0) __GMP_DECLSPEC unsigned long int mpn_scan0 __GMP_PROTO ((mp_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpn_scan1 __MPN(scan1) __GMP_DECLSPEC unsigned long int mpn_scan1 __GMP_PROTO ((mp_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; #define mpn_set_str __MPN(set_str) __GMP_DECLSPEC mp_size_t mpn_set_str __GMP_PROTO ((mp_ptr, __gmp_const unsigned char *, size_t, int)); #define mpn_sqrtrem __MPN(sqrtrem) __GMP_DECLSPEC mp_size_t mpn_sqrtrem __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t)); #define mpn_sub __MPN(sub) #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpn_sub __GMP_DECLSPEC mp_limb_t mpn_sub __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); #endif #define mpn_sub_1 __MPN(sub_1) #if __GMP_INLINE_PROTOTYPES || __GMP_FORCE_mpn_sub_1 __GMP_DECLSPEC mp_limb_t mpn_sub_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW; #endif #define mpn_sub_n __MPN(sub_n) __GMP_DECLSPEC mp_limb_t mpn_sub_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); #define mpn_submul_1 __MPN(submul_1) __GMP_DECLSPEC mp_limb_t mpn_submul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); #define mpn_tdiv_qr __MPN(tdiv_qr) __GMP_DECLSPEC void mpn_tdiv_qr __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); /**************** mpz inlines ****************/ /* The following are provided as inlines where possible, but always exist as library functions too, for binary compatibility. Within gmp itself this inlining generally isn't relied on, since it doesn't get done for all compilers, whereas if something is worth inlining then it's worth arranging always. There are two styles of inlining here. When the same bit of code is wanted for the inline as for the library version, then __GMP_FORCE_foo arranges for that code to be emitted and the __GMP_EXTERN_INLINE directive suppressed, eg. mpz_fits_uint_p. When a different bit of code is wanted for the inline than for the library version, then __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */ #if defined (__GMP_EXTERN_INLINE) && ! __GMP_FORCE_mpz_abs __GMP_EXTERN_INLINE void mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) { if (__gmp_w != __gmp_u) mpz_set (__gmp_w, __gmp_u); __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size); } #endif #if GMP_NAIL_BITS == 0 #define __GMPZ_FITS_UTYPE_P(z,maxval) \ mp_size_t __gmp_n = z->_mp_size; \ mp_ptr __gmp_p = z->_mp_d; \ return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)); #else #define __GMPZ_FITS_UTYPE_P(z,maxval) \ mp_size_t __gmp_n = z->_mp_size; \ mp_ptr __gmp_p = z->_mp_d; \ return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval) \ || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS))); #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_fits_uint_p #if ! __GMP_FORCE_mpz_fits_uint_p __GMP_EXTERN_INLINE #endif int mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW { __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_UINT_MAX); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_fits_ulong_p #if ! __GMP_FORCE_mpz_fits_ulong_p __GMP_EXTERN_INLINE #endif int mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW { __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_ULONG_MAX); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_fits_ushort_p #if ! __GMP_FORCE_mpz_fits_ushort_p __GMP_EXTERN_INLINE #endif int mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW { __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_USHRT_MAX); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_get_ui #if ! __GMP_FORCE_mpz_get_ui __GMP_EXTERN_INLINE #endif unsigned long mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW { mp_ptr __gmp_p = __gmp_z->_mp_d; mp_size_t __gmp_n = __gmp_z->_mp_size; mp_limb_t __gmp_l = __gmp_p[0]; if (__GMP_ULONG_MAX <= GMP_NUMB_MASK) return __gmp_l & (-(mp_limb_t) (__gmp_n != 0)); #if GMP_NAIL_BITS != 0 /* redundant #if, shuts up compiler warnings */ else /* happens for nails, but not if LONG_LONG_LIMB */ { /* assume two limbs are enough to fill an ulong */ __gmp_n = __GMP_ABS (__gmp_n); if (__gmp_n <= 1) return __gmp_l & (-(mp_limb_t) (__gmp_n != 0)); else return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS); } #endif } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_getlimbn #if ! __GMP_FORCE_mpz_getlimbn __GMP_EXTERN_INLINE #endif mp_limb_t mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW { if (__GMP_ABS (__gmp_z->_mp_size) <= __gmp_n || __gmp_n < 0) return 0; else return __gmp_z->_mp_d[__gmp_n]; } #endif #if defined (__GMP_EXTERN_INLINE) && ! __GMP_FORCE_mpz_neg __GMP_EXTERN_INLINE void mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) { if (__gmp_w != __gmp_u) mpz_set (__gmp_w, __gmp_u); __gmp_w->_mp_size = - __gmp_w->_mp_size; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_perfect_square_p #if ! __GMP_FORCE_mpz_perfect_square_p __GMP_EXTERN_INLINE #endif int mpz_perfect_square_p (mpz_srcptr __gmp_a) { mp_size_t __gmp_asize = __gmp_a->_mp_size; if (__gmp_asize <= 0) return (__gmp_asize == 0); /* zero is a square, negatives are not */ else return mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_popcount #if ! __GMP_FORCE_mpz_popcount __GMP_EXTERN_INLINE #endif unsigned long mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW { mp_size_t __gmp_usize = __gmp_u->_mp_size; if (__gmp_usize <= 0) return (__gmp_usize < 0 ? __GMP_ULONG_MAX : 0); else return mpn_popcount (__gmp_u->_mp_d, __gmp_usize); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_set_q #if ! __GMP_FORCE_mpz_set_q __GMP_EXTERN_INLINE #endif void mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u) { mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u)); } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpz_size #if ! __GMP_FORCE_mpz_size __GMP_EXTERN_INLINE #endif size_t mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW { return __GMP_ABS (__gmp_z->_mp_size); } #endif /**************** mpq inlines ****************/ #if defined (__GMP_EXTERN_INLINE) && ! __GMP_FORCE_mpq_abs __GMP_EXTERN_INLINE void mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) { if (__gmp_w != __gmp_u) mpq_set (__gmp_w, __gmp_u); __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size); } #endif #if defined (__GMP_EXTERN_INLINE) && ! __GMP_FORCE_mpq_neg __GMP_EXTERN_INLINE void mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) { if (__gmp_w != __gmp_u) mpq_set (__gmp_w, __gmp_u); __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; } #endif /**************** mpn inlines ****************/ /* The comments with __GMPN_ADD_1 below apply here too. The test for FUNCTION returning 0 should predict well. If it's assumed {yp,ysize} will usually have a random number of bits then the high limb won't be full and a carry out will occur a good deal less than 50% of the time. ysize==0 isn't a documented feature, but is used internally in a few places. Producing cout last stops it using up a register during the main part of the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))" doesn't seem able to move the true and false legs of the conditional up to the two places cout is generated. */ #define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \ do { \ mp_size_t __gmp_i; \ mp_limb_t __gmp_x; \ \ /* ASSERT ((ysize) >= 0); */ \ /* ASSERT ((xsize) >= (ysize)); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \ \ __gmp_i = (ysize); \ if (__gmp_i != 0) \ { \ if (FUNCTION (wp, xp, yp, __gmp_i)) \ { \ do \ { \ if (__gmp_i >= (xsize)) \ { \ (cout) = 1; \ goto __gmp_done; \ } \ __gmp_x = (xp)[__gmp_i]; \ } \ while (TEST); \ } \ } \ if ((wp) != (xp)) \ __GMPN_COPY_REST (wp, xp, xsize, __gmp_i); \ (cout) = 0; \ __gmp_done: \ ; \ } while (0) #define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \ __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \ (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0)) #define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \ __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \ (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0)) /* The use of __gmp_i indexing is designed to ensure a compile time src==dst remains nice and clear to the compiler, so that __GMPN_COPY_REST can disappear, and the load/add/store gets a chance to become a read-modify-write on CISC CPUs. Alternatives: Using a pair of pointers instead of indexing would be possible, but gcc isn't able to recognise compile-time src==dst in that case, even when the pointers are incremented more or less together. Other compilers would very likely have similar difficulty. gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or similar to detect a compile-time src==dst. This works nicely on gcc 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems to be always false, for a pointer p. But the current code form seems good enough for src==dst anyway. gcc on x86 as usual doesn't give particularly good flags handling for the carry/borrow detection. It's tempting to want some multi instruction asm blocks to help it, and this was tried, but in truth there's only a few instructions to save and any gain is all too easily lost by register juggling setting up for the asm. */ #if GMP_NAIL_BITS == 0 #define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ do { \ mp_size_t __gmp_i; \ mp_limb_t __gmp_x, __gmp_r; \ \ /* ASSERT ((n) >= 1); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ \ __gmp_x = (src)[0]; \ __gmp_r = __gmp_x OP (v); \ (dst)[0] = __gmp_r; \ if (CB (__gmp_r, __gmp_x, (v))) \ { \ (cout) = 1; \ for (__gmp_i = 1; __gmp_i < (n);) \ { \ __gmp_x = (src)[__gmp_i]; \ __gmp_r = __gmp_x OP 1; \ (dst)[__gmp_i] = __gmp_r; \ ++__gmp_i; \ if (!CB (__gmp_r, __gmp_x, 1)) \ { \ if ((src) != (dst)) \ __GMPN_COPY_REST (dst, src, n, __gmp_i); \ (cout) = 0; \ break; \ } \ } \ } \ else \ { \ if ((src) != (dst)) \ __GMPN_COPY_REST (dst, src, n, 1); \ (cout) = 0; \ } \ } while (0) #endif #if GMP_NAIL_BITS >= 1 #define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ do { \ mp_size_t __gmp_i; \ mp_limb_t __gmp_x, __gmp_r; \ \ /* ASSERT ((n) >= 1); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ \ __gmp_x = (src)[0]; \ __gmp_r = __gmp_x OP (v); \ (dst)[0] = __gmp_r & GMP_NUMB_MASK; \ if (__gmp_r >> GMP_NUMB_BITS != 0) \ { \ (cout) = 1; \ for (__gmp_i = 1; __gmp_i < (n);) \ { \ __gmp_x = (src)[__gmp_i]; \ __gmp_r = __gmp_x OP 1; \ (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK; \ ++__gmp_i; \ if (__gmp_r >> GMP_NUMB_BITS == 0) \ { \ if ((src) != (dst)) \ __GMPN_COPY_REST (dst, src, n, __gmp_i); \ (cout) = 0; \ break; \ } \ } \ } \ else \ { \ if ((src) != (dst)) \ __GMPN_COPY_REST (dst, src, n, 1); \ (cout) = 0; \ } \ } while (0) #endif #define __GMPN_ADDCB(r,x,y) ((r) < (y)) #define __GMPN_SUBCB(r,x,y) ((x) < (y)) #define __GMPN_ADD_1(cout, dst, src, n, v) \ __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB) #define __GMPN_SUB_1(cout, dst, src, n, v) \ __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB) /* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or negative. size==0 is allowed. On random data usually only one limb will need to be examined to get a result, so it's worth having it inline. */ #define __GMPN_CMP(result, xp, yp, size) \ do { \ mp_size_t __gmp_i; \ mp_limb_t __gmp_x, __gmp_y; \ \ /* ASSERT ((size) >= 0); */ \ \ (result) = 0; \ __gmp_i = (size); \ while (--__gmp_i >= 0) \ { \ __gmp_x = (xp)[__gmp_i]; \ __gmp_y = (yp)[__gmp_i]; \ if (__gmp_x != __gmp_y) \ { \ /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */ \ (result) = (__gmp_x > __gmp_y ? 1 : -1); \ break; \ } \ } \ } while (0) /* For power and powerpc we want an inline ldu/stu/bdnz loop for copying. On ppc630 for instance this is optimal since it can sustain only 1 store per cycle. gcc 2.95.x (powerpc64 -maix64, or powerpc32) doesn't recognise the "for" loop in the generic code below can become ldu/stu/bdnz. The do/while here helps it get to that. In gcc -mpowerpc64 mode, without -maix64, __size seems to want to be an mp_limb_t to get into the ctr register, and even then the loop is a curious ldu/stu/bdz/b. But let's not worry about that unless there's a system using this. An asm block could force what we want if necessary. xlc 3.1 already generates ldu/stu/bdnz from the generic C, and does so from this loop too. */ #if __GMP_HAVE_HOST_CPU_FAMILY_power || __GMP_HAVE_HOST_CPU_FAMILY_powerpc #define __GMPN_COPY_INCR(dst, src, size) \ do { \ /* ASSERT ((size) >= 0); */ \ /* ASSERT (MPN_SAME_OR_INCR_P (dst, src, size)); */ \ if ((size) != 0) \ { \ mp_ptr __gmp_copy_incr_dst = (dst) - 1; \ mp_srcptr __gmp_copy_incr_src = (src) - 1; \ mp_size_t __gmp_copy_incr_size = (size); \ do \ *++__gmp_copy_incr_dst = *++__gmp_copy_incr_src; \ while (--__gmp_copy_incr_size != 0); \ } \ } while (0) #define __GMPN_COPY(dst, src, size) \ do { \ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \ __GMPN_COPY_INCR (dst, src, size); \ } while (0) #endif #if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST) #define __GMPN_COPY_REST(dst, src, size, start) \ do { \ /* ASSERT ((start) >= 0); */ \ /* ASSERT ((start) <= (size)); */ \ __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \ } while (0) #endif /* Copy {src,size} to {dst,size}, starting at "start". This is designed to keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1, __GMPN_ADD, etc. */ #if ! defined (__GMPN_COPY_REST) #define __GMPN_COPY_REST(dst, src, size, start) \ do { \ mp_size_t __gmp_j; \ /* ASSERT ((size) >= 0); */ \ /* ASSERT ((start) >= 0); */ \ /* ASSERT ((start) <= (size)); */ \ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \ for (__gmp_j = (start); __gmp_j < (size); __gmp_j++) \ (dst)[__gmp_j] = (src)[__gmp_j]; \ } while (0) #endif /* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use mpn_copyi if there's a native version, and if we don't mind demanding binary compatibility for it (on targets which use it). */ #if ! defined (__GMPN_COPY) #define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0) #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_add #if ! __GMP_FORCE_mpn_add __GMP_EXTERN_INLINE #endif mp_limb_t mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) { mp_limb_t __gmp_c; __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); return __gmp_c; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_add_1 #if ! __GMP_FORCE_mpn_add_1 __GMP_EXTERN_INLINE #endif mp_limb_t mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW { mp_limb_t __gmp_c; __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); return __gmp_c; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_cmp #if ! __GMP_FORCE_mpn_cmp __GMP_EXTERN_INLINE #endif int mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW { int __gmp_result; __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size); return __gmp_result; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_sub #if ! __GMP_FORCE_mpn_sub __GMP_EXTERN_INLINE #endif mp_limb_t mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) { mp_limb_t __gmp_c; __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); return __gmp_c; } #endif #if defined (__GMP_EXTERN_INLINE) || __GMP_FORCE_mpn_sub_1 #if ! __GMP_FORCE_mpn_sub_1 __GMP_EXTERN_INLINE #endif mp_limb_t mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW { mp_limb_t __gmp_c; __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); return __gmp_c; } #endif #if defined (__cplusplus) } #endif /* Allow faster testing for negative, zero, and positive. */ #define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0) #define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0) #define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0) /* When using GCC, optimize certain common comparisons. */ #if defined (__GNUC__) #define mpz_cmp_ui(Z,UI) \ (__builtin_constant_p (UI) && (UI) == 0 \ ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI)) #define mpz_cmp_si(Z,SI) \ (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z) \ : __builtin_constant_p (SI) && (SI) > 0 \ ? _mpz_cmp_ui (Z, (unsigned long int) SI) \ : _mpz_cmp_si (Z,SI)) #define mpq_cmp_ui(Q,NUI,DUI) \ (__builtin_constant_p (NUI) && (NUI) == 0 \ ? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI)) #define mpq_cmp_si(q,n,d) \ (__builtin_constant_p ((n) >= 0) && (n) >= 0 \ ? mpq_cmp_ui (q, (unsigned long) (n), d) \ : _mpq_cmp_si (q, n, d)) #else #define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI) #define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI) #define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI) #define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d) #endif /* Using "&" rather than "&&" means these can come out branch-free. Every mpz_t has at least one limb allocated, so fetching the low limb is always allowed. */ #define mpz_odd_p(z) ((int) ((z)->_mp_size != 0) & (int) (z)->_mp_d[0]) #define mpz_even_p(z) (! mpz_odd_p (z)) /**************** C++ routines ****************/ #ifdef __cplusplus __GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr); __GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr); __GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr); __GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr); __GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr); __GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr); #endif /* Compatibility with GMP 2 and earlier. */ #define mpn_divmod(qp,np,nsize,dp,dsize) \ mpn_divrem (qp, (mp_size_t) 0, np, nsize, dp, dsize) /* Compatibility with GMP 1. */ #define mpz_mdiv mpz_fdiv_q #define mpz_mdivmod mpz_fdiv_qr #define mpz_mmod mpz_fdiv_r #define mpz_mdiv_ui mpz_fdiv_q_ui #define mpz_mdivmod_ui(q,r,n,d) \ ((r == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d)) #define mpz_mmod_ui(r,n,d) \ ((r == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d)) /* Useful synonyms, but not quite compatible with GMP 1. */ #define mpz_div mpz_fdiv_q #define mpz_divmod mpz_fdiv_qr #define mpz_div_ui mpz_fdiv_q_ui #define mpz_divmod_ui mpz_fdiv_qr_ui #define mpz_mod_ui mpz_fdiv_r_ui #define mpz_div_2exp mpz_fdiv_q_2exp #define mpz_mod_2exp mpz_fdiv_r_2exp enum { GMP_ERROR_NONE = 0, GMP_ERROR_UNSUPPORTED_ARGUMENT = 1, GMP_ERROR_DIVISION_BY_ZERO = 2, GMP_ERROR_SQRT_OF_NEGATIVE = 4, GMP_ERROR_INVALID_ARGUMENT = 8, GMP_ERROR_ALLOCATE = 16, GMP_ERROR_BAD_STRING = 32, GMP_ERROR_UNUSED_ERROR }; /* Major version number is the value of __GNU_MP__ too, above and in mp.h. */ #define __GNU_MP_VERSION 4 #define __GNU_MP_VERSION_MINOR 1 #define __GNU_MP_VERSION_PATCHLEVEL 0 #define __GMP_H__ #endif /* __GMP_H__ */ core++-1.7/win32/patches/gmp-4.1-static/gmp.mak0100644000175000001440000104753210017704503020220 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on gmp.dsp !IF "$(CFG)" == "" CFG=gmp - Win32 Debug !MESSAGE No configuration specified. Defaulting to gmp - Win32 Debug. !ENDIF !IF "$(CFG)" != "gmp - Win32 Release" && "$(CFG)" != "gmp - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gmp.mak" CFG="gmp - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gmp - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "gmp - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "gmp - Win32 Release" OUTDIR=..\lib INTDIR=.\Release ALL : "$(OUTDIR)\gmp.lib" CLEAN : -@erase "$(INTDIR)\asprintf.obj" -@erase "$(INTDIR)\asprntffuns.obj" -@erase "$(INTDIR)\assert.obj" -@erase "$(INTDIR)\compat.obj" -@erase "$(INTDIR)\doprnt.obj" -@erase "$(INTDIR)\doprntf.obj" -@erase "$(INTDIR)\doprnti.obj" -@erase "$(INTDIR)\doscan.obj" -@erase "$(INTDIR)\errno.obj" -@erase "$(INTDIR)\extract-dbl.obj" -@erase "$(INTDIR)\fprintf.obj" -@erase "$(INTDIR)\fscanf.obj" -@erase "$(INTDIR)\fscanffuns.obj" -@erase "$(INTDIR)\insert-dbl.obj" -@erase "$(INTDIR)\memory.obj" -@erase "$(INTDIR)\mp_bpl.obj" -@erase "$(INTDIR)\mp_clz_tab.obj" -@erase "$(INTDIR)\mp_minv_tab.obj" -@erase "$(INTDIR)\mp_set_fns.obj" -@erase "$(INTDIR)\mpf\vc60.idb" -@erase "$(INTDIR)\mpn\vc60.idb" -@erase "$(INTDIR)\mpq\vc60.idb" -@erase "$(INTDIR)\mpz\vc60.idb" -@erase "$(INTDIR)\obprintf.obj" -@erase "$(INTDIR)\obprntffuns.obj" -@erase "$(INTDIR)\obvprintf.obj" -@erase "$(INTDIR)\pow_1.obj" -@erase "$(INTDIR)\printf.obj" -@erase "$(INTDIR)\printffuns.obj" -@erase "$(INTDIR)\rand.obj" -@erase "$(INTDIR)\randclr.obj" -@erase "$(INTDIR)\randdef.obj" -@erase "$(INTDIR)\randlc.obj" -@erase "$(INTDIR)\randlc2s.obj" -@erase "$(INTDIR)\randlc2x.obj" -@erase "$(INTDIR)\randraw.obj" -@erase "$(INTDIR)\rands.obj" -@erase "$(INTDIR)\randsd.obj" -@erase "$(INTDIR)\randsdui.obj" -@erase "$(INTDIR)\repl-vsnprintf.obj" -@erase "$(INTDIR)\scanf.obj" -@erase "$(INTDIR)\snprintf.obj" -@erase "$(INTDIR)\snprntffuns.obj" -@erase "$(INTDIR)\sprintf.obj" -@erase "$(INTDIR)\sprintffuns.obj" -@erase "$(INTDIR)\sscanf.obj" -@erase "$(INTDIR)\sscanffuns.obj" -@erase "$(INTDIR)\vasprintf.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\version.obj" -@erase "$(INTDIR)\vfprintf.obj" -@erase "$(INTDIR)\vfscanf.obj" -@erase "$(INTDIR)\vprintf.obj" -@erase "$(INTDIR)\vscanf.obj" -@erase "$(INTDIR)\vsnprintf.obj" -@erase "$(INTDIR)\vsprintf.obj" -@erase "$(INTDIR)\vsscanf.obj" -@erase "$(OUTDIR)\gmp.lib" -@erase "$(INTDIR)\mpf\abs.obj" -@erase "$(INTDIR)\mpf\add.obj" -@erase "$(INTDIR)\mpf\add_ui.obj" -@erase "$(INTDIR)\mpf\ceilfloor.obj" -@erase "$(INTDIR)\mpf\clear.obj" -@erase "$(INTDIR)\mpf\cmp.obj" -@erase "$(INTDIR)\mpf\cmp_d.obj" -@erase "$(INTDIR)\mpf\cmp_si.obj" -@erase "$(INTDIR)\mpf\cmp_ui.obj" -@erase "$(INTDIR)\mpf\div.obj" -@erase "$(INTDIR)\mpf\div_2exp.obj" -@erase "$(INTDIR)\mpf\div_ui.obj" -@erase "$(INTDIR)\mpf\dump.obj" -@erase "$(INTDIR)\mpf\eq.obj" -@erase "$(INTDIR)\mpf\fits_sint.obj" -@erase "$(INTDIR)\mpf\fits_slong.obj" -@erase "$(INTDIR)\mpf\fits_sshort.obj" -@erase "$(INTDIR)\mpf\fits_uint.obj" -@erase "$(INTDIR)\mpf\fits_ulong.obj" -@erase "$(INTDIR)\mpf\fits_ushort.obj" -@erase "$(INTDIR)\mpf\get_d.obj" -@erase "$(INTDIR)\mpf\get_d_2exp.obj" -@erase "$(INTDIR)\mpf\get_dfl_prec.obj" -@erase "$(INTDIR)\mpf\get_prc.obj" -@erase "$(INTDIR)\mpf\get_si.obj" -@erase "$(INTDIR)\mpf\get_str.obj" -@erase "$(INTDIR)\mpf\get_ui.obj" -@erase "$(INTDIR)\mpf\init.obj" -@erase "$(INTDIR)\mpf\init2.obj" -@erase "$(INTDIR)\mpf\inp_str.obj" -@erase "$(INTDIR)\mpf\int_p.obj" -@erase "$(INTDIR)\mpf\iset.obj" -@erase "$(INTDIR)\mpf\iset_d.obj" -@erase "$(INTDIR)\mpf\iset_si.obj" -@erase "$(INTDIR)\mpf\iset_str.obj" -@erase "$(INTDIR)\mpf\iset_ui.obj" -@erase "$(INTDIR)\mpf\mul.obj" -@erase "$(INTDIR)\mpf\mul_2exp.obj" -@erase "$(INTDIR)\mpf\mul_ui.obj" -@erase "$(INTDIR)\mpf\neg.obj" -@erase "$(INTDIR)\mpf\out_str.obj" -@erase "$(INTDIR)\mpf\pow_ui.obj" -@erase "$(INTDIR)\mpf\random2.obj" -@erase "$(INTDIR)\mpf\reldiff.obj" -@erase "$(INTDIR)\mpf\set.obj" -@erase "$(INTDIR)\mpf\set_d.obj" -@erase "$(INTDIR)\mpf\set_dfl_prec.obj" -@erase "$(INTDIR)\mpf\set_prc.obj" -@erase "$(INTDIR)\mpf\set_prc_raw.obj" -@erase "$(INTDIR)\mpf\set_q.obj" -@erase "$(INTDIR)\mpf\set_si.obj" -@erase "$(INTDIR)\mpf\set_str.obj" -@erase "$(INTDIR)\mpf\set_ui.obj" -@erase "$(INTDIR)\mpf\set_z.obj" -@erase "$(INTDIR)\mpf\size.obj" -@erase "$(INTDIR)\mpf\sqrt.obj" -@erase "$(INTDIR)\mpf\sqrt_ui.obj" -@erase "$(INTDIR)\mpf\sub.obj" -@erase "$(INTDIR)\mpf\sub_ui.obj" -@erase "$(INTDIR)\mpf\swap.obj" -@erase "$(INTDIR)\mpf\trunc.obj" -@erase "$(INTDIR)\mpf\ui_div.obj" -@erase "$(INTDIR)\mpf\ui_sub.obj" -@erase "$(INTDIR)\mpf\urandomb.obj" -@erase "$(INTDIR)\mpn\add.obj" -@erase "$(INTDIR)\mpn\add_1.obj" -@erase "$(INTDIR)\mpn\add_n.obj" -@erase "$(INTDIR)\mpn\addmul_1.obj" -@erase "$(INTDIR)\mpn\bdivmod.obj" -@erase "$(INTDIR)\mpn\cmp.obj" -@erase "$(INTDIR)\mpn\dc_divrem_n.obj" -@erase "$(INTDIR)\mpn\dive_1.obj" -@erase "$(INTDIR)\mpn\diveby3.obj" -@erase "$(INTDIR)\mpn\divis.obj" -@erase "$(INTDIR)\mpn\divrem.obj" -@erase "$(INTDIR)\mpn\divrem_1.obj" -@erase "$(INTDIR)\mpn\divrem_2.obj" -@erase "$(INTDIR)\mpn\dump.obj" -@erase "$(INTDIR)\mpn\fib2_ui.obj" -@erase "$(INTDIR)\mpn\gcd.obj" -@erase "$(INTDIR)\mpn\gcd_1.obj" -@erase "$(INTDIR)\mpn\gcdext.obj" -@erase "$(INTDIR)\mpn\get_str.obj" -@erase "$(INTDIR)\mpn\hamdist.obj" -@erase "$(INTDIR)\mpn\jacbase.obj" -@erase "$(INTDIR)\mpn\lshift.obj" -@erase "$(INTDIR)\mpn\mod_1.obj" -@erase "$(INTDIR)\mpn\mod_34lsub1.obj" -@erase "$(INTDIR)\mpn\mode1o.obj" -@erase "$(INTDIR)\mpn\mp_bases.obj" -@erase "$(INTDIR)\mpn\mul.obj" -@erase "$(INTDIR)\mpn\mul_1.obj" -@erase "$(INTDIR)\mpn\mul_basecase.obj" -@erase "$(INTDIR)\mpn\mul_fft.obj" -@erase "$(INTDIR)\mpn\mul_n.obj" -@erase "$(INTDIR)\mpn\perfsqr.obj" -@erase "$(INTDIR)\mpn\popcount.obj" -@erase "$(INTDIR)\mpn\pre_divrem_1.obj" -@erase "$(INTDIR)\mpn\pre_mod_1.obj" -@erase "$(INTDIR)\mpn\random.obj" -@erase "$(INTDIR)\mpn\random2.obj" -@erase "$(INTDIR)\mpn\rshift.obj" -@erase "$(INTDIR)\mpn\sb_divrem_mn.obj" -@erase "$(INTDIR)\mpn\scan0.obj" -@erase "$(INTDIR)\mpn\scan1.obj" -@erase "$(INTDIR)\mpn\set_str.obj" -@erase "$(INTDIR)\mpn\sqr_basecase.obj" -@erase "$(INTDIR)\mpn\sqrtrem.obj" -@erase "$(INTDIR)\mpn\sub.obj" -@erase "$(INTDIR)\mpn\sub_1.obj" -@erase "$(INTDIR)\mpn\sub_n.obj" -@erase "$(INTDIR)\mpn\submul_1.obj" -@erase "$(INTDIR)\mpn\tdiv_qr.obj" -@erase "$(INTDIR)\mpq\abs.obj" -@erase "$(INTDIR)\mpq\aors.obj" -@erase "$(INTDIR)\mpq\canonicalize.obj" -@erase "$(INTDIR)\mpq\clear.obj" -@erase "$(INTDIR)\mpq\cmp.obj" -@erase "$(INTDIR)\mpq\cmp_si.obj" -@erase "$(INTDIR)\mpq\cmp_ui.obj" -@erase "$(INTDIR)\mpq\div.obj" -@erase "$(INTDIR)\mpq\equal.obj" -@erase "$(INTDIR)\mpq\get_d.obj" -@erase "$(INTDIR)\mpq\get_den.obj" -@erase "$(INTDIR)\mpq\get_num.obj" -@erase "$(INTDIR)\mpq\get_str.obj" -@erase "$(INTDIR)\mpq\init.obj" -@erase "$(INTDIR)\mpq\inp_str.obj" -@erase "$(INTDIR)\mpq\inv.obj" -@erase "$(INTDIR)\mpq\md_2exp.obj" -@erase "$(INTDIR)\mpq\mul.obj" -@erase "$(INTDIR)\mpq\neg.obj" -@erase "$(INTDIR)\mpq\out_str.obj" -@erase "$(INTDIR)\mpq\set.obj" -@erase "$(INTDIR)\mpq\set_d.obj" -@erase "$(INTDIR)\mpq\set_den.obj" -@erase "$(INTDIR)\mpq\set_f.obj" -@erase "$(INTDIR)\mpq\set_num.obj" -@erase "$(INTDIR)\mpq\set_si.obj" -@erase "$(INTDIR)\mpq\set_str.obj" -@erase "$(INTDIR)\mpq\set_ui.obj" -@erase "$(INTDIR)\mpq\set_z.obj" -@erase "$(INTDIR)\mpq\swap.obj" -@erase "$(INTDIR)\mpz\abs.obj" -@erase "$(INTDIR)\mpz\add.obj" -@erase "$(INTDIR)\mpz\add_ui.obj" -@erase "$(INTDIR)\mpz\and.obj" -@erase "$(INTDIR)\mpz\aorsmul.obj" -@erase "$(INTDIR)\mpz\aorsmul_i.obj" -@erase "$(INTDIR)\mpz\array_init.obj" -@erase "$(INTDIR)\mpz\bin_ui.obj" -@erase "$(INTDIR)\mpz\bin_uiui.obj" -@erase "$(INTDIR)\mpz\cdiv_q.obj" -@erase "$(INTDIR)\mpz\cdiv_q_ui.obj" -@erase "$(INTDIR)\mpz\cdiv_qr.obj" -@erase "$(INTDIR)\mpz\cdiv_qr_ui.obj" -@erase "$(INTDIR)\mpz\cdiv_r.obj" -@erase "$(INTDIR)\mpz\cdiv_r_ui.obj" -@erase "$(INTDIR)\mpz\cdiv_ui.obj" -@erase "$(INTDIR)\mpz\cfdiv_q_2exp.obj" -@erase "$(INTDIR)\mpz\cfdiv_r_2exp.obj" -@erase "$(INTDIR)\mpz\clear.obj" -@erase "$(INTDIR)\mpz\clrbit.obj" -@erase "$(INTDIR)\mpz\cmp.obj" -@erase "$(INTDIR)\mpz\cmp_d.obj" -@erase "$(INTDIR)\mpz\cmp_si.obj" -@erase "$(INTDIR)\mpz\cmp_ui.obj" -@erase "$(INTDIR)\mpz\cmpabs.obj" -@erase "$(INTDIR)\mpz\cmpabs_d.obj" -@erase "$(INTDIR)\mpz\cmpabs_ui.obj" -@erase "$(INTDIR)\mpz\com.obj" -@erase "$(INTDIR)\mpz\cong.obj" -@erase "$(INTDIR)\mpz\cong_2exp.obj" -@erase "$(INTDIR)\mpz\cong_ui.obj" -@erase "$(INTDIR)\mpz\dive_ui.obj" -@erase "$(INTDIR)\mpz\divegcd.obj" -@erase "$(INTDIR)\mpz\divexact.obj" -@erase "$(INTDIR)\mpz\divis.obj" -@erase "$(INTDIR)\mpz\divis_2exp.obj" -@erase "$(INTDIR)\mpz\divis_ui.obj" -@erase "$(INTDIR)\mpz\dump.obj" -@erase "$(INTDIR)\mpz\fac_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_q.obj" -@erase "$(INTDIR)\mpz\fdiv_q_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_qr.obj" -@erase "$(INTDIR)\mpz\fdiv_qr_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_r.obj" -@erase "$(INTDIR)\mpz\fdiv_r_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_ui.obj" -@erase "$(INTDIR)\mpz\fib2_ui.obj" -@erase "$(INTDIR)\mpz\fib_ui.obj" -@erase "$(INTDIR)\mpz\fits_sint.obj" -@erase "$(INTDIR)\mpz\fits_slong.obj" -@erase "$(INTDIR)\mpz\fits_sshort.obj" -@erase "$(INTDIR)\mpz\fits_uint.obj" -@erase "$(INTDIR)\mpz\fits_ulong.obj" -@erase "$(INTDIR)\mpz\fits_ushort.obj" -@erase "$(INTDIR)\mpz\gcd.obj" -@erase "$(INTDIR)\mpz\gcd_ui.obj" -@erase "$(INTDIR)\mpz\gcdext.obj" -@erase "$(INTDIR)\mpz\get_d.obj" -@erase "$(INTDIR)\mpz\get_d_2exp.obj" -@erase "$(INTDIR)\mpz\get_si.obj" -@erase "$(INTDIR)\mpz\get_str.obj" -@erase "$(INTDIR)\mpz\get_ui.obj" -@erase "$(INTDIR)\mpz\getlimbn.obj" -@erase "$(INTDIR)\mpz\hamdist.obj" -@erase "$(INTDIR)\mpz\init.obj" -@erase "$(INTDIR)\mpz\init2.obj" -@erase "$(INTDIR)\mpz\inp_raw.obj" -@erase "$(INTDIR)\mpz\inp_str.obj" -@erase "$(INTDIR)\mpz\invert.obj" -@erase "$(INTDIR)\mpz\ior.obj" -@erase "$(INTDIR)\mpz\iset.obj" -@erase "$(INTDIR)\mpz\iset_d.obj" -@erase "$(INTDIR)\mpz\iset_si.obj" -@erase "$(INTDIR)\mpz\iset_str.obj" -@erase "$(INTDIR)\mpz\iset_ui.obj" -@erase "$(INTDIR)\mpz\jacobi.obj" -@erase "$(INTDIR)\mpz\kronsz.obj" -@erase "$(INTDIR)\mpz\kronuz.obj" -@erase "$(INTDIR)\mpz\kronzs.obj" -@erase "$(INTDIR)\mpz\kronzu.obj" -@erase "$(INTDIR)\mpz\lcm.obj" -@erase "$(INTDIR)\mpz\lcm_ui.obj" -@erase "$(INTDIR)\mpz\lucnum2_ui.obj" -@erase "$(INTDIR)\mpz\lucnum_ui.obj" -@erase "$(INTDIR)\mpz\millerrabin.obj" -@erase "$(INTDIR)\mpz\mod.obj" -@erase "$(INTDIR)\mpz\mul.obj" -@erase "$(INTDIR)\mpz\mul_2exp.obj" -@erase "$(INTDIR)\mpz\mul_si.obj" -@erase "$(INTDIR)\mpz\mul_ui.obj" -@erase "$(INTDIR)\mpz\n_pow_ui.obj" -@erase "$(INTDIR)\mpz\neg.obj" -@erase "$(INTDIR)\mpz\nextprime.obj" -@erase "$(INTDIR)\mpz\out_raw.obj" -@erase "$(INTDIR)\mpz\out_str.obj" -@erase "$(INTDIR)\mpz\perfpow.obj" -@erase "$(INTDIR)\mpz\perfsqr.obj" -@erase "$(INTDIR)\mpz\popcount.obj" -@erase "$(INTDIR)\mpz\pow_ui.obj" -@erase "$(INTDIR)\mpz\powm.obj" -@erase "$(INTDIR)\mpz\powm_ui.obj" -@erase "$(INTDIR)\mpz\pprime_p.obj" -@erase "$(INTDIR)\mpz\random.obj" -@erase "$(INTDIR)\mpz\random2.obj" -@erase "$(INTDIR)\mpz\realloc.obj" -@erase "$(INTDIR)\mpz\realloc2.obj" -@erase "$(INTDIR)\mpz\remove.obj" -@erase "$(INTDIR)\mpz\root.obj" -@erase "$(INTDIR)\mpz\rootrem.obj" -@erase "$(INTDIR)\mpz\rrandomb.obj" -@erase "$(INTDIR)\mpz\scan0.obj" -@erase "$(INTDIR)\mpz\scan1.obj" -@erase "$(INTDIR)\mpz\set.obj" -@erase "$(INTDIR)\mpz\set_d.obj" -@erase "$(INTDIR)\mpz\set_f.obj" -@erase "$(INTDIR)\mpz\set_q.obj" -@erase "$(INTDIR)\mpz\set_si.obj" -@erase "$(INTDIR)\mpz\set_str.obj" -@erase "$(INTDIR)\mpz\set_ui.obj" -@erase "$(INTDIR)\mpz\setbit.obj" -@erase "$(INTDIR)\mpz\size.obj" -@erase "$(INTDIR)\mpz\sizeinbase.obj" -@erase "$(INTDIR)\mpz\sqrt.obj" -@erase "$(INTDIR)\mpz\sqrtrem.obj" -@erase "$(INTDIR)\mpz\sub.obj" -@erase "$(INTDIR)\mpz\sub_ui.obj" -@erase "$(INTDIR)\mpz\swap.obj" -@erase "$(INTDIR)\mpz\tdiv_q.obj" -@erase "$(INTDIR)\mpz\tdiv_q_2exp.obj" -@erase "$(INTDIR)\mpz\tdiv_q_ui.obj" -@erase "$(INTDIR)\mpz\tdiv_qr.obj" -@erase "$(INTDIR)\mpz\tdiv_qr_ui.obj" -@erase "$(INTDIR)\mpz\tdiv_r.obj" -@erase "$(INTDIR)\mpz\tdiv_r_2exp.obj" -@erase "$(INTDIR)\mpz\tdiv_r_ui.obj" -@erase "$(INTDIR)\mpz\tdiv_ui.obj" -@erase "$(INTDIR)\mpz\tstbit.obj" -@erase "$(INTDIR)\mpz\ui_pow_ui.obj" -@erase "$(INTDIR)\mpz\urandomb.obj" -@erase "$(INTDIR)\mpz\urandomm.obj" -@erase "$(INTDIR)\mpz\xor.obj" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" "$(INTDIR)" : if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)" if not exist "$(INTDIR)\mpf" mkdir "$(INTDIR)\mpf" if not exist "$(INTDIR)\mpn" mkdir "$(INTDIR)\mpn" if not exist "$(INTDIR)\mpq" mkdir "$(INTDIR)\mpq" if not exist "$(INTDIR)\mpz" mkdir "$(INTDIR)\mpz" CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"$(INTDIR)\gmp.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gmp.bsc" BSC32_SBRS= \ LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"../lib/gmp.lib" LIB32_OBJS= \ "$(INTDIR)\mpf\abs.obj" \ "$(INTDIR)\mpq\abs.obj" \ "$(INTDIR)\mpz\abs.obj" \ "$(INTDIR)\mpf\add.obj" \ "$(INTDIR)\mpn\add.obj" \ "$(INTDIR)\mpz\add.obj" \ "$(INTDIR)\mpn\add_1.obj" \ "$(INTDIR)\mpn\add_n.obj" \ "$(INTDIR)\mpf\add_ui.obj" \ "$(INTDIR)\mpz\add_ui.obj" \ "$(INTDIR)\mpn\addmul_1.obj" \ "$(INTDIR)\mpz\and.obj" \ "$(INTDIR)\mpq\aors.obj" \ "$(INTDIR)\mpz\aorsmul.obj" \ "$(INTDIR)\mpz\aorsmul_i.obj" \ "$(INTDIR)\mpz\array_init.obj" \ "$(INTDIR)\asprintf.obj" \ "$(INTDIR)\asprntffuns.obj" \ "$(INTDIR)\assert.obj" \ "$(INTDIR)\mpn\bdivmod.obj" \ "$(INTDIR)\mpz\bin_ui.obj" \ "$(INTDIR)\mpz\bin_uiui.obj" \ "$(INTDIR)\mpq\canonicalize.obj" \ "$(INTDIR)\mpz\cdiv_q.obj" \ "$(INTDIR)\mpz\cdiv_q_ui.obj" \ "$(INTDIR)\mpz\cdiv_qr.obj" \ "$(INTDIR)\mpz\cdiv_qr_ui.obj" \ "$(INTDIR)\mpz\cdiv_r.obj" \ "$(INTDIR)\mpz\cdiv_r_ui.obj" \ "$(INTDIR)\mpz\cdiv_ui.obj" \ "$(INTDIR)\mpf\ceilfloor.obj" \ "$(INTDIR)\mpz\cfdiv_q_2exp.obj" \ "$(INTDIR)\mpz\cfdiv_r_2exp.obj" \ "$(INTDIR)\mpf\clear.obj" \ "$(INTDIR)\mpq\clear.obj" \ "$(INTDIR)\mpz\clear.obj" \ "$(INTDIR)\mpz\clrbit.obj" \ "$(INTDIR)\mpf\cmp.obj" \ "$(INTDIR)\mpn\cmp.obj" \ "$(INTDIR)\mpq\cmp.obj" \ "$(INTDIR)\mpz\cmp.obj" \ "$(INTDIR)\mpf\cmp_d.obj" \ "$(INTDIR)\mpz\cmp_d.obj" \ "$(INTDIR)\mpf\cmp_si.obj" \ "$(INTDIR)\mpq\cmp_si.obj" \ "$(INTDIR)\mpz\cmp_si.obj" \ "$(INTDIR)\mpf\cmp_ui.obj" \ "$(INTDIR)\mpq\cmp_ui.obj" \ "$(INTDIR)\mpz\cmp_ui.obj" \ "$(INTDIR)\mpz\cmpabs.obj" \ "$(INTDIR)\mpz\cmpabs_d.obj" \ "$(INTDIR)\mpz\cmpabs_ui.obj" \ "$(INTDIR)\mpz\com.obj" \ "$(INTDIR)\compat.obj" \ "$(INTDIR)\mpz\cong.obj" \ "$(INTDIR)\mpz\cong_2exp.obj" \ "$(INTDIR)\mpz\cong_ui.obj" \ "$(INTDIR)\mpn\dc_divrem_n.obj" \ "$(INTDIR)\mpf\div.obj" \ "$(INTDIR)\mpq\div.obj" \ "$(INTDIR)\mpf\div_2exp.obj" \ "$(INTDIR)\mpf\div_ui.obj" \ "$(INTDIR)\mpn\dive_1.obj" \ "$(INTDIR)\mpz\dive_ui.obj" \ "$(INTDIR)\mpn\diveby3.obj" \ "$(INTDIR)\mpz\divegcd.obj" \ "$(INTDIR)\mpz\divexact.obj" \ "$(INTDIR)\mpn\divis.obj" \ "$(INTDIR)\mpz\divis.obj" \ "$(INTDIR)\mpz\divis_2exp.obj" \ "$(INTDIR)\mpz\divis_ui.obj" \ "$(INTDIR)\mpn\divrem.obj" \ "$(INTDIR)\mpn\divrem_1.obj" \ "$(INTDIR)\mpn\divrem_2.obj" \ "$(INTDIR)\doprnt.obj" \ "$(INTDIR)\doprntf.obj" \ "$(INTDIR)\doprnti.obj" \ "$(INTDIR)\doscan.obj" \ "$(INTDIR)\mpf\dump.obj" \ "$(INTDIR)\mpn\dump.obj" \ "$(INTDIR)\mpz\dump.obj" \ "$(INTDIR)\mpf\eq.obj" \ "$(INTDIR)\mpq\equal.obj" \ "$(INTDIR)\errno.obj" \ "$(INTDIR)\extract-dbl.obj" \ "$(INTDIR)\mpz\fac_ui.obj" \ "$(INTDIR)\mpz\fdiv_q.obj" \ "$(INTDIR)\mpz\fdiv_q_ui.obj" \ "$(INTDIR)\mpz\fdiv_qr.obj" \ "$(INTDIR)\mpz\fdiv_qr_ui.obj" \ "$(INTDIR)\mpz\fdiv_r.obj" \ "$(INTDIR)\mpz\fdiv_r_ui.obj" \ "$(INTDIR)\mpz\fdiv_ui.obj" \ "$(INTDIR)\mpn\fib2_ui.obj" \ "$(INTDIR)\mpz\fib2_ui.obj" \ "$(INTDIR)\mpz\fib_ui.obj" \ "$(INTDIR)\mpf\fits_sint.obj" \ "$(INTDIR)\mpz\fits_sint.obj" \ "$(INTDIR)\mpf\fits_slong.obj" \ "$(INTDIR)\mpz\fits_slong.obj" \ "$(INTDIR)\mpf\fits_sshort.obj" \ "$(INTDIR)\mpz\fits_sshort.obj" \ "$(INTDIR)\mpf\fits_uint.obj" \ "$(INTDIR)\mpz\fits_uint.obj" \ "$(INTDIR)\mpf\fits_ulong.obj" \ "$(INTDIR)\mpz\fits_ulong.obj" \ "$(INTDIR)\mpf\fits_ushort.obj" \ "$(INTDIR)\mpz\fits_ushort.obj" \ "$(INTDIR)\fprintf.obj" \ "$(INTDIR)\fscanf.obj" \ "$(INTDIR)\fscanffuns.obj" \ "$(INTDIR)\mpn\gcd.obj" \ "$(INTDIR)\mpz\gcd.obj" \ "$(INTDIR)\mpn\gcd_1.obj" \ "$(INTDIR)\mpz\gcd_ui.obj" \ "$(INTDIR)\mpn\gcdext.obj" \ "$(INTDIR)\mpz\gcdext.obj" \ "$(INTDIR)\mpf\get_d.obj" \ "$(INTDIR)\mpq\get_d.obj" \ "$(INTDIR)\mpz\get_d.obj" \ "$(INTDIR)\mpf\get_d_2exp.obj" \ "$(INTDIR)\mpz\get_d_2exp.obj" \ "$(INTDIR)\mpq\get_den.obj" \ "$(INTDIR)\mpf\get_dfl_prec.obj" \ "$(INTDIR)\mpq\get_num.obj" \ "$(INTDIR)\mpf\get_prc.obj" \ "$(INTDIR)\mpf\get_si.obj" \ "$(INTDIR)\mpz\get_si.obj" \ "$(INTDIR)\mpf\get_str.obj" \ "$(INTDIR)\mpn\get_str.obj" \ "$(INTDIR)\mpq\get_str.obj" \ "$(INTDIR)\mpz\get_str.obj" \ "$(INTDIR)\mpf\get_ui.obj" \ "$(INTDIR)\mpz\get_ui.obj" \ "$(INTDIR)\mpz\getlimbn.obj" \ "$(INTDIR)\mpn\hamdist.obj" \ "$(INTDIR)\mpz\hamdist.obj" \ "$(INTDIR)\mpf\init.obj" \ "$(INTDIR)\mpq\init.obj" \ "$(INTDIR)\mpz\init.obj" \ "$(INTDIR)\mpf\init2.obj" \ "$(INTDIR)\mpz\init2.obj" \ "$(INTDIR)\mpz\inp_raw.obj" \ "$(INTDIR)\mpf\inp_str.obj" \ "$(INTDIR)\mpq\inp_str.obj" \ "$(INTDIR)\mpz\inp_str.obj" \ "$(INTDIR)\insert-dbl.obj" \ "$(INTDIR)\mpf\int_p.obj" \ "$(INTDIR)\mpq\inv.obj" \ "$(INTDIR)\mpz\invert.obj" \ "$(INTDIR)\mpz\ior.obj" \ "$(INTDIR)\mpf\iset.obj" \ "$(INTDIR)\mpz\iset.obj" \ "$(INTDIR)\mpf\iset_d.obj" \ "$(INTDIR)\mpz\iset_d.obj" \ "$(INTDIR)\mpf\iset_si.obj" \ "$(INTDIR)\mpz\iset_si.obj" \ "$(INTDIR)\mpf\iset_str.obj" \ "$(INTDIR)\mpz\iset_str.obj" \ "$(INTDIR)\mpf\iset_ui.obj" \ "$(INTDIR)\mpz\iset_ui.obj" \ "$(INTDIR)\mpn\jacbase.obj" \ "$(INTDIR)\mpz\jacobi.obj" \ "$(INTDIR)\mpz\kronsz.obj" \ "$(INTDIR)\mpz\kronuz.obj" \ "$(INTDIR)\mpz\kronzs.obj" \ "$(INTDIR)\mpz\kronzu.obj" \ "$(INTDIR)\mpz\lcm.obj" \ "$(INTDIR)\mpz\lcm_ui.obj" \ "$(INTDIR)\mpn\lshift.obj" \ "$(INTDIR)\mpz\lucnum2_ui.obj" \ "$(INTDIR)\mpz\lucnum_ui.obj" \ "$(INTDIR)\mpq\md_2exp.obj" \ "$(INTDIR)\memory.obj" \ "$(INTDIR)\mpz\millerrabin.obj" \ "$(INTDIR)\mpz\mod.obj" \ "$(INTDIR)\mpn\mod_1.obj" \ "$(INTDIR)\mpn\mod_34lsub1.obj" \ "$(INTDIR)\mpn\mode1o.obj" \ "$(INTDIR)\mpn\mp_bases.obj" \ "$(INTDIR)\mp_bpl.obj" \ "$(INTDIR)\mp_clz_tab.obj" \ "$(INTDIR)\mp_minv_tab.obj" \ "$(INTDIR)\mp_set_fns.obj" \ "$(INTDIR)\mpf\mul.obj" \ "$(INTDIR)\mpn\mul.obj" \ "$(INTDIR)\mpq\mul.obj" \ "$(INTDIR)\mpz\mul.obj" \ "$(INTDIR)\mpn\mul_1.obj" \ "$(INTDIR)\mpf\mul_2exp.obj" \ "$(INTDIR)\mpz\mul_2exp.obj" \ "$(INTDIR)\mpn\mul_basecase.obj" \ "$(INTDIR)\mpn\mul_fft.obj" \ "$(INTDIR)\mpn\mul_n.obj" \ "$(INTDIR)\mpz\mul_si.obj" \ "$(INTDIR)\mpf\mul_ui.obj" \ "$(INTDIR)\mpz\mul_ui.obj" \ "$(INTDIR)\mpz\n_pow_ui.obj" \ "$(INTDIR)\mpf\neg.obj" \ "$(INTDIR)\mpq\neg.obj" \ "$(INTDIR)\mpz\neg.obj" \ "$(INTDIR)\mpz\nextprime.obj" \ "$(INTDIR)\obprintf.obj" \ "$(INTDIR)\obprntffuns.obj" \ "$(INTDIR)\obvprintf.obj" \ "$(INTDIR)\mpz\out_raw.obj" \ "$(INTDIR)\mpf\out_str.obj" \ "$(INTDIR)\mpq\out_str.obj" \ "$(INTDIR)\mpz\out_str.obj" \ "$(INTDIR)\mpz\perfpow.obj" \ "$(INTDIR)\mpn\perfsqr.obj" \ "$(INTDIR)\mpz\perfsqr.obj" \ "$(INTDIR)\mpn\popcount.obj" \ "$(INTDIR)\mpz\popcount.obj" \ "$(INTDIR)\pow_1.obj" \ "$(INTDIR)\mpf\pow_ui.obj" \ "$(INTDIR)\mpz\pow_ui.obj" \ "$(INTDIR)\mpz\powm.obj" \ "$(INTDIR)\mpz\powm_ui.obj" \ "$(INTDIR)\mpz\pprime_p.obj" \ "$(INTDIR)\mpn\pre_divrem_1.obj" \ "$(INTDIR)\mpn\pre_mod_1.obj" \ "$(INTDIR)\printf.obj" \ "$(INTDIR)\printffuns.obj" \ "$(INTDIR)\rand.obj" \ "$(INTDIR)\randclr.obj" \ "$(INTDIR)\randdef.obj" \ "$(INTDIR)\randlc.obj" \ "$(INTDIR)\randlc2s.obj" \ "$(INTDIR)\randlc2x.obj" \ "$(INTDIR)\mpn\random.obj" \ "$(INTDIR)\mpz\random.obj" \ "$(INTDIR)\mpf\random2.obj" \ "$(INTDIR)\mpn\random2.obj" \ "$(INTDIR)\mpz\random2.obj" \ "$(INTDIR)\randraw.obj" \ "$(INTDIR)\rands.obj" \ "$(INTDIR)\randsd.obj" \ "$(INTDIR)\randsdui.obj" \ "$(INTDIR)\mpz\realloc.obj" \ "$(INTDIR)\mpz\realloc2.obj" \ "$(INTDIR)\mpf\reldiff.obj" \ "$(INTDIR)\mpz\remove.obj" \ "$(INTDIR)\repl-vsnprintf.obj" \ "$(INTDIR)\mpz\root.obj" \ "$(INTDIR)\mpz\rootrem.obj" \ "$(INTDIR)\mpz\rrandomb.obj" \ "$(INTDIR)\mpn\rshift.obj" \ "$(INTDIR)\mpn\sb_divrem_mn.obj" \ "$(INTDIR)\mpn\scan0.obj" \ "$(INTDIR)\mpz\scan0.obj" \ "$(INTDIR)\mpn\scan1.obj" \ "$(INTDIR)\mpz\scan1.obj" \ "$(INTDIR)\scanf.obj" \ "$(INTDIR)\mpf\set.obj" \ "$(INTDIR)\mpq\set.obj" \ "$(INTDIR)\mpz\set.obj" \ "$(INTDIR)\mpf\set_d.obj" \ "$(INTDIR)\mpq\set_d.obj" \ "$(INTDIR)\mpz\set_d.obj" \ "$(INTDIR)\mpq\set_den.obj" \ "$(INTDIR)\mpf\set_dfl_prec.obj" \ "$(INTDIR)\mpq\set_f.obj" \ "$(INTDIR)\mpz\set_f.obj" \ "$(INTDIR)\mpq\set_num.obj" \ "$(INTDIR)\mpf\set_prc.obj" \ "$(INTDIR)\mpf\set_prc_raw.obj" \ "$(INTDIR)\mpf\set_q.obj" \ "$(INTDIR)\mpz\set_q.obj" \ "$(INTDIR)\mpf\set_si.obj" \ "$(INTDIR)\mpq\set_si.obj" \ "$(INTDIR)\mpz\set_si.obj" \ "$(INTDIR)\mpf\set_str.obj" \ "$(INTDIR)\mpn\set_str.obj" \ "$(INTDIR)\mpq\set_str.obj" \ "$(INTDIR)\mpz\set_str.obj" \ "$(INTDIR)\mpf\set_ui.obj" \ "$(INTDIR)\mpq\set_ui.obj" \ "$(INTDIR)\mpz\set_ui.obj" \ "$(INTDIR)\mpf\set_z.obj" \ "$(INTDIR)\mpq\set_z.obj" \ "$(INTDIR)\mpz\setbit.obj" \ "$(INTDIR)\mpf\size.obj" \ "$(INTDIR)\mpz\size.obj" \ "$(INTDIR)\mpz\sizeinbase.obj" \ "$(INTDIR)\snprintf.obj" \ "$(INTDIR)\snprntffuns.obj" \ "$(INTDIR)\sprintf.obj" \ "$(INTDIR)\sprintffuns.obj" \ "$(INTDIR)\mpn\sqr_basecase.obj" \ "$(INTDIR)\mpf\sqrt.obj" \ "$(INTDIR)\mpz\sqrt.obj" \ "$(INTDIR)\mpf\sqrt_ui.obj" \ "$(INTDIR)\mpn\sqrtrem.obj" \ "$(INTDIR)\mpz\sqrtrem.obj" \ "$(INTDIR)\sscanf.obj" \ "$(INTDIR)\sscanffuns.obj" \ "$(INTDIR)\mpf\sub.obj" \ "$(INTDIR)\mpn\sub.obj" \ "$(INTDIR)\mpz\sub.obj" \ "$(INTDIR)\mpn\sub_1.obj" \ "$(INTDIR)\mpn\sub_n.obj" \ "$(INTDIR)\mpf\sub_ui.obj" \ "$(INTDIR)\mpz\sub_ui.obj" \ "$(INTDIR)\mpn\submul_1.obj" \ "$(INTDIR)\mpf\swap.obj" \ "$(INTDIR)\mpq\swap.obj" \ "$(INTDIR)\mpz\swap.obj" \ "$(INTDIR)\mpz\tdiv_q.obj" \ "$(INTDIR)\mpz\tdiv_q_2exp.obj" \ "$(INTDIR)\mpz\tdiv_q_ui.obj" \ "$(INTDIR)\mpn\tdiv_qr.obj" \ "$(INTDIR)\mpz\tdiv_qr.obj" \ "$(INTDIR)\mpz\tdiv_qr_ui.obj" \ "$(INTDIR)\mpz\tdiv_r.obj" \ "$(INTDIR)\mpz\tdiv_r_2exp.obj" \ "$(INTDIR)\mpz\tdiv_r_ui.obj" \ "$(INTDIR)\mpz\tdiv_ui.obj" \ "$(INTDIR)\mpf\trunc.obj" \ "$(INTDIR)\mpz\tstbit.obj" \ "$(INTDIR)\mpf\ui_div.obj" \ "$(INTDIR)\mpz\ui_pow_ui.obj" \ "$(INTDIR)\mpf\ui_sub.obj" \ "$(INTDIR)\mpf\urandomb.obj" \ "$(INTDIR)\mpz\urandomb.obj" \ "$(INTDIR)\mpz\urandomm.obj" \ "$(INTDIR)\vasprintf.obj" \ "$(INTDIR)\version.obj" \ "$(INTDIR)\vfprintf.obj" \ "$(INTDIR)\vfscanf.obj" \ "$(INTDIR)\vprintf.obj" \ "$(INTDIR)\vscanf.obj" \ "$(INTDIR)\vsnprintf.obj" \ "$(INTDIR)\vsprintf.obj" \ "$(INTDIR)\vsscanf.obj" \ "$(INTDIR)\mpz\xor.obj" "$(OUTDIR)\gmp.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" OUTDIR=..\lib INTDIR=.\Debug ALL : "$(OUTDIR)\gmpDebug.lib" CLEAN : -@erase "$(INTDIR)\asprintf.obj" -@erase "$(INTDIR)\asprntffuns.obj" -@erase "$(INTDIR)\assert.obj" -@erase "$(INTDIR)\compat.obj" -@erase "$(INTDIR)\doprnt.obj" -@erase "$(INTDIR)\doprntf.obj" -@erase "$(INTDIR)\doprnti.obj" -@erase "$(INTDIR)\doscan.obj" -@erase "$(INTDIR)\errno.obj" -@erase "$(INTDIR)\extract-dbl.obj" -@erase "$(INTDIR)\fprintf.obj" -@erase "$(INTDIR)\fscanf.obj" -@erase "$(INTDIR)\fscanffuns.obj" -@erase "$(INTDIR)\insert-dbl.obj" -@erase "$(INTDIR)\memory.obj" -@erase "$(INTDIR)\mp_bpl.obj" -@erase "$(INTDIR)\mp_clz_tab.obj" -@erase "$(INTDIR)\mp_minv_tab.obj" -@erase "$(INTDIR)\mp_set_fns.obj" -@erase "$(INTDIR)\mpf\vc60.idb" -@erase "$(INTDIR)\mpf\vc60.pdb" -@erase "$(INTDIR)\mpn\vc60.idb" -@erase "$(INTDIR)\mpn\vc60.pdb" -@erase "$(INTDIR)\mpq\vc60.idb" -@erase "$(INTDIR)\mpq\vc60.pdb" -@erase "$(INTDIR)\mpz\vc60.idb" -@erase "$(INTDIR)\mpz\vc60.pdb" -@erase "$(INTDIR)\obprintf.obj" -@erase "$(INTDIR)\obprntffuns.obj" -@erase "$(INTDIR)\obvprintf.obj" -@erase "$(INTDIR)\pow_1.obj" -@erase "$(INTDIR)\printf.obj" -@erase "$(INTDIR)\printffuns.obj" -@erase "$(INTDIR)\rand.obj" -@erase "$(INTDIR)\randclr.obj" -@erase "$(INTDIR)\randdef.obj" -@erase "$(INTDIR)\randlc.obj" -@erase "$(INTDIR)\randlc2s.obj" -@erase "$(INTDIR)\randlc2x.obj" -@erase "$(INTDIR)\randraw.obj" -@erase "$(INTDIR)\rands.obj" -@erase "$(INTDIR)\randsd.obj" -@erase "$(INTDIR)\randsdui.obj" -@erase "$(INTDIR)\repl-vsnprintf.obj" -@erase "$(INTDIR)\scanf.obj" -@erase "$(INTDIR)\snprintf.obj" -@erase "$(INTDIR)\snprntffuns.obj" -@erase "$(INTDIR)\sprintf.obj" -@erase "$(INTDIR)\sprintffuns.obj" -@erase "$(INTDIR)\sscanf.obj" -@erase "$(INTDIR)\sscanffuns.obj" -@erase "$(INTDIR)\vasprintf.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(INTDIR)\version.obj" -@erase "$(INTDIR)\vfprintf.obj" -@erase "$(INTDIR)\vfscanf.obj" -@erase "$(INTDIR)\vprintf.obj" -@erase "$(INTDIR)\vscanf.obj" -@erase "$(INTDIR)\vsnprintf.obj" -@erase "$(INTDIR)\vsprintf.obj" -@erase "$(INTDIR)\vsscanf.obj" -@erase "$(OUTDIR)\gmpDebug.lib" -@erase "$(INTDIR)\mpf\abs.obj" -@erase "$(INTDIR)\mpf\add.obj" -@erase "$(INTDIR)\mpf\add_ui.obj" -@erase "$(INTDIR)\mpf\ceilfloor.obj" -@erase "$(INTDIR)\mpf\clear.obj" -@erase "$(INTDIR)\mpf\cmp.obj" -@erase "$(INTDIR)\mpf\cmp_d.obj" -@erase "$(INTDIR)\mpf\cmp_si.obj" -@erase "$(INTDIR)\mpf\cmp_ui.obj" -@erase "$(INTDIR)\mpf\div.obj" -@erase "$(INTDIR)\mpf\div_2exp.obj" -@erase "$(INTDIR)\mpf\div_ui.obj" -@erase "$(INTDIR)\mpf\dump.obj" -@erase "$(INTDIR)\mpf\eq.obj" -@erase "$(INTDIR)\mpf\fits_sint.obj" -@erase "$(INTDIR)\mpf\fits_slong.obj" -@erase "$(INTDIR)\mpf\fits_sshort.obj" -@erase "$(INTDIR)\mpf\fits_uint.obj" -@erase "$(INTDIR)\mpf\fits_ulong.obj" -@erase "$(INTDIR)\mpf\fits_ushort.obj" -@erase "$(INTDIR)\mpf\get_d.obj" -@erase "$(INTDIR)\mpf\get_d_2exp.obj" -@erase "$(INTDIR)\mpf\get_dfl_prec.obj" -@erase "$(INTDIR)\mpf\get_prc.obj" -@erase "$(INTDIR)\mpf\get_si.obj" -@erase "$(INTDIR)\mpf\get_str.obj" -@erase "$(INTDIR)\mpf\get_ui.obj" -@erase "$(INTDIR)\mpf\init.obj" -@erase "$(INTDIR)\mpf\init2.obj" -@erase "$(INTDIR)\mpf\inp_str.obj" -@erase "$(INTDIR)\mpf\int_p.obj" -@erase "$(INTDIR)\mpf\iset.obj" -@erase "$(INTDIR)\mpf\iset_d.obj" -@erase "$(INTDIR)\mpf\iset_si.obj" -@erase "$(INTDIR)\mpf\iset_str.obj" -@erase "$(INTDIR)\mpf\iset_ui.obj" -@erase "$(INTDIR)\mpf\mul.obj" -@erase "$(INTDIR)\mpf\mul_2exp.obj" -@erase "$(INTDIR)\mpf\mul_ui.obj" -@erase "$(INTDIR)\mpf\neg.obj" -@erase "$(INTDIR)\mpf\out_str.obj" -@erase "$(INTDIR)\mpf\pow_ui.obj" -@erase "$(INTDIR)\mpf\random2.obj" -@erase "$(INTDIR)\mpf\reldiff.obj" -@erase "$(INTDIR)\mpf\set.obj" -@erase "$(INTDIR)\mpf\set_d.obj" -@erase "$(INTDIR)\mpf\set_dfl_prec.obj" -@erase "$(INTDIR)\mpf\set_prc.obj" -@erase "$(INTDIR)\mpf\set_prc_raw.obj" -@erase "$(INTDIR)\mpf\set_q.obj" -@erase "$(INTDIR)\mpf\set_si.obj" -@erase "$(INTDIR)\mpf\set_str.obj" -@erase "$(INTDIR)\mpf\set_ui.obj" -@erase "$(INTDIR)\mpf\set_z.obj" -@erase "$(INTDIR)\mpf\size.obj" -@erase "$(INTDIR)\mpf\sqrt.obj" -@erase "$(INTDIR)\mpf\sqrt_ui.obj" -@erase "$(INTDIR)\mpf\sub.obj" -@erase "$(INTDIR)\mpf\sub_ui.obj" -@erase "$(INTDIR)\mpf\swap.obj" -@erase "$(INTDIR)\mpf\trunc.obj" -@erase "$(INTDIR)\mpf\ui_div.obj" -@erase "$(INTDIR)\mpf\ui_sub.obj" -@erase "$(INTDIR)\mpf\urandomb.obj" -@erase "$(INTDIR)\mpn\add.obj" -@erase "$(INTDIR)\mpn\add_1.obj" -@erase "$(INTDIR)\mpn\add_n.obj" -@erase "$(INTDIR)\mpn\addmul_1.obj" -@erase "$(INTDIR)\mpn\bdivmod.obj" -@erase "$(INTDIR)\mpn\cmp.obj" -@erase "$(INTDIR)\mpn\dc_divrem_n.obj" -@erase "$(INTDIR)\mpn\dive_1.obj" -@erase "$(INTDIR)\mpn\diveby3.obj" -@erase "$(INTDIR)\mpn\divis.obj" -@erase "$(INTDIR)\mpn\divrem.obj" -@erase "$(INTDIR)\mpn\divrem_1.obj" -@erase "$(INTDIR)\mpn\divrem_2.obj" -@erase "$(INTDIR)\mpn\dump.obj" -@erase "$(INTDIR)\mpn\fib2_ui.obj" -@erase "$(INTDIR)\mpn\gcd.obj" -@erase "$(INTDIR)\mpn\gcd_1.obj" -@erase "$(INTDIR)\mpn\gcdext.obj" -@erase "$(INTDIR)\mpn\get_str.obj" -@erase "$(INTDIR)\mpn\hamdist.obj" -@erase "$(INTDIR)\mpn\jacbase.obj" -@erase "$(INTDIR)\mpn\lshift.obj" -@erase "$(INTDIR)\mpn\mod_1.obj" -@erase "$(INTDIR)\mpn\mod_34lsub1.obj" -@erase "$(INTDIR)\mpn\mode1o.obj" -@erase "$(INTDIR)\mpn\mp_bases.obj" -@erase "$(INTDIR)\mpn\mul.obj" -@erase "$(INTDIR)\mpn\mul_1.obj" -@erase "$(INTDIR)\mpn\mul_basecase.obj" -@erase "$(INTDIR)\mpn\mul_fft.obj" -@erase "$(INTDIR)\mpn\mul_n.obj" -@erase "$(INTDIR)\mpn\perfsqr.obj" -@erase "$(INTDIR)\mpn\popcount.obj" -@erase "$(INTDIR)\mpn\pre_divrem_1.obj" -@erase "$(INTDIR)\mpn\pre_mod_1.obj" -@erase "$(INTDIR)\mpn\random.obj" -@erase "$(INTDIR)\mpn\random2.obj" -@erase "$(INTDIR)\mpn\rshift.obj" -@erase "$(INTDIR)\mpn\sb_divrem_mn.obj" -@erase "$(INTDIR)\mpn\scan0.obj" -@erase "$(INTDIR)\mpn\scan1.obj" -@erase "$(INTDIR)\mpn\set_str.obj" -@erase "$(INTDIR)\mpn\sqr_basecase.obj" -@erase "$(INTDIR)\mpn\sqrtrem.obj" -@erase "$(INTDIR)\mpn\sub.obj" -@erase "$(INTDIR)\mpn\sub_1.obj" -@erase "$(INTDIR)\mpn\sub_n.obj" -@erase "$(INTDIR)\mpn\submul_1.obj" -@erase "$(INTDIR)\mpn\tdiv_qr.obj" -@erase "$(INTDIR)\mpq\abs.obj" -@erase "$(INTDIR)\mpq\aors.obj" -@erase "$(INTDIR)\mpq\canonicalize.obj" -@erase "$(INTDIR)\mpq\clear.obj" -@erase "$(INTDIR)\mpq\cmp.obj" -@erase "$(INTDIR)\mpq\cmp_si.obj" -@erase "$(INTDIR)\mpq\cmp_ui.obj" -@erase "$(INTDIR)\mpq\div.obj" -@erase "$(INTDIR)\mpq\equal.obj" -@erase "$(INTDIR)\mpq\get_d.obj" -@erase "$(INTDIR)\mpq\get_den.obj" -@erase "$(INTDIR)\mpq\get_num.obj" -@erase "$(INTDIR)\mpq\get_str.obj" -@erase "$(INTDIR)\mpq\init.obj" -@erase "$(INTDIR)\mpq\inp_str.obj" -@erase "$(INTDIR)\mpq\inv.obj" -@erase "$(INTDIR)\mpq\md_2exp.obj" -@erase "$(INTDIR)\mpq\mul.obj" -@erase "$(INTDIR)\mpq\neg.obj" -@erase "$(INTDIR)\mpq\out_str.obj" -@erase "$(INTDIR)\mpq\set.obj" -@erase "$(INTDIR)\mpq\set_d.obj" -@erase "$(INTDIR)\mpq\set_den.obj" -@erase "$(INTDIR)\mpq\set_f.obj" -@erase "$(INTDIR)\mpq\set_num.obj" -@erase "$(INTDIR)\mpq\set_si.obj" -@erase "$(INTDIR)\mpq\set_str.obj" -@erase "$(INTDIR)\mpq\set_ui.obj" -@erase "$(INTDIR)\mpq\set_z.obj" -@erase "$(INTDIR)\mpq\swap.obj" -@erase "$(INTDIR)\mpz\abs.obj" -@erase "$(INTDIR)\mpz\add.obj" -@erase "$(INTDIR)\mpz\add_ui.obj" -@erase "$(INTDIR)\mpz\and.obj" -@erase "$(INTDIR)\mpz\aorsmul.obj" -@erase "$(INTDIR)\mpz\aorsmul_i.obj" -@erase "$(INTDIR)\mpz\array_init.obj" -@erase "$(INTDIR)\mpz\bin_ui.obj" -@erase "$(INTDIR)\mpz\bin_uiui.obj" -@erase "$(INTDIR)\mpz\cdiv_q.obj" -@erase "$(INTDIR)\mpz\cdiv_q_ui.obj" -@erase "$(INTDIR)\mpz\cdiv_qr.obj" -@erase "$(INTDIR)\mpz\cdiv_qr_ui.obj" -@erase "$(INTDIR)\mpz\cdiv_r.obj" -@erase "$(INTDIR)\mpz\cdiv_r_ui.obj" -@erase "$(INTDIR)\mpz\cdiv_ui.obj" -@erase "$(INTDIR)\mpz\cfdiv_q_2exp.obj" -@erase "$(INTDIR)\mpz\cfdiv_r_2exp.obj" -@erase "$(INTDIR)\mpz\clear.obj" -@erase "$(INTDIR)\mpz\clrbit.obj" -@erase "$(INTDIR)\mpz\cmp.obj" -@erase "$(INTDIR)\mpz\cmp_d.obj" -@erase "$(INTDIR)\mpz\cmp_si.obj" -@erase "$(INTDIR)\mpz\cmp_ui.obj" -@erase "$(INTDIR)\mpz\cmpabs.obj" -@erase "$(INTDIR)\mpz\cmpabs_d.obj" -@erase "$(INTDIR)\mpz\cmpabs_ui.obj" -@erase "$(INTDIR)\mpz\com.obj" -@erase "$(INTDIR)\mpz\cong.obj" -@erase "$(INTDIR)\mpz\cong_2exp.obj" -@erase "$(INTDIR)\mpz\cong_ui.obj" -@erase "$(INTDIR)\mpz\dive_ui.obj" -@erase "$(INTDIR)\mpz\divegcd.obj" -@erase "$(INTDIR)\mpz\divexact.obj" -@erase "$(INTDIR)\mpz\divis.obj" -@erase "$(INTDIR)\mpz\divis_2exp.obj" -@erase "$(INTDIR)\mpz\divis_ui.obj" -@erase "$(INTDIR)\mpz\dump.obj" -@erase "$(INTDIR)\mpz\fac_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_q.obj" -@erase "$(INTDIR)\mpz\fdiv_q_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_qr.obj" -@erase "$(INTDIR)\mpz\fdiv_qr_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_r.obj" -@erase "$(INTDIR)\mpz\fdiv_r_ui.obj" -@erase "$(INTDIR)\mpz\fdiv_ui.obj" -@erase "$(INTDIR)\mpz\fib2_ui.obj" -@erase "$(INTDIR)\mpz\fib_ui.obj" -@erase "$(INTDIR)\mpz\fits_sint.obj" -@erase "$(INTDIR)\mpz\fits_slong.obj" -@erase "$(INTDIR)\mpz\fits_sshort.obj" -@erase "$(INTDIR)\mpz\fits_uint.obj" -@erase "$(INTDIR)\mpz\fits_ulong.obj" -@erase "$(INTDIR)\mpz\fits_ushort.obj" -@erase "$(INTDIR)\mpz\gcd.obj" -@erase "$(INTDIR)\mpz\gcd_ui.obj" -@erase "$(INTDIR)\mpz\gcdext.obj" -@erase "$(INTDIR)\mpz\get_d.obj" -@erase "$(INTDIR)\mpz\get_d_2exp.obj" -@erase "$(INTDIR)\mpz\get_si.obj" -@erase "$(INTDIR)\mpz\get_str.obj" -@erase "$(INTDIR)\mpz\get_ui.obj" -@erase "$(INTDIR)\mpz\getlimbn.obj" -@erase "$(INTDIR)\mpz\hamdist.obj" -@erase "$(INTDIR)\mpz\init.obj" -@erase "$(INTDIR)\mpz\init2.obj" -@erase "$(INTDIR)\mpz\inp_raw.obj" -@erase "$(INTDIR)\mpz\inp_str.obj" -@erase "$(INTDIR)\mpz\invert.obj" -@erase "$(INTDIR)\mpz\ior.obj" -@erase "$(INTDIR)\mpz\iset.obj" -@erase "$(INTDIR)\mpz\iset_d.obj" -@erase "$(INTDIR)\mpz\iset_si.obj" -@erase "$(INTDIR)\mpz\iset_str.obj" -@erase "$(INTDIR)\mpz\iset_ui.obj" -@erase "$(INTDIR)\mpz\jacobi.obj" -@erase "$(INTDIR)\mpz\kronsz.obj" -@erase "$(INTDIR)\mpz\kronuz.obj" -@erase "$(INTDIR)\mpz\kronzs.obj" -@erase "$(INTDIR)\mpz\kronzu.obj" -@erase "$(INTDIR)\mpz\lcm.obj" -@erase "$(INTDIR)\mpz\lcm_ui.obj" -@erase "$(INTDIR)\mpz\lucnum2_ui.obj" -@erase "$(INTDIR)\mpz\lucnum_ui.obj" -@erase "$(INTDIR)\mpz\millerrabin.obj" -@erase "$(INTDIR)\mpz\mod.obj" -@erase "$(INTDIR)\mpz\mul.obj" -@erase "$(INTDIR)\mpz\mul_2exp.obj" -@erase "$(INTDIR)\mpz\mul_si.obj" -@erase "$(INTDIR)\mpz\mul_ui.obj" -@erase "$(INTDIR)\mpz\n_pow_ui.obj" -@erase "$(INTDIR)\mpz\neg.obj" -@erase "$(INTDIR)\mpz\nextprime.obj" -@erase "$(INTDIR)\mpz\out_raw.obj" -@erase "$(INTDIR)\mpz\out_str.obj" -@erase "$(INTDIR)\mpz\perfpow.obj" -@erase "$(INTDIR)\mpz\perfsqr.obj" -@erase "$(INTDIR)\mpz\popcount.obj" -@erase "$(INTDIR)\mpz\pow_ui.obj" -@erase "$(INTDIR)\mpz\powm.obj" -@erase "$(INTDIR)\mpz\powm_ui.obj" -@erase "$(INTDIR)\mpz\pprime_p.obj" -@erase "$(INTDIR)\mpz\random.obj" -@erase "$(INTDIR)\mpz\random2.obj" -@erase "$(INTDIR)\mpz\realloc.obj" -@erase "$(INTDIR)\mpz\realloc2.obj" -@erase "$(INTDIR)\mpz\remove.obj" -@erase "$(INTDIR)\mpz\root.obj" -@erase "$(INTDIR)\mpz\rootrem.obj" -@erase "$(INTDIR)\mpz\rrandomb.obj" -@erase "$(INTDIR)\mpz\scan0.obj" -@erase "$(INTDIR)\mpz\scan1.obj" -@erase "$(INTDIR)\mpz\set.obj" -@erase "$(INTDIR)\mpz\set_d.obj" -@erase "$(INTDIR)\mpz\set_f.obj" -@erase "$(INTDIR)\mpz\set_q.obj" -@erase "$(INTDIR)\mpz\set_si.obj" -@erase "$(INTDIR)\mpz\set_str.obj" -@erase "$(INTDIR)\mpz\set_ui.obj" -@erase "$(INTDIR)\mpz\setbit.obj" -@erase "$(INTDIR)\mpz\size.obj" -@erase "$(INTDIR)\mpz\sizeinbase.obj" -@erase "$(INTDIR)\mpz\sqrt.obj" -@erase "$(INTDIR)\mpz\sqrtrem.obj" -@erase "$(INTDIR)\mpz\sub.obj" -@erase "$(INTDIR)\mpz\sub_ui.obj" -@erase "$(INTDIR)\mpz\swap.obj" -@erase "$(INTDIR)\mpz\tdiv_q.obj" -@erase "$(INTDIR)\mpz\tdiv_q_2exp.obj" -@erase "$(INTDIR)\mpz\tdiv_q_ui.obj" -@erase "$(INTDIR)\mpz\tdiv_qr.obj" -@erase "$(INTDIR)\mpz\tdiv_qr_ui.obj" -@erase "$(INTDIR)\mpz\tdiv_r.obj" -@erase "$(INTDIR)\mpz\tdiv_r_2exp.obj" -@erase "$(INTDIR)\mpz\tdiv_r_ui.obj" -@erase "$(INTDIR)\mpz\tdiv_ui.obj" -@erase "$(INTDIR)\mpz\tstbit.obj" -@erase "$(INTDIR)\mpz\ui_pow_ui.obj" -@erase "$(INTDIR)\mpz\urandomb.obj" -@erase "$(INTDIR)\mpz\urandomm.obj" -@erase "$(INTDIR)\mpz\xor.obj" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" "$(INTDIR)" : if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)" if not exist "$(INTDIR)\mpf" mkdir "$(INTDIR)\mpf" if not exist "$(INTDIR)\mpn" mkdir "$(INTDIR)\mpn" if not exist "$(INTDIR)\mpq" mkdir "$(INTDIR)\mpq" if not exist "$(INTDIR)\mpz" mkdir "$(INTDIR)\mpz" CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"$(INTDIR)\gmp.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gmp.bsc" BSC32_SBRS= \ LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"../lib/gmpDebug.lib" LIB32_OBJS= \ "$(INTDIR)\mpf\abs.obj" \ "$(INTDIR)\mpq\abs.obj" \ "$(INTDIR)\mpz\abs.obj" \ "$(INTDIR)\mpf\add.obj" \ "$(INTDIR)\mpn\add.obj" \ "$(INTDIR)\mpz\add.obj" \ "$(INTDIR)\mpn\add_1.obj" \ "$(INTDIR)\mpn\add_n.obj" \ "$(INTDIR)\mpf\add_ui.obj" \ "$(INTDIR)\mpz\add_ui.obj" \ "$(INTDIR)\mpn\addmul_1.obj" \ "$(INTDIR)\mpz\and.obj" \ "$(INTDIR)\mpq\aors.obj" \ "$(INTDIR)\mpz\aorsmul.obj" \ "$(INTDIR)\mpz\aorsmul_i.obj" \ "$(INTDIR)\mpz\array_init.obj" \ "$(INTDIR)\asprintf.obj" \ "$(INTDIR)\asprntffuns.obj" \ "$(INTDIR)\assert.obj" \ "$(INTDIR)\mpn\bdivmod.obj" \ "$(INTDIR)\mpz\bin_ui.obj" \ "$(INTDIR)\mpz\bin_uiui.obj" \ "$(INTDIR)\mpq\canonicalize.obj" \ "$(INTDIR)\mpz\cdiv_q.obj" \ "$(INTDIR)\mpz\cdiv_q_ui.obj" \ "$(INTDIR)\mpz\cdiv_qr.obj" \ "$(INTDIR)\mpz\cdiv_qr_ui.obj" \ "$(INTDIR)\mpz\cdiv_r.obj" \ "$(INTDIR)\mpz\cdiv_r_ui.obj" \ "$(INTDIR)\mpz\cdiv_ui.obj" \ "$(INTDIR)\mpf\ceilfloor.obj" \ "$(INTDIR)\mpz\cfdiv_q_2exp.obj" \ "$(INTDIR)\mpz\cfdiv_r_2exp.obj" \ "$(INTDIR)\mpf\clear.obj" \ "$(INTDIR)\mpq\clear.obj" \ "$(INTDIR)\mpz\clear.obj" \ "$(INTDIR)\mpz\clrbit.obj" \ "$(INTDIR)\mpf\cmp.obj" \ "$(INTDIR)\mpn\cmp.obj" \ "$(INTDIR)\mpq\cmp.obj" \ "$(INTDIR)\mpz\cmp.obj" \ "$(INTDIR)\mpf\cmp_d.obj" \ "$(INTDIR)\mpz\cmp_d.obj" \ "$(INTDIR)\mpf\cmp_si.obj" \ "$(INTDIR)\mpq\cmp_si.obj" \ "$(INTDIR)\mpz\cmp_si.obj" \ "$(INTDIR)\mpf\cmp_ui.obj" \ "$(INTDIR)\mpq\cmp_ui.obj" \ "$(INTDIR)\mpz\cmp_ui.obj" \ "$(INTDIR)\mpz\cmpabs.obj" \ "$(INTDIR)\mpz\cmpabs_d.obj" \ "$(INTDIR)\mpz\cmpabs_ui.obj" \ "$(INTDIR)\mpz\com.obj" \ "$(INTDIR)\compat.obj" \ "$(INTDIR)\mpz\cong.obj" \ "$(INTDIR)\mpz\cong_2exp.obj" \ "$(INTDIR)\mpz\cong_ui.obj" \ "$(INTDIR)\mpn\dc_divrem_n.obj" \ "$(INTDIR)\mpf\div.obj" \ "$(INTDIR)\mpq\div.obj" \ "$(INTDIR)\mpf\div_2exp.obj" \ "$(INTDIR)\mpf\div_ui.obj" \ "$(INTDIR)\mpn\dive_1.obj" \ "$(INTDIR)\mpz\dive_ui.obj" \ "$(INTDIR)\mpn\diveby3.obj" \ "$(INTDIR)\mpz\divegcd.obj" \ "$(INTDIR)\mpz\divexact.obj" \ "$(INTDIR)\mpn\divis.obj" \ "$(INTDIR)\mpz\divis.obj" \ "$(INTDIR)\mpz\divis_2exp.obj" \ "$(INTDIR)\mpz\divis_ui.obj" \ "$(INTDIR)\mpn\divrem.obj" \ "$(INTDIR)\mpn\divrem_1.obj" \ "$(INTDIR)\mpn\divrem_2.obj" \ "$(INTDIR)\doprnt.obj" \ "$(INTDIR)\doprntf.obj" \ "$(INTDIR)\doprnti.obj" \ "$(INTDIR)\doscan.obj" \ "$(INTDIR)\mpf\dump.obj" \ "$(INTDIR)\mpn\dump.obj" \ "$(INTDIR)\mpz\dump.obj" \ "$(INTDIR)\mpf\eq.obj" \ "$(INTDIR)\mpq\equal.obj" \ "$(INTDIR)\errno.obj" \ "$(INTDIR)\extract-dbl.obj" \ "$(INTDIR)\mpz\fac_ui.obj" \ "$(INTDIR)\mpz\fdiv_q.obj" \ "$(INTDIR)\mpz\fdiv_q_ui.obj" \ "$(INTDIR)\mpz\fdiv_qr.obj" \ "$(INTDIR)\mpz\fdiv_qr_ui.obj" \ "$(INTDIR)\mpz\fdiv_r.obj" \ "$(INTDIR)\mpz\fdiv_r_ui.obj" \ "$(INTDIR)\mpz\fdiv_ui.obj" \ "$(INTDIR)\mpn\fib2_ui.obj" \ "$(INTDIR)\mpz\fib2_ui.obj" \ "$(INTDIR)\mpz\fib_ui.obj" \ "$(INTDIR)\mpf\fits_sint.obj" \ "$(INTDIR)\mpz\fits_sint.obj" \ "$(INTDIR)\mpf\fits_slong.obj" \ "$(INTDIR)\mpz\fits_slong.obj" \ "$(INTDIR)\mpf\fits_sshort.obj" \ "$(INTDIR)\mpz\fits_sshort.obj" \ "$(INTDIR)\mpf\fits_uint.obj" \ "$(INTDIR)\mpz\fits_uint.obj" \ "$(INTDIR)\mpf\fits_ulong.obj" \ "$(INTDIR)\mpz\fits_ulong.obj" \ "$(INTDIR)\mpf\fits_ushort.obj" \ "$(INTDIR)\mpz\fits_ushort.obj" \ "$(INTDIR)\fprintf.obj" \ "$(INTDIR)\fscanf.obj" \ "$(INTDIR)\fscanffuns.obj" \ "$(INTDIR)\mpn\gcd.obj" \ "$(INTDIR)\mpz\gcd.obj" \ "$(INTDIR)\mpn\gcd_1.obj" \ "$(INTDIR)\mpz\gcd_ui.obj" \ "$(INTDIR)\mpn\gcdext.obj" \ "$(INTDIR)\mpz\gcdext.obj" \ "$(INTDIR)\mpf\get_d.obj" \ "$(INTDIR)\mpq\get_d.obj" \ "$(INTDIR)\mpz\get_d.obj" \ "$(INTDIR)\mpf\get_d_2exp.obj" \ "$(INTDIR)\mpz\get_d_2exp.obj" \ "$(INTDIR)\mpq\get_den.obj" \ "$(INTDIR)\mpf\get_dfl_prec.obj" \ "$(INTDIR)\mpq\get_num.obj" \ "$(INTDIR)\mpf\get_prc.obj" \ "$(INTDIR)\mpf\get_si.obj" \ "$(INTDIR)\mpz\get_si.obj" \ "$(INTDIR)\mpf\get_str.obj" \ "$(INTDIR)\mpn\get_str.obj" \ "$(INTDIR)\mpq\get_str.obj" \ "$(INTDIR)\mpz\get_str.obj" \ "$(INTDIR)\mpf\get_ui.obj" \ "$(INTDIR)\mpz\get_ui.obj" \ "$(INTDIR)\mpz\getlimbn.obj" \ "$(INTDIR)\mpn\hamdist.obj" \ "$(INTDIR)\mpz\hamdist.obj" \ "$(INTDIR)\mpf\init.obj" \ "$(INTDIR)\mpq\init.obj" \ "$(INTDIR)\mpz\init.obj" \ "$(INTDIR)\mpf\init2.obj" \ "$(INTDIR)\mpz\init2.obj" \ "$(INTDIR)\mpz\inp_raw.obj" \ "$(INTDIR)\mpf\inp_str.obj" \ "$(INTDIR)\mpq\inp_str.obj" \ "$(INTDIR)\mpz\inp_str.obj" \ "$(INTDIR)\insert-dbl.obj" \ "$(INTDIR)\mpf\int_p.obj" \ "$(INTDIR)\mpq\inv.obj" \ "$(INTDIR)\mpz\invert.obj" \ "$(INTDIR)\mpz\ior.obj" \ "$(INTDIR)\mpf\iset.obj" \ "$(INTDIR)\mpz\iset.obj" \ "$(INTDIR)\mpf\iset_d.obj" \ "$(INTDIR)\mpz\iset_d.obj" \ "$(INTDIR)\mpf\iset_si.obj" \ "$(INTDIR)\mpz\iset_si.obj" \ "$(INTDIR)\mpf\iset_str.obj" \ "$(INTDIR)\mpz\iset_str.obj" \ "$(INTDIR)\mpf\iset_ui.obj" \ "$(INTDIR)\mpz\iset_ui.obj" \ "$(INTDIR)\mpn\jacbase.obj" \ "$(INTDIR)\mpz\jacobi.obj" \ "$(INTDIR)\mpz\kronsz.obj" \ "$(INTDIR)\mpz\kronuz.obj" \ "$(INTDIR)\mpz\kronzs.obj" \ "$(INTDIR)\mpz\kronzu.obj" \ "$(INTDIR)\mpz\lcm.obj" \ "$(INTDIR)\mpz\lcm_ui.obj" \ "$(INTDIR)\mpn\lshift.obj" \ "$(INTDIR)\mpz\lucnum2_ui.obj" \ "$(INTDIR)\mpz\lucnum_ui.obj" \ "$(INTDIR)\mpq\md_2exp.obj" \ "$(INTDIR)\memory.obj" \ "$(INTDIR)\mpz\millerrabin.obj" \ "$(INTDIR)\mpz\mod.obj" \ "$(INTDIR)\mpn\mod_1.obj" \ "$(INTDIR)\mpn\mod_34lsub1.obj" \ "$(INTDIR)\mpn\mode1o.obj" \ "$(INTDIR)\mpn\mp_bases.obj" \ "$(INTDIR)\mp_bpl.obj" \ "$(INTDIR)\mp_clz_tab.obj" \ "$(INTDIR)\mp_minv_tab.obj" \ "$(INTDIR)\mp_set_fns.obj" \ "$(INTDIR)\mpf\mul.obj" \ "$(INTDIR)\mpn\mul.obj" \ "$(INTDIR)\mpq\mul.obj" \ "$(INTDIR)\mpz\mul.obj" \ "$(INTDIR)\mpn\mul_1.obj" \ "$(INTDIR)\mpf\mul_2exp.obj" \ "$(INTDIR)\mpz\mul_2exp.obj" \ "$(INTDIR)\mpn\mul_basecase.obj" \ "$(INTDIR)\mpn\mul_fft.obj" \ "$(INTDIR)\mpn\mul_n.obj" \ "$(INTDIR)\mpz\mul_si.obj" \ "$(INTDIR)\mpf\mul_ui.obj" \ "$(INTDIR)\mpz\mul_ui.obj" \ "$(INTDIR)\mpz\n_pow_ui.obj" \ "$(INTDIR)\mpf\neg.obj" \ "$(INTDIR)\mpq\neg.obj" \ "$(INTDIR)\mpz\neg.obj" \ "$(INTDIR)\mpz\nextprime.obj" \ "$(INTDIR)\obprintf.obj" \ "$(INTDIR)\obprntffuns.obj" \ "$(INTDIR)\obvprintf.obj" \ "$(INTDIR)\mpz\out_raw.obj" \ "$(INTDIR)\mpf\out_str.obj" \ "$(INTDIR)\mpq\out_str.obj" \ "$(INTDIR)\mpz\out_str.obj" \ "$(INTDIR)\mpz\perfpow.obj" \ "$(INTDIR)\mpn\perfsqr.obj" \ "$(INTDIR)\mpz\perfsqr.obj" \ "$(INTDIR)\mpn\popcount.obj" \ "$(INTDIR)\mpz\popcount.obj" \ "$(INTDIR)\pow_1.obj" \ "$(INTDIR)\mpf\pow_ui.obj" \ "$(INTDIR)\mpz\pow_ui.obj" \ "$(INTDIR)\mpz\powm.obj" \ "$(INTDIR)\mpz\powm_ui.obj" \ "$(INTDIR)\mpz\pprime_p.obj" \ "$(INTDIR)\mpn\pre_divrem_1.obj" \ "$(INTDIR)\mpn\pre_mod_1.obj" \ "$(INTDIR)\printf.obj" \ "$(INTDIR)\printffuns.obj" \ "$(INTDIR)\rand.obj" \ "$(INTDIR)\randclr.obj" \ "$(INTDIR)\randdef.obj" \ "$(INTDIR)\randlc.obj" \ "$(INTDIR)\randlc2s.obj" \ "$(INTDIR)\randlc2x.obj" \ "$(INTDIR)\mpn\random.obj" \ "$(INTDIR)\mpz\random.obj" \ "$(INTDIR)\mpf\random2.obj" \ "$(INTDIR)\mpn\random2.obj" \ "$(INTDIR)\mpz\random2.obj" \ "$(INTDIR)\randraw.obj" \ "$(INTDIR)\rands.obj" \ "$(INTDIR)\randsd.obj" \ "$(INTDIR)\randsdui.obj" \ "$(INTDIR)\mpz\realloc.obj" \ "$(INTDIR)\mpz\realloc2.obj" \ "$(INTDIR)\mpf\reldiff.obj" \ "$(INTDIR)\mpz\remove.obj" \ "$(INTDIR)\repl-vsnprintf.obj" \ "$(INTDIR)\mpz\root.obj" \ "$(INTDIR)\mpz\rootrem.obj" \ "$(INTDIR)\mpz\rrandomb.obj" \ "$(INTDIR)\mpn\rshift.obj" \ "$(INTDIR)\mpn\sb_divrem_mn.obj" \ "$(INTDIR)\mpn\scan0.obj" \ "$(INTDIR)\mpz\scan0.obj" \ "$(INTDIR)\mpn\scan1.obj" \ "$(INTDIR)\mpz\scan1.obj" \ "$(INTDIR)\scanf.obj" \ "$(INTDIR)\mpf\set.obj" \ "$(INTDIR)\mpq\set.obj" \ "$(INTDIR)\mpz\set.obj" \ "$(INTDIR)\mpf\set_d.obj" \ "$(INTDIR)\mpq\set_d.obj" \ "$(INTDIR)\mpz\set_d.obj" \ "$(INTDIR)\mpq\set_den.obj" \ "$(INTDIR)\mpf\set_dfl_prec.obj" \ "$(INTDIR)\mpq\set_f.obj" \ "$(INTDIR)\mpz\set_f.obj" \ "$(INTDIR)\mpq\set_num.obj" \ "$(INTDIR)\mpf\set_prc.obj" \ "$(INTDIR)\mpf\set_prc_raw.obj" \ "$(INTDIR)\mpf\set_q.obj" \ "$(INTDIR)\mpz\set_q.obj" \ "$(INTDIR)\mpf\set_si.obj" \ "$(INTDIR)\mpq\set_si.obj" \ "$(INTDIR)\mpz\set_si.obj" \ "$(INTDIR)\mpf\set_str.obj" \ "$(INTDIR)\mpn\set_str.obj" \ "$(INTDIR)\mpq\set_str.obj" \ "$(INTDIR)\mpz\set_str.obj" \ "$(INTDIR)\mpf\set_ui.obj" \ "$(INTDIR)\mpq\set_ui.obj" \ "$(INTDIR)\mpz\set_ui.obj" \ "$(INTDIR)\mpf\set_z.obj" \ "$(INTDIR)\mpq\set_z.obj" \ "$(INTDIR)\mpz\setbit.obj" \ "$(INTDIR)\mpf\size.obj" \ "$(INTDIR)\mpz\size.obj" \ "$(INTDIR)\mpz\sizeinbase.obj" \ "$(INTDIR)\snprintf.obj" \ "$(INTDIR)\snprntffuns.obj" \ "$(INTDIR)\sprintf.obj" \ "$(INTDIR)\sprintffuns.obj" \ "$(INTDIR)\mpn\sqr_basecase.obj" \ "$(INTDIR)\mpf\sqrt.obj" \ "$(INTDIR)\mpz\sqrt.obj" \ "$(INTDIR)\mpf\sqrt_ui.obj" \ "$(INTDIR)\mpn\sqrtrem.obj" \ "$(INTDIR)\mpz\sqrtrem.obj" \ "$(INTDIR)\sscanf.obj" \ "$(INTDIR)\sscanffuns.obj" \ "$(INTDIR)\mpf\sub.obj" \ "$(INTDIR)\mpn\sub.obj" \ "$(INTDIR)\mpz\sub.obj" \ "$(INTDIR)\mpn\sub_1.obj" \ "$(INTDIR)\mpn\sub_n.obj" \ "$(INTDIR)\mpf\sub_ui.obj" \ "$(INTDIR)\mpz\sub_ui.obj" \ "$(INTDIR)\mpn\submul_1.obj" \ "$(INTDIR)\mpf\swap.obj" \ "$(INTDIR)\mpq\swap.obj" \ "$(INTDIR)\mpz\swap.obj" \ "$(INTDIR)\mpz\tdiv_q.obj" \ "$(INTDIR)\mpz\tdiv_q_2exp.obj" \ "$(INTDIR)\mpz\tdiv_q_ui.obj" \ "$(INTDIR)\mpn\tdiv_qr.obj" \ "$(INTDIR)\mpz\tdiv_qr.obj" \ "$(INTDIR)\mpz\tdiv_qr_ui.obj" \ "$(INTDIR)\mpz\tdiv_r.obj" \ "$(INTDIR)\mpz\tdiv_r_2exp.obj" \ "$(INTDIR)\mpz\tdiv_r_ui.obj" \ "$(INTDIR)\mpz\tdiv_ui.obj" \ "$(INTDIR)\mpf\trunc.obj" \ "$(INTDIR)\mpz\tstbit.obj" \ "$(INTDIR)\mpf\ui_div.obj" \ "$(INTDIR)\mpz\ui_pow_ui.obj" \ "$(INTDIR)\mpf\ui_sub.obj" \ "$(INTDIR)\mpf\urandomb.obj" \ "$(INTDIR)\mpz\urandomb.obj" \ "$(INTDIR)\mpz\urandomm.obj" \ "$(INTDIR)\vasprintf.obj" \ "$(INTDIR)\version.obj" \ "$(INTDIR)\vfprintf.obj" \ "$(INTDIR)\vfscanf.obj" \ "$(INTDIR)\vprintf.obj" \ "$(INTDIR)\vscanf.obj" \ "$(INTDIR)\vsnprintf.obj" \ "$(INTDIR)\vsprintf.obj" \ "$(INTDIR)\vsscanf.obj" \ "$(INTDIR)\mpz\xor.obj" "$(OUTDIR)\gmpDebug.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("gmp.dep") !INCLUDE "gmp.dep" !ELSE !MESSAGE Warning: cannot find "gmp.dep" !ENDIF !ENDIF !IF "$(CFG)" == "gmp - Win32 Release" || "$(CFG)" == "gmp - Win32 Debug" SOURCE=.\mpf\abs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\abs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\abs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\abs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\abs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\abs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\abs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\abs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\abs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\add.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\add.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\add.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\add.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\add.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\add.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\add.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\add.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\add.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\add_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\add_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\add_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\add_n.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_add_n" /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\add_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_add_n" /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\add_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\add_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\add_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\add_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\add_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\add_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\add_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\addmul_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_addmul_1" /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\addmul_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_addmul_1" /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\addmul_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\and.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\and.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\and.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\aors.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\aors.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\aors.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\aorsmul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\aorsmul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\aorsmul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\aorsmul_i.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\aorsmul_i.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\aorsmul_i.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\array_init.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\array_init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\array_init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\asprintf.c "$(INTDIR)\asprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\asprntffuns.c "$(INTDIR)\asprntffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\assert.c "$(INTDIR)\assert.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpn\generic\bdivmod.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\bdivmod.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\bdivmod.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\bin_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\bin_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\bin_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\bin_uiui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\bin_uiui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\bin_uiui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\canonicalize.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\canonicalize.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\canonicalize.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_q_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_q_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_qr_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_qr_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_r.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_r.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_r_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_r_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cdiv_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cdiv_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\ceilfloor.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\ceilfloor.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\ceilfloor.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cfdiv_q_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cfdiv_q_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cfdiv_q_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cfdiv_r_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cfdiv_r_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cfdiv_r_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\clear.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\clear.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\clear.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\clear.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\clear.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\clear.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\clear.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\clear.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\clear.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\clrbit.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\clrbit.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\clrbit.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\cmp_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\cmp_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\cmp_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmp_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmp_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmp_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\cmp_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\cmp_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\cmp_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\cmp_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmp_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmp_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmp_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\cmp_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\cmp_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\cmp_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\cmp_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmp_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmp_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmp_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmpabs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmpabs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmpabs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmpabs_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmpabs_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmpabs_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cmpabs_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cmpabs_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cmpabs_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\com.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\com.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\com.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\compat.c "$(INTDIR)\compat.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpz\cong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cong_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cong_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cong_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\cong_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\cong_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\cong_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\dc_divrem_n.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\dc_divrem_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\dc_divrem_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\div.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\div.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\div.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\div.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\div.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\div.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\div_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\div_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\div_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\div_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\div_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\div_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\dive_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\dive_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\dive_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\dive_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\dive_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\dive_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\diveby3.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\diveby3.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\diveby3.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divegcd.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\divegcd.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\divegcd.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divexact.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\divexact.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\divexact.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\divis.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\divis.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\divis.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divis.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\divis.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\divis.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divis_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\divis_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\divis_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\divis_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\divis_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\divis_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\divrem.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\divrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\divrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\divrem_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\divrem_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\divrem_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\divrem_2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\divrem_2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\divrem_2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\doprnt.c "$(INTDIR)\doprnt.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\doprntf.c "$(INTDIR)\doprntf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\doprnti.c "$(INTDIR)\doprnti.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\doscan.c "$(INTDIR)\doscan.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpf\dump.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\dump.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\dump.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\dump.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\dump.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\dump.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\dump.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\dump.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\dump.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\eq.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\eq.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\eq.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\equal.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\equal.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\equal.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\errno.c "$(INTDIR)\errno.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=".\extract-dbl.c" "$(INTDIR)\extract-dbl.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpz\fac_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fac_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fac_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_q_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_q_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_qr_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_qr_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_r.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_r.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_r_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_r_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fdiv_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fdiv_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\fib2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\fib2_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\fib2_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fib2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fib2_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fib2_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fib_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fib_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fib_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_sint.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\fits_sint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\fits_sint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_sint.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fits_sint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fits_sint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_slong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\fits_slong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\fits_slong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_slong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fits_slong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fits_slong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_sshort.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\fits_sshort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\fits_sshort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_sshort.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fits_sshort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fits_sshort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_uint.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\fits_uint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\fits_uint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_uint.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fits_uint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fits_uint.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_ulong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\fits_ulong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\fits_ulong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_ulong.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fits_ulong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fits_ulong.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\fits_ushort.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\fits_ushort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\fits_ushort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\fits_ushort.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\fits_ushort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\fits_ushort.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\fprintf.c "$(INTDIR)\fprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\fscanf.c "$(INTDIR)\fscanf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\fscanffuns.c "$(INTDIR)\fscanffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpn\generic\gcd.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\gcd.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\gcd.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\gcd.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\gcd.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\gcd.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\gcd_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\gcd_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\gcd_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\gcd_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\gcd_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\gcd_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\gcdext.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\gcdext.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\gcdext.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\gcdext.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\gcdext.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\gcdext.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\get_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\get_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\get_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\get_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_d_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_d_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_d_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_d_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\get_d_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\get_d_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\get_den.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\get_den.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\get_den.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_dfl_prec.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_dfl_prec.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_dfl_prec.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\get_num.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\get_num.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\get_num.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_prc.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_prc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_prc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\get_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\get_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\get_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\get_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\get_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\get_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\get_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\get_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\get_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\getlimbn.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\getlimbn.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\getlimbn.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\hamdist.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\hamdist.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\hamdist.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\hamdist.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\hamdist.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\hamdist.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\init.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\init.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\init.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\init.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\init2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\init2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\init2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\init2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\init2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\init2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\inp_raw.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\inp_raw.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\inp_raw.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\inp_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\inp_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\inp_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\inp_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\inp_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\inp_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\inp_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=".\insert-dbl.c" "$(INTDIR)\insert-dbl.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpf\int_p.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\int_p.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\int_p.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\inv.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\inv.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\inv.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\invert.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\invert.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\invert.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\ior.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\ior.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\ior.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\iset.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\iset.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\iset.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\iset.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\iset_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\iset_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\iset_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\iset_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\iset_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\iset_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\iset_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\iset_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\iset_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\iset_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\iset_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\iset_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\iset_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\iset_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\iset_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\iset_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\iset_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\iset_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\jacbase.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\jacbase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\jacbase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\jacobi.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\jacobi.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\jacobi.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\kronsz.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\kronsz.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\kronsz.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\kronuz.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\kronuz.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\kronuz.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\kronzs.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\kronzs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\kronzs.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\kronzu.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\kronzu.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\kronzu.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\lcm.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\lcm.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\lcm.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\lcm_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\lcm_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\lcm_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\lshift.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\lshift.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\lshift.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\lucnum2_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\lucnum2_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\lucnum2_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\lucnum_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\lucnum_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\lucnum_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\md_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\md_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\md_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\memory.c "$(INTDIR)\memory.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpz\millerrabin.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\millerrabin.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\millerrabin.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mod.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\mod.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\mod.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mod_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mod_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mod_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mod_34lsub1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mod_34lsub1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mod_34lsub1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mode1o.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mode1o.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mode1o.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\mp_bases.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mp_bases.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mp_bases.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mp_bpl.c "$(INTDIR)\mp_bpl.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mp_clz_tab.c "$(INTDIR)\mp_clz_tab.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mp_minv_tab.c "$(INTDIR)\mp_minv_tab.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mp_set_fns.c "$(INTDIR)\mp_set_fns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpf\mul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\mul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mul.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\mul.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mul_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mul_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\mul_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\mul_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\mul_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mul_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\mul_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\mul_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul_basecase.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mul_basecase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mul_basecase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul_fft.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mul_fft.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mul_fft.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\mul_n.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\mul_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\mul_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mul_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\mul_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\mul_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\mul_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\mul_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\mul_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\mul_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\mul_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\mul_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\n_pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\n_pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\n_pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\neg.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\neg.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\neg.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\neg.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\neg.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\neg.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\neg.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\neg.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\neg.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\nextprime.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\nextprime.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\nextprime.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\obprintf.c "$(INTDIR)\obprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\obprntffuns.c "$(INTDIR)\obprntffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\obvprintf.c "$(INTDIR)\obvprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpz\out_raw.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\out_raw.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\out_raw.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\out_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\out_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\out_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\out_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\out_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\out_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\out_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\perfpow.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\perfpow.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\perfpow.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\perfsqr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\perfsqr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\perfsqr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\perfsqr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\perfsqr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\perfsqr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\popcount.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\popcount.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\popcount.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\popcount.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\popcount.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\popcount.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\pow_1.c "$(INTDIR)\pow_1.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpf\pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\powm.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\powm.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\powm.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\powm_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\powm_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\powm_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\pprime_p.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\pprime_p.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\pprime_p.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\pre_divrem_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\pre_divrem_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\pre_divrem_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\pre_mod_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\pre_mod_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\pre_mod_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\printf.c "$(INTDIR)\printf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\printffuns.c "$(INTDIR)\printffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\rand.c "$(INTDIR)\rand.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randclr.c "$(INTDIR)\randclr.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randdef.c "$(INTDIR)\randdef.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randlc.c "$(INTDIR)\randlc.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randlc2s.c "$(INTDIR)\randlc2s.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randlc2x.c "$(INTDIR)\randlc2x.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpn\generic\random.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\random.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\random.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\random.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\random.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\random.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\random2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\random2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\random2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\random2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\random2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\random2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\random2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\random2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\random2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\randraw.c "$(INTDIR)\randraw.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\rands.c "$(INTDIR)\rands.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randsd.c "$(INTDIR)\randsd.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\randsdui.c "$(INTDIR)\randsdui.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\mpz\realloc.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\realloc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\realloc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\realloc2.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\realloc2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\realloc2.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\reldiff.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\reldiff.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\reldiff.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\remove.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\remove.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\remove.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=".\printf\repl-vsnprintf.c" "$(INTDIR)\repl-vsnprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpz\root.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\root.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\root.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\rootrem.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\rootrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\rootrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\rrandomb.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\rrandomb.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\rrandomb.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\rshift.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\rshift.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\rshift.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sb_divrem_mn.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\sb_divrem_mn.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\sb_divrem_mn.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\scan0.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\scan0.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\scan0.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\scan0.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\scan0.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\scan0.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\scan1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\scan1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\scan1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\scan1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\scan1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\scan1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\scanf\scanf.c "$(INTDIR)\scanf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpf\set.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_d.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set_d.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_den.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_den.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_den.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_dfl_prec.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_dfl_prec.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_dfl_prec.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_f.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_f.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_f.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_f.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set_f.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set_f.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_num.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_num.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_num.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_prc.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_prc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_prc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_prc_raw.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_prc_raw.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_prc_raw.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_si.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set_si.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_str.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set_str.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\set_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\set_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\set_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\set_z.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\set_z.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\set_z.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\set_z.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\set_z.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\set_z.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\setbit.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\setbit.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\setbit.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\size.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\size.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\size.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\size.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\size.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\size.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sizeinbase.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\sizeinbase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\sizeinbase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\snprintf.c "$(INTDIR)\snprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\snprntffuns.c "$(INTDIR)\snprntffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\sprintf.c "$(INTDIR)\sprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\sprintffuns.c "$(INTDIR)\sprintffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpn\generic\sqr_basecase.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\sqr_basecase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\sqr_basecase.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\sqrt.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\sqrt.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\sqrt.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sqrt.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\sqrt.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\sqrt.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\sqrt_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\sqrt_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\sqrt_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sqrtrem.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\sqrtrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\sqrtrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sqrtrem.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\sqrtrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\sqrtrem.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\scanf\sscanf.c "$(INTDIR)\sscanf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\sscanffuns.c "$(INTDIR)\sscanffuns.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpf\sub.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sub.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sub.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sub_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\sub_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\sub_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\sub_n.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_sub_n" /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\sub_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_sub_n" /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\sub_n.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\sub_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\sub_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\sub_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\sub_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\sub_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\sub_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\submul_1.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_submul_1" /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\submul_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /D "OPERATION_submul_1" /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\submul_1.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\swap.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\swap.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\swap.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpq\swap.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpq/" /Fd"Release\mpq/" /FD /c "$(INTDIR)\mpq\swap.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpq/" /Fd"Debug\mpq/" /FD /GZ /c "$(INTDIR)\mpq\swap.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\swap.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\swap.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\swap.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_q.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_q.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_q_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_q_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_q_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_q_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_q_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_q_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpn\generic\tdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpn/" /Fd"Release\mpn/" /FD /c "$(INTDIR)\mpn\tdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpn/" /Fd"Debug\mpn/" /FD /GZ /c "$(INTDIR)\mpn\tdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_qr.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_qr.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_qr_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_qr_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_qr_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_r.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_r.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_r.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_r_2exp.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_r_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_r_2exp.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_r_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_r_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_r_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tdiv_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tdiv_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tdiv_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\trunc.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\trunc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\trunc.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\tstbit.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\tstbit.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\tstbit.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\ui_div.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\ui_div.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\ui_div.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\ui_pow_ui.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\ui_pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\ui_pow_ui.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\ui_sub.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\ui_sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\ui_sub.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpf\urandomb.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpf/" /Fd"Release\mpf/" /FD /c "$(INTDIR)\mpf\urandomb.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpf/" /Fd"Debug\mpf/" /FD /GZ /c "$(INTDIR)\mpf\urandomb.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\urandomb.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\urandomb.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\urandomb.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\mpz\urandomm.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\urandomm.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\urandomm.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF SOURCE=.\printf\vasprintf.c "$(INTDIR)\vasprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\version.c "$(INTDIR)\version.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" SOURCE=.\printf\vfprintf.c "$(INTDIR)\vfprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\vfscanf.c "$(INTDIR)\vfscanf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\vprintf.c "$(INTDIR)\vprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\vscanf.c "$(INTDIR)\vscanf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\vsnprintf.c "$(INTDIR)\vsnprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\printf\vsprintf.c "$(INTDIR)\vsprintf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\scanf\vsscanf.c "$(INTDIR)\vsscanf.obj" : "$(INTDIR)" $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=.\mpz\xor.c !IF "$(CFG)" == "gmp - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Release/gmp.pch" /YX /Fo"Release\mpz/" /Fd"Release\mpz/" /FD /c "$(INTDIR)\mpz\xor.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "gmp - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D __STDC__=0 /D "HAVE_CONFIG_H" /D quad_t=__int64 /D intmax_t=__int64 /Fp"Debug/gmp.pch" /YX /Fo"Debug\mpz/" /Fd"Debug\mpz/" /FD /GZ /c "$(INTDIR)\mpz\xor.obj" : "$(INTDIR)" $(SOURCE) $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF !ENDIF core++-1.7/win32/patches/gmp-4.1-static/gmp.vcproj0100755000175000001440000066756310017717347021003 0ustar joachimusers core++-1.7/win32/patches/gmp-4.1-static/mp.h0100644000175000001440000001305107520341413017516 0ustar joachimusers/* mp-h.in -- Definitions for the GNU multiple precision library -*-mode:c-*- BSD mp compatible functions. Copyright 1991, 1993, 1994, 1995, 1996, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU MP Library. The GNU MP Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU MP Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MP Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __MP_H__ /* The following (everything under ifndef __GNU_MP__) must be identical in gmp.h and mp.h to allow both to be included in an application or during the library build. Use the t-gmp-mp-h.pl script to check. */ #ifndef __GNU_MP__ #define __GNU_MP__ 4 #define __need_size_t /* tell gcc stddef.h we only want size_t */ #if defined (__cplusplus) #include /* for size_t */ #else #include /* for size_t */ #endif #undef __need_size_t /* The following instantiated by configure, for internal use only */ #if ! __GMP_WITHIN_CONFIGURE /* #undef _LONG_LONG_LIMB */ #define __GMP_LIBGMP_DLL 0 #endif #if defined (__STDC__) \ || defined (__cplusplus) \ || defined (_AIX) \ || defined (__DECC) \ || (defined (__mips) && defined (_SYSTYPE_SVR4)) \ || defined (_MSC_VER) \ || defined (_WIN32) #define __GMP_HAVE_CONST 1 #define __GMP_HAVE_PROTOTYPES 1 #define __GMP_HAVE_TOKEN_PASTE 1 #else #define __GMP_HAVE_CONST 0 #define __GMP_HAVE_PROTOTYPES 0 #define __GMP_HAVE_TOKEN_PASTE 0 #endif #if __GMP_HAVE_CONST #define __gmp_const const #define __gmp_signed signed #else #define __gmp_const #define __gmp_signed #endif #if defined (__GNUC__) || defined (_MSC_VER) || defined (__BORLANDC__) #define __GMP_DECLSPEC_EXPORT __declspec(dllexport) #define __GMP_DECLSPEC_IMPORT __declspec(dllimport) #endif #ifdef __WATCOMC__ #define __GMP_DECLSPEC_EXPORT __export #define __GMP_DECLSPEC_IMPORT __import #endif #ifdef __IBMC__ #define __GMP_DECLSPEC_EXPORT _Export #define __GMP_DECLSPEC_IMPORT _Import #endif #if __GMP_LIBGMP_DLL #if __GMP_WITHIN_GMP #define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT #else #define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT #endif #else #define __GMP_DECLSPEC #endif #ifdef _SHORT_LIMB typedef unsigned int mp_limb_t; typedef int mp_limb_signed_t; #else #ifdef _LONG_LONG_LIMB typedef unsigned long long int mp_limb_t; typedef long long int mp_limb_signed_t; #else typedef unsigned long int mp_limb_t; typedef long int mp_limb_signed_t; #endif #endif typedef mp_limb_t * mp_ptr; typedef __gmp_const mp_limb_t * mp_srcptr; #if defined (_CRAY) && ! defined (_CRAYMPP) /* plain `int' is much faster (48 bits) */ #define __GMP_MP_SIZE_T_INT 1 typedef int mp_size_t; typedef int mp_exp_t; #else #define __GMP_MP_SIZE_T_INT 0 typedef long int mp_size_t; typedef long int mp_exp_t; #endif typedef struct { int _mp_alloc; /* Number of *limbs* allocated and pointed to by the _mp_d field. */ int _mp_size; /* abs(_mp_size) is the number of limbs the last field points to. If _mp_size is negative this is a negative number. */ mp_limb_t *_mp_d; /* Pointer to the limbs. */ } __mpz_struct; #endif /* __GNU_MP__ */ /* User-visible types. */ typedef __mpz_struct MINT; #if __GMP_HAVE_PROTOTYPES #define __GMP_PROTO(x) x #else #define __GMP_PROTO(x) () #endif #if defined (__cplusplus) extern "C" { #endif #define mp_set_memory_functions __gmp_set_memory_functions __GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t), void *(*) (void *, size_t, size_t), void (*) (void *, size_t))); __GMP_DECLSPEC MINT *itom __GMP_PROTO ((signed short int)); __GMP_DECLSPEC MINT *xtom __GMP_PROTO ((const char *)); __GMP_DECLSPEC void move __GMP_PROTO ((const MINT *, MINT *)); __GMP_DECLSPEC void madd __GMP_PROTO ((const MINT *, const MINT *, MINT *)); __GMP_DECLSPEC void msub __GMP_PROTO ((const MINT *, const MINT *, MINT *)); __GMP_DECLSPEC void mult __GMP_PROTO ((const MINT *, const MINT *, MINT *)); __GMP_DECLSPEC void mdiv __GMP_PROTO ((const MINT *, const MINT *, MINT *, MINT *)); __GMP_DECLSPEC void sdiv __GMP_PROTO ((const MINT *, signed short int, MINT *, signed short int *)); __GMP_DECLSPEC void msqrt __GMP_PROTO ((const MINT *, MINT *, MINT *)); __GMP_DECLSPEC void pow __GMP_PROTO ((const MINT *, const MINT *, const MINT *, MINT *)); __GMP_DECLSPEC void rpow __GMP_PROTO ((const MINT *, signed short int, MINT *)); __GMP_DECLSPEC void gcd __GMP_PROTO ((const MINT *, const MINT *, MINT *)); __GMP_DECLSPEC int mcmp __GMP_PROTO ((const MINT *, const MINT *)); __GMP_DECLSPEC void min __GMP_PROTO ((MINT *)); __GMP_DECLSPEC void mout __GMP_PROTO ((const MINT *)); __GMP_DECLSPEC char *mtox __GMP_PROTO ((const MINT *)); __GMP_DECLSPEC void mfree __GMP_PROTO ((MINT *)); #if defined (__cplusplus) } #endif #define __MP_H__ #endif /* __MP_H__ */ core++-1.7/win32/progs/0040755000175000001440000000000010147210064014063 5ustar joachimuserscore++-1.7/win32/progs/pi/0040755000175000001440000000000010147210064014473 5ustar joachimuserscore++-1.7/win32/progs/pi/brent.dsp0100644000175000001440000001054307437361202016326 0ustar joachimusers# Microsoft Developer Studio Project File - Name="brent" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=brent - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "brent.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "brent.mak" CFG="brent - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "brent - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "brent - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "brent - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "brent - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "brent___Win32_Debug" # PROP BASE Intermediate_Dir "brent___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "brent - Win32 Release" # Name "brent - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\pi\brent.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/pi/brent.mak0100644000175000001440000001032207437361202016303 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on brent.dsp !IF "$(CFG)" == "" CFG=brent - Win32 Debug !MESSAGE No configuration specified. Defaulting to brent - Win32 Debug. !ENDIF !IF "$(CFG)" != "brent - Win32 Release" && "$(CFG)" != "brent - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "brent.mak" CFG="brent - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "brent - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "brent - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "brent - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\brent.exe" CLEAN : -@erase "$(INTDIR)\brent.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\brent.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\brent.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\brent.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\brent.pdb" /machine:I386 /out:"$(OUTDIR)\brent.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\brent.obj" "$(OUTDIR)\brent.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "brent - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\brent.exe" CLEAN : -@erase "$(INTDIR)\brent.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\brent.exe" -@erase "$(OUTDIR)\brent.ilk" -@erase "$(OUTDIR)\brent.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\brent.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\brent.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\brent.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\brent.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\brent.obj" "$(OUTDIR)\brent.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("brent.dep") !INCLUDE "brent.dep" !ELSE !MESSAGE Warning: cannot find "brent.dep" !ENDIF !ENDIF !IF "$(CFG)" == "brent - Win32 Release" || "$(CFG)" == "brent - Win32 Debug" SOURCE=..\..\..\progs\pi\brent.cpp "$(INTDIR)\brent.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/pi/pi.dsp0100644000175000001440000001044307437361202015623 0ustar joachimusers# Microsoft Developer Studio Project File - Name="pi" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=pi - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "pi.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pi.mak" CFG="pi - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pi - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "pi - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pi - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "pi - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "pi - Win32 Release" # Name "pi - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\pi\pi.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/pi/pi.dsw0100644000175000001440000000206207437361202015630 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "brent"=.\brent.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "pi"=.\pi.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "pi2"=.\pi2.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "pi3"=.\pi3.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/pi/pi.mak0100644000175000001440000001014007437361202015577 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on pi.dsp !IF "$(CFG)" == "" CFG=pi - Win32 Debug !MESSAGE No configuration specified. Defaulting to pi - Win32 Debug. !ENDIF !IF "$(CFG)" != "pi - Win32 Release" && "$(CFG)" != "pi - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pi.mak" CFG="pi - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pi - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "pi - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pi - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\pi.exe" CLEAN : -@erase "$(INTDIR)\pi.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\pi.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pi.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pi.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\pi.pdb" /machine:I386 /out:"$(OUTDIR)\pi.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pi.obj" "$(OUTDIR)\pi.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "pi - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\pi.exe" CLEAN : -@erase "$(INTDIR)\pi.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\pi.exe" -@erase "$(OUTDIR)\pi.ilk" -@erase "$(OUTDIR)\pi.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pi.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pi.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\pi.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\pi.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pi.obj" "$(OUTDIR)\pi.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("pi.dep") !INCLUDE "pi.dep" !ELSE !MESSAGE Warning: cannot find "pi.dep" !ENDIF !ENDIF !IF "$(CFG)" == "pi - Win32 Release" || "$(CFG)" == "pi - Win32 Debug" SOURCE=..\..\..\progs\pi\pi.cpp "$(INTDIR)\pi.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/pi/pi2.dsp0100644000175000001440000001050707437361202015706 0ustar joachimusers# Microsoft Developer Studio Project File - Name="pi2" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=pi2 - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "pi2.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pi2.mak" CFG="pi2 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pi2 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "pi2 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pi2 - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "pi2 - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "pi2___Win32_Debug" # PROP BASE Intermediate_Dir "pi2___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "pi2 - Win32 Release" # Name "pi2 - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\pi\pi2.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/pi/pi2.mak0100644000175000001440000001020607437361202015664 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on pi2.dsp !IF "$(CFG)" == "" CFG=pi2 - Win32 Debug !MESSAGE No configuration specified. Defaulting to pi2 - Win32 Debug. !ENDIF !IF "$(CFG)" != "pi2 - Win32 Release" && "$(CFG)" != "pi2 - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pi2.mak" CFG="pi2 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pi2 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "pi2 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pi2 - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\pi2.exe" CLEAN : -@erase "$(INTDIR)\pi2.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\pi2.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pi2.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pi2.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\pi2.pdb" /machine:I386 /out:"$(OUTDIR)\pi2.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pi2.obj" "$(OUTDIR)\pi2.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "pi2 - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\pi2.exe" CLEAN : -@erase "$(INTDIR)\pi2.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\pi2.exe" -@erase "$(OUTDIR)\pi2.ilk" -@erase "$(OUTDIR)\pi2.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pi2.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pi2.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\pi2.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\pi2.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pi2.obj" "$(OUTDIR)\pi2.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("pi2.dep") !INCLUDE "pi2.dep" !ELSE !MESSAGE Warning: cannot find "pi2.dep" !ENDIF !ENDIF !IF "$(CFG)" == "pi2 - Win32 Release" || "$(CFG)" == "pi2 - Win32 Debug" SOURCE=..\..\..\progs\pi\pi2.cpp "$(INTDIR)\pi2.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/pi/pi3.dsp0100644000175000001440000001050707437361202015707 0ustar joachimusers# Microsoft Developer Studio Project File - Name="pi3" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=pi3 - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "pi3.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pi3.mak" CFG="pi3 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pi3 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "pi3 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pi3 - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "pi3 - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "pi3___Win32_Debug" # PROP BASE Intermediate_Dir "pi3___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "pi3 - Win32 Release" # Name "pi3 - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\pi\pi3.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/pi/pi3.mak0100644000175000001440000001020607437361202015665 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on pi3.dsp !IF "$(CFG)" == "" CFG=pi3 - Win32 Debug !MESSAGE No configuration specified. Defaulting to pi3 - Win32 Debug. !ENDIF !IF "$(CFG)" != "pi3 - Win32 Release" && "$(CFG)" != "pi3 - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pi3.mak" CFG="pi3 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pi3 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "pi3 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pi3 - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\pi3.exe" CLEAN : -@erase "$(INTDIR)\pi3.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\pi3.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pi3.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pi3.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\pi3.pdb" /machine:I386 /out:"$(OUTDIR)\pi3.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pi3.obj" "$(OUTDIR)\pi3.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "pi3 - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\pi3.exe" CLEAN : -@erase "$(INTDIR)\pi3.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\pi3.exe" -@erase "$(OUTDIR)\pi3.ilk" -@erase "$(OUTDIR)\pi3.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pi3.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pi3.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\pi3.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\pi3.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pi3.obj" "$(OUTDIR)\pi3.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("pi3.dep") !INCLUDE "pi3.dep" !ELSE !MESSAGE Warning: cannot find "pi3.dep" !ENDIF !ENDIF !IF "$(CFG)" == "pi3 - Win32 Release" || "$(CFG)" == "pi3 - Win32 Debug" SOURCE=..\..\..\progs\pi\pi3.cpp "$(INTDIR)\pi3.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/Makefile0100644000175000001440000000125707437361201015535 0ustar joachimusers# A simple Makefile for clean files under visual c++ allprogs=bareiss \ chull \ chullGraham \ compare \ delaunay \ ieee \ fileIO \ gaussian \ generic \ geom2d \ geom3d \ heron \ kahan \ pentagon \ pi \ prover \ nestedSqrt \ sumOfSqrts \ testFilter \ testIdent \ testIO all: clean: clean-addition @for p in $(allprogs); do \ (echo $$p; \ cd $$p; \ rm -rf Debug* Release* *.ncb *.opt *.plg *.positions; \ cd ..;) \ done clean-addition: cd fortune; \ rm -rf *.ncb *.opt *.plg *.positions; \ cd pred; \ rm -rf Debug* Release* *.ncb *.opt *.plg *.positions; \ cd ../vor; \ rm -rf Debug* Release* *.ncb *.opt *.plg *.positions; \ cd ../..; core++-1.7/win32/progs/bareiss/0040755000175000001440000000000010147210064015513 5ustar joachimuserscore++-1.7/win32/progs/bareiss/bareiss.dsp0100644000175000001440000001100707437361201017657 0ustar joachimusers# Microsoft Developer Studio Project File - Name="bareiss" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=bareiss - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "bareiss.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "bareiss.mak" CFG="bareiss - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "bareiss - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "bareiss - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "bareiss - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "bareiss - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "bareiss - Win32 Release" # Name "bareiss - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\bareiss\bareiss.cpp !IF "$(CFG)" == "bareiss - Win32 Release" !ELSEIF "$(CFG)" == "bareiss - Win32 Debug" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/bareiss/bareiss.dsw0100644000175000001440000000103107437361201017662 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "bareiss"=.\bareiss.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/bareiss/bareiss.mak0100644000175000001440000001162707437361201017651 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on bareiss.dsp !IF "$(CFG)" == "" CFG=bareiss - Win32 Debug !MESSAGE No configuration specified. Defaulting to bareiss - Win32 Debug. !ENDIF !IF "$(CFG)" != "bareiss - Win32 Release" && "$(CFG)" != "bareiss - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "bareiss.mak" CFG="bareiss - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "bareiss - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "bareiss - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "bareiss - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\bareiss.exe" CLEAN : -@erase "$(INTDIR)\bareiss.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\bareiss.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\bareiss.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\bareiss.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\bareiss.pdb" /machine:I386 /out:"$(OUTDIR)\bareiss.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\bareiss.obj" "$(OUTDIR)\bareiss.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "bareiss - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\bareiss.exe" CLEAN : -@erase "$(INTDIR)\bareiss.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\bareiss.exe" -@erase "$(OUTDIR)\bareiss.ilk" -@erase "$(OUTDIR)\bareiss.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\bareiss.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\bareiss.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\bareiss.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\bareiss.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\bareiss.obj" "$(OUTDIR)\bareiss.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("bareiss.dep") !INCLUDE "bareiss.dep" !ELSE !MESSAGE Warning: cannot find "bareiss.dep" !ENDIF !ENDIF !IF "$(CFG)" == "bareiss - Win32 Release" || "$(CFG)" == "bareiss - Win32 Debug" SOURCE=..\..\..\progs\bareiss\bareiss.cpp !IF "$(CFG)" == "bareiss - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\bareiss.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c "$(INTDIR)\bareiss.obj" : $(SOURCE) "$(INTDIR)" $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "bareiss - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\bareiss.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c "$(INTDIR)\bareiss.obj" : $(SOURCE) "$(INTDIR)" $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF !ENDIF core++-1.7/win32/progs/chull/0040755000175000001440000000000010147210064015172 5ustar joachimuserscore++-1.7/win32/progs/chull/chull.dsp0100644000175000001440000002010707437361201017016 0ustar joachimusers# Microsoft Developer Studio Project File - Name="chull" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=chull - Win32 Debug Level3 !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "chull.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "chull.mak" CFG="chull - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "chull - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "chull - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "chull - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "chull - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "chull - Win32 Release Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "chull___Win32_Release_Level1" # PROP BASE Intermediate_Dir "chull___Win32_Release_Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level1" # PROP Intermediate_Dir "Release_Level1" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "chull - Win32 Debug Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "chull___Win32_Debug_Level1" # PROP BASE Intermediate_Dir "chull___Win32_Debug_Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level1" # PROP Intermediate_Dir "Debug_Level1" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "chull - Win32 Release Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "chull___Win32_Release_Level3" # PROP BASE Intermediate_Dir "chull___Win32_Release_Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level3" # PROP Intermediate_Dir "Release_Level3" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "chull - Win32 Debug Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "chull___Win32_Debug_Level3" # PROP BASE Intermediate_Dir "chull___Win32_Debug_Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level3" # PROP Intermediate_Dir "Debug_Level3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "chull - Win32 Release Level1" # Name "chull - Win32 Debug Level1" # Name "chull - Win32 Release Level3" # Name "chull - Win32 Debug Level3" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\chull\chull.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/chull/chull.dsw0100644000175000001440000000132007437361201017021 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "chull"=.\chull.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "chull4"=.\chull4.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/chull/chull.mak0100644000175000001440000001653107437361201017006 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on chull.dsp !IF "$(CFG)" == "" CFG=chull - Win32 Debug Level3 !MESSAGE No configuration specified. Defaulting to chull - Win32 Debug Level3. !ENDIF !IF "$(CFG)" != "chull - Win32 Release Level1" && "$(CFG)" != "chull - Win32 Debug Level1" && "$(CFG)" != "chull - Win32 Release Level3" && "$(CFG)" != "chull - Win32 Debug Level3" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "chull.mak" CFG="chull - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "chull - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "chull - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "chull - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "chull - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "chull - Win32 Release Level1" OUTDIR=.\Release_Level1 INTDIR=.\Release_Level1 # Begin Custom Macros OutDir=.\Release_Level1 # End Custom Macros ALL : "$(OUTDIR)\chull.exe" CLEAN : -@erase "$(INTDIR)\chull.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\chull.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\chull.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\chull.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\chull.pdb" /machine:I386 /out:"$(OUTDIR)\chull.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\chull.obj" "$(OUTDIR)\chull.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "chull - Win32 Debug Level1" OUTDIR=.\Debug_Level1 INTDIR=.\Debug_Level1 # Begin Custom Macros OutDir=.\Debug_Level1 # End Custom Macros ALL : "$(OUTDIR)\chull.exe" CLEAN : -@erase "$(INTDIR)\chull.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\chull.exe" -@erase "$(OUTDIR)\chull.ilk" -@erase "$(OUTDIR)\chull.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\chull.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\chull.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\chull.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\chull.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\chull.obj" "$(OUTDIR)\chull.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "chull - Win32 Release Level3" OUTDIR=.\Release_Level3 INTDIR=.\Release_Level3 # Begin Custom Macros OutDir=.\Release_Level3 # End Custom Macros ALL : "$(OUTDIR)\chull.exe" CLEAN : -@erase "$(INTDIR)\chull.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\chull.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\chull.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\chull.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\chull.pdb" /machine:I386 /out:"$(OUTDIR)\chull.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\chull.obj" "$(OUTDIR)\chull.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "chull - Win32 Debug Level3" OUTDIR=.\Debug_Level3 INTDIR=.\Debug_Level3 # Begin Custom Macros OutDir=.\Debug_Level3 # End Custom Macros ALL : "$(OUTDIR)\chull.exe" CLEAN : -@erase "$(INTDIR)\chull.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\chull.exe" -@erase "$(OUTDIR)\chull.ilk" -@erase "$(OUTDIR)\chull.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\chull.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\chull.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\chull.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\chull.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\chull.obj" "$(OUTDIR)\chull.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("chull.dep") !INCLUDE "chull.dep" !ELSE !MESSAGE Warning: cannot find "chull.dep" !ENDIF !ENDIF !IF "$(CFG)" == "chull - Win32 Release Level1" || "$(CFG)" == "chull - Win32 Debug Level1" || "$(CFG)" == "chull - Win32 Release Level3" || "$(CFG)" == "chull - Win32 Debug Level3" SOURCE=..\..\..\progs\chull\chull.cpp "$(INTDIR)\chull.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/chull/chull4.dsp0100644000175000001440000002010507437361201017100 0ustar joachimusers# Microsoft Developer Studio Project File - Name="chull4" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=chull4 - Win32 Debug Level3 !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "chull4.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "chull4.mak" CFG="chull4 - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "chull4 - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "chull4 - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "chull4 - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "chull4 - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "chull4 - Win32 Release Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "chull4___Win32_Release_Level1" # PROP BASE Intermediate_Dir "chull4___Win32_Release_Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level1" # PROP Intermediate_Dir "Release_Level1" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "chull4 - Win32 Debug Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "chull4___Win32_Debug_Level1" # PROP BASE Intermediate_Dir "chull4___Win32_Debug_Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level1" # PROP Intermediate_Dir "Debug_Level1" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "chull4 - Win32 Release Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "chull4___Win32_Release_Level3" # PROP BASE Intermediate_Dir "chull4___Win32_Release_Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level3" # PROP Intermediate_Dir "Release_Level3" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "chull4 - Win32 Debug Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "chull4___Win32_Debug_Level3" # PROP BASE Intermediate_Dir "chull4___Win32_Debug_Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level3" # PROP Intermediate_Dir "Debug_Level3" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "chull4 - Win32 Release Level1" # Name "chull4 - Win32 Debug Level1" # Name "chull4 - Win32 Release Level3" # Name "chull4 - Win32 Debug Level3" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\chull\chull4.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/chull/chull4.mak0100644000175000001440000001663307437361201017075 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on chull4.dsp !IF "$(CFG)" == "" CFG=chull4 - Win32 Debug Level3 !MESSAGE No configuration specified. Defaulting to chull4 - Win32 Debug Level3. !ENDIF !IF "$(CFG)" != "chull4 - Win32 Release Level1" && "$(CFG)" != "chull4 - Win32 Debug Level1" && "$(CFG)" != "chull4 - Win32 Release Level3" && "$(CFG)" != "chull4 - Win32 Debug Level3" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "chull4.mak" CFG="chull4 - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "chull4 - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "chull4 - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "chull4 - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "chull4 - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "chull4 - Win32 Release Level1" OUTDIR=.\Release_Level1 INTDIR=.\Release_Level1 # Begin Custom Macros OutDir=.\Release_Level1 # End Custom Macros ALL : "$(OUTDIR)\chull4.exe" CLEAN : -@erase "$(INTDIR)\chull4.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\chull4.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\chull4.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\chull4.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\chull4.pdb" /machine:I386 /out:"$(OUTDIR)\chull4.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\chull4.obj" "$(OUTDIR)\chull4.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "chull4 - Win32 Debug Level1" OUTDIR=.\Debug_Level1 INTDIR=.\Debug_Level1 # Begin Custom Macros OutDir=.\Debug_Level1 # End Custom Macros ALL : "$(OUTDIR)\chull4.exe" CLEAN : -@erase "$(INTDIR)\chull4.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\chull4.exe" -@erase "$(OUTDIR)\chull4.ilk" -@erase "$(OUTDIR)\chull4.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\chull4.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\chull4.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\chull4.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\chull4.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\chull4.obj" "$(OUTDIR)\chull4.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "chull4 - Win32 Release Level3" OUTDIR=.\Release_Level3 INTDIR=.\Release_Level3 # Begin Custom Macros OutDir=.\Release_Level3 # End Custom Macros ALL : "$(OUTDIR)\chull4.exe" CLEAN : -@erase "$(INTDIR)\chull4.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\chull4.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\chull4.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\chull4.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\chull4.pdb" /machine:I386 /out:"$(OUTDIR)\chull4.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\chull4.obj" "$(OUTDIR)\chull4.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "chull4 - Win32 Debug Level3" OUTDIR=.\Debug_Level3 INTDIR=.\Debug_Level3 # Begin Custom Macros OutDir=.\Debug_Level3 # End Custom Macros ALL : "$(OUTDIR)\chull4.exe" CLEAN : -@erase "$(INTDIR)\chull4.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\chull4.exe" -@erase "$(OUTDIR)\chull4.ilk" -@erase "$(OUTDIR)\chull4.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\chull4.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\chull4.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\chull4.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\chull4.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\chull4.obj" "$(OUTDIR)\chull4.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("chull4.dep") !INCLUDE "chull4.dep" !ELSE !MESSAGE Warning: cannot find "chull4.dep" !ENDIF !ENDIF !IF "$(CFG)" == "chull4 - Win32 Release Level1" || "$(CFG)" == "chull4 - Win32 Debug Level1" || "$(CFG)" == "chull4 - Win32 Release Level3" || "$(CFG)" == "chull4 - Win32 Debug Level3" SOURCE=..\..\..\progs\chull\chull4.cpp "$(INTDIR)\chull4.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/chullGraham/0040755000175000001440000000000010147210064016312 5ustar joachimuserscore++-1.7/win32/progs/chullGraham/graham.dsp0100644000175000001440000001057207437361201020273 0ustar joachimusers# Microsoft Developer Studio Project File - Name="graham" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=graham - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "graham.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "graham.mak" CFG="graham - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "graham - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "graham - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "graham - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "graham - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "graham___Win32_Debug" # PROP BASE Intermediate_Dir "graham___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "graham - Win32 Release" # Name "graham - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\chullGraham\graham.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/chullGraham/graham.dsw0100644000175000001440000000132407437361201020275 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "graham"=.\graham.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "graham4"=.\graham4.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/chullGraham/graham.mak0100644000175000001440000001040107437361201020244 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on graham.dsp !IF "$(CFG)" == "" CFG=graham - Win32 Debug !MESSAGE No configuration specified. Defaulting to graham - Win32 Debug. !ENDIF !IF "$(CFG)" != "graham - Win32 Release" && "$(CFG)" != "graham - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "graham.mak" CFG="graham - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "graham - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "graham - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "graham - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\graham.exe" CLEAN : -@erase "$(INTDIR)\graham.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\graham.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\graham.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\graham.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\graham.pdb" /machine:I386 /out:"$(OUTDIR)\graham.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\graham.obj" "$(OUTDIR)\graham.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "graham - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\graham.exe" CLEAN : -@erase "$(INTDIR)\graham.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\graham.exe" -@erase "$(OUTDIR)\graham.ilk" -@erase "$(OUTDIR)\graham.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\graham.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\graham.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\graham.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\graham.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\graham.obj" "$(OUTDIR)\graham.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("graham.dep") !INCLUDE "graham.dep" !ELSE !MESSAGE Warning: cannot find "graham.dep" !ENDIF !ENDIF !IF "$(CFG)" == "graham - Win32 Release" || "$(CFG)" == "graham - Win32 Debug" SOURCE=..\..\..\progs\chullGraham\graham.cpp "$(INTDIR)\graham.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/chullGraham/graham4.dsp0100644000175000001440000001061207437361201020352 0ustar joachimusers# Microsoft Developer Studio Project File - Name="graham4" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=graham4 - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "graham4.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "graham4.mak" CFG="graham4 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "graham4 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "graham4 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "graham4 - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "graham4 - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "graham4___Win32_Debug0" # PROP BASE Intermediate_Dir "graham4___Win32_Debug0" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "graham4 - Win32 Release" # Name "graham4 - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\chullGraham\graham4.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/chullGraham/graham4.mak0100644000175000001440000001044707437361201020342 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on graham4.dsp !IF "$(CFG)" == "" CFG=graham4 - Win32 Debug !MESSAGE No configuration specified. Defaulting to graham4 - Win32 Debug. !ENDIF !IF "$(CFG)" != "graham4 - Win32 Release" && "$(CFG)" != "graham4 - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "graham4.mak" CFG="graham4 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "graham4 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "graham4 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "graham4 - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\graham4.exe" CLEAN : -@erase "$(INTDIR)\graham4.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\graham4.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\graham4.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\graham4.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\graham4.pdb" /machine:I386 /out:"$(OUTDIR)\graham4.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\graham4.obj" "$(OUTDIR)\graham4.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "graham4 - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\graham4.exe" CLEAN : -@erase "$(INTDIR)\graham4.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\graham4.exe" -@erase "$(OUTDIR)\graham4.ilk" -@erase "$(OUTDIR)\graham4.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\graham4.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\graham4.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\graham4.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\graham4.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\graham4.obj" "$(OUTDIR)\graham4.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("graham4.dep") !INCLUDE "graham4.dep" !ELSE !MESSAGE Warning: cannot find "graham4.dep" !ENDIF !ENDIF !IF "$(CFG)" == "graham4 - Win32 Release" || "$(CFG)" == "graham4 - Win32 Debug" SOURCE=..\..\..\progs\chullGraham\graham4.cpp "$(INTDIR)\graham4.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/compare/0040755000175000001440000000000010147210064015511 5ustar joachimuserscore++-1.7/win32/progs/compare/compare.dsp0100644000175000001440000001054407437361201017660 0ustar joachimusers# Microsoft Developer Studio Project File - Name="compare" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=compare - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "compare.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "compare.mak" CFG="compare - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "compare - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "compare - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "compare - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "compare - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "compare - Win32 Release" # Name "compare - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\compare\compare.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/compare/compare.dsw0100644000175000001440000000103107437361201017656 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "compare"=.\compare.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/compare/compare.mak0100644000175000001440000001044307437361201017640 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on compare.dsp !IF "$(CFG)" == "" CFG=compare - Win32 Debug !MESSAGE No configuration specified. Defaulting to compare - Win32 Debug. !ENDIF !IF "$(CFG)" != "compare - Win32 Release" && "$(CFG)" != "compare - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "compare.mak" CFG="compare - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "compare - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "compare - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "compare - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\compare.exe" CLEAN : -@erase "$(INTDIR)\compare.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\compare.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\compare.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\compare.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\compare.pdb" /machine:I386 /out:"$(OUTDIR)\compare.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\compare.obj" "$(OUTDIR)\compare.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "compare - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\compare.exe" CLEAN : -@erase "$(INTDIR)\compare.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\compare.exe" -@erase "$(OUTDIR)\compare.ilk" -@erase "$(OUTDIR)\compare.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\compare.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\compare.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\compare.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\compare.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\compare.obj" "$(OUTDIR)\compare.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("compare.dep") !INCLUDE "compare.dep" !ELSE !MESSAGE Warning: cannot find "compare.dep" !ENDIF !ENDIF !IF "$(CFG)" == "compare - Win32 Release" || "$(CFG)" == "compare - Win32 Debug" SOURCE=..\..\..\progs\compare\compare.cpp "$(INTDIR)\compare.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/delaunay/0040755000175000001440000000000010147210064015665 5ustar joachimuserscore++-1.7/win32/progs/delaunay/delaunay.dsw0100644000175000001440000000130607437361201020213 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "dt2"=.\dt2.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "dt4"=.\dt4.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/delaunay/dt2.dsp0100644000175000001440000001051507437361201017075 0ustar joachimusers# Microsoft Developer Studio Project File - Name="dt2" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=dt2 - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "dt2.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "dt2.mak" CFG="dt2 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "dt2 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "dt2 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "dt2 - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "dt2 - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "dt2___Win32_Debug" # PROP BASE Intermediate_Dir "dt2___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "dt2 - Win32 Release" # Name "dt2 - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\delaunay\dt2.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/delaunay/dt2.mak0100644000175000001440000001021407437361201017053 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on dt2.dsp !IF "$(CFG)" == "" CFG=dt2 - Win32 Debug !MESSAGE No configuration specified. Defaulting to dt2 - Win32 Debug. !ENDIF !IF "$(CFG)" != "dt2 - Win32 Release" && "$(CFG)" != "dt2 - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "dt2.mak" CFG="dt2 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "dt2 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "dt2 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "dt2 - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\dt2.exe" CLEAN : -@erase "$(INTDIR)\dt2.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\dt2.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\dt2.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\dt2.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\dt2.pdb" /machine:I386 /out:"$(OUTDIR)\dt2.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\dt2.obj" "$(OUTDIR)\dt2.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "dt2 - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\dt2.exe" CLEAN : -@erase "$(INTDIR)\dt2.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\dt2.exe" -@erase "$(OUTDIR)\dt2.ilk" -@erase "$(OUTDIR)\dt2.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\dt2.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\dt2.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\dt2.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\dt2.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\dt2.obj" "$(OUTDIR)\dt2.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("dt2.dep") !INCLUDE "dt2.dep" !ELSE !MESSAGE Warning: cannot find "dt2.dep" !ENDIF !ENDIF !IF "$(CFG)" == "dt2 - Win32 Release" || "$(CFG)" == "dt2 - Win32 Debug" SOURCE=..\..\..\progs\delaunay\dt2.cpp "$(INTDIR)\dt2.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/delaunay/dt4.dsp0100644000175000001440000001051507437361201017077 0ustar joachimusers# Microsoft Developer Studio Project File - Name="dt4" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=dt4 - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "dt4.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "dt4.mak" CFG="dt4 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "dt4 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "dt4 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "dt4 - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "dt4 - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "dt4___Win32_Debug" # PROP BASE Intermediate_Dir "dt4___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "dt4 - Win32 Release" # Name "dt4 - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\delaunay\dt4.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/delaunay/dt4.mak0100644000175000001440000001021407437361201017055 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on dt4.dsp !IF "$(CFG)" == "" CFG=dt4 - Win32 Debug !MESSAGE No configuration specified. Defaulting to dt4 - Win32 Debug. !ENDIF !IF "$(CFG)" != "dt4 - Win32 Release" && "$(CFG)" != "dt4 - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "dt4.mak" CFG="dt4 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "dt4 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "dt4 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "dt4 - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\dt4.exe" CLEAN : -@erase "$(INTDIR)\dt4.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\dt4.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\dt4.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\dt4.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\dt4.pdb" /machine:I386 /out:"$(OUTDIR)\dt4.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\dt4.obj" "$(OUTDIR)\dt4.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "dt4 - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\dt4.exe" CLEAN : -@erase "$(INTDIR)\dt4.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\dt4.exe" -@erase "$(OUTDIR)\dt4.ilk" -@erase "$(OUTDIR)\dt4.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\dt4.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\dt4.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\dt4.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\dt4.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\dt4.obj" "$(OUTDIR)\dt4.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("dt4.dep") !INCLUDE "dt4.dep" !ELSE !MESSAGE Warning: cannot find "dt4.dep" !ENDIF !ENDIF !IF "$(CFG)" == "dt4 - Win32 Release" || "$(CFG)" == "dt4 - Win32 Debug" SOURCE=..\..\..\progs\delaunay\dt4.cpp "$(INTDIR)\dt4.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/fileIO/0040755000175000001440000000000010147210064015232 5ustar joachimuserscore++-1.7/win32/progs/fileIO/IOspeed.dsp0100644000175000001440000001064307437361201017303 0ustar joachimusers# Microsoft Developer Studio Project File - Name="IOspeed" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=IOspeed - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "IOspeed.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "IOspeed.mak" CFG="IOspeed - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "IOspeed - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "IOspeed - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "IOspeed - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "IOspeed___Win32_Release" # PROP BASE Intermediate_Dir "IOspeed___Win32_Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "IOspeed - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "IOspeed___Win32_Debug" # PROP BASE Intermediate_Dir "IOspeed___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "IOspeed - Win32 Release" # Name "IOspeed - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\fileIO\IOspeed.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/fileIO/IOspeed.mak0100644000175000001440000001044207437361201017262 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on IOspeed.dsp !IF "$(CFG)" == "" CFG=IOspeed - Win32 Debug !MESSAGE No configuration specified. Defaulting to IOspeed - Win32 Debug. !ENDIF !IF "$(CFG)" != "IOspeed - Win32 Release" && "$(CFG)" != "IOspeed - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "IOspeed.mak" CFG="IOspeed - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "IOspeed - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "IOspeed - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "IOspeed - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\IOspeed.exe" CLEAN : -@erase "$(INTDIR)\IOspeed.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\IOspeed.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\IOspeed.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\IOspeed.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\IOspeed.pdb" /machine:I386 /out:"$(OUTDIR)\IOspeed.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\IOspeed.obj" "$(OUTDIR)\IOspeed.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "IOspeed - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\IOspeed.exe" CLEAN : -@erase "$(INTDIR)\IOspeed.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\IOspeed.exe" -@erase "$(OUTDIR)\IOspeed.ilk" -@erase "$(OUTDIR)\IOspeed.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\IOspeed.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\IOspeed.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\IOspeed.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\IOspeed.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\IOspeed.obj" "$(OUTDIR)\IOspeed.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("IOspeed.dep") !INCLUDE "IOspeed.dep" !ELSE !MESSAGE Warning: cannot find "IOspeed.dep" !ENDIF !ENDIF !IF "$(CFG)" == "IOspeed - Win32 Release" || "$(CFG)" == "IOspeed - Win32 Debug" SOURCE=..\..\..\progs\fileIO\IOspeed.cpp "$(INTDIR)\IOspeed.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/fileIO/fileIO.dsp0100644000175000001440000001052707437361201017123 0ustar joachimusers# Microsoft Developer Studio Project File - Name="fileIO" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=fileIO - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "fileIO.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "fileIO.mak" CFG="fileIO - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "fileIO - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "fileIO - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "fileIO - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "fileIO - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "fileIO - Win32 Release" # Name "fileIO - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\fileIO\fileIO.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/fileIO/fileIO.dsw0100644000175000001440000000132407437361201017125 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "IOspeed"=.\IOspeed.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "fileIO"=.\fileIO.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/fileIO/fileIO.mak0100644000175000001440000001037407437361201017105 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on fileIO.dsp !IF "$(CFG)" == "" CFG=fileIO - Win32 Debug !MESSAGE No configuration specified. Defaulting to fileIO - Win32 Debug. !ENDIF !IF "$(CFG)" != "fileIO - Win32 Release" && "$(CFG)" != "fileIO - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "fileIO.mak" CFG="fileIO - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "fileIO - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "fileIO - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "fileIO - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\fileIO.exe" CLEAN : -@erase "$(INTDIR)\fileIO.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\fileIO.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\fileIO.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\fileIO.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\fileIO.pdb" /machine:I386 /out:"$(OUTDIR)\fileIO.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\fileIO.obj" "$(OUTDIR)\fileIO.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "fileIO - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\fileIO.exe" CLEAN : -@erase "$(INTDIR)\fileIO.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\fileIO.exe" -@erase "$(OUTDIR)\fileIO.ilk" -@erase "$(OUTDIR)\fileIO.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\fileIO.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\fileIO.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\fileIO.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\fileIO.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\fileIO.obj" "$(OUTDIR)\fileIO.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("fileIO.dep") !INCLUDE "fileIO.dep" !ELSE !MESSAGE Warning: cannot find "fileIO.dep" !ENDIF !ENDIF !IF "$(CFG)" == "fileIO - Win32 Release" || "$(CFG)" == "fileIO - Win32 Debug" SOURCE=..\..\..\progs\fileIO\fileIO.cpp "$(INTDIR)\fileIO.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/fortune/0040755000175000001440000000000010147210064015545 5ustar joachimuserscore++-1.7/win32/progs/fortune/vor/0040755000175000001440000000000010147210064016353 5ustar joachimuserscore++-1.7/win32/progs/fortune/vor/voronoi.dsp0100644000175000001440000001226107437361201020565 0ustar joachimusers# Microsoft Developer Studio Project File - Name="voronoi" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=voronoi - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "voronoi.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "voronoi.mak" CFG="voronoi - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "voronoi - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "voronoi - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "voronoi - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\lib" !ELSEIF "$(CFG)" == "voronoi - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "voronoi___Win32_Debug" # PROP BASE Intermediate_Dir "voronoi___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\..\lib" !ENDIF # Begin Target # Name "voronoi - Win32 Release" # Name "voronoi - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\edgelist.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\geometry.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\getopt.c # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\heap.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\main.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\memory.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\output.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\PQlist.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\voronoi.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=..\getopt.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/fortune/vor/voronoi.mak0100644000175000001440000001445207437361201020553 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on voronoi.dsp !IF "$(CFG)" == "" CFG=voronoi - Win32 Debug !MESSAGE No configuration specified. Defaulting to voronoi - Win32 Debug. !ENDIF !IF "$(CFG)" != "voronoi - Win32 Release" && "$(CFG)" != "voronoi - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "voronoi.mak" CFG="voronoi - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "voronoi - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "voronoi - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "voronoi - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\voronoi.exe" CLEAN : -@erase "$(INTDIR)\edgelist.obj" -@erase "$(INTDIR)\geometry.obj" -@erase "$(INTDIR)\getopt.obj" -@erase "$(INTDIR)\heap.obj" -@erase "$(INTDIR)\main.obj" -@erase "$(INTDIR)\memory.obj" -@erase "$(INTDIR)\output.obj" -@erase "$(INTDIR)\PQlist.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\voronoi.obj" -@erase "$(OUTDIR)\voronoi.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\voronoi.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\voronoi.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\voronoi.pdb" /machine:I386 /out:"$(OUTDIR)\voronoi.exe" /libpath:"..\..\..\lib" LINK32_OBJS= \ "$(INTDIR)\edgelist.obj" \ "$(INTDIR)\geometry.obj" \ "$(INTDIR)\getopt.obj" \ "$(INTDIR)\heap.obj" \ "$(INTDIR)\main.obj" \ "$(INTDIR)\memory.obj" \ "$(INTDIR)\output.obj" \ "$(INTDIR)\PQlist.obj" \ "$(INTDIR)\voronoi.obj" "$(OUTDIR)\voronoi.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "voronoi - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\voronoi.exe" CLEAN : -@erase "$(INTDIR)\edgelist.obj" -@erase "$(INTDIR)\geometry.obj" -@erase "$(INTDIR)\getopt.obj" -@erase "$(INTDIR)\heap.obj" -@erase "$(INTDIR)\main.obj" -@erase "$(INTDIR)\memory.obj" -@erase "$(INTDIR)\output.obj" -@erase "$(INTDIR)\PQlist.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(INTDIR)\voronoi.obj" -@erase "$(OUTDIR)\voronoi.exe" -@erase "$(OUTDIR)\voronoi.ilk" -@erase "$(OUTDIR)\voronoi.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\voronoi.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\voronoi.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\voronoi.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\voronoi.exe" /pdbtype:sept /libpath:"..\..\..\lib" LINK32_OBJS= \ "$(INTDIR)\edgelist.obj" \ "$(INTDIR)\geometry.obj" \ "$(INTDIR)\getopt.obj" \ "$(INTDIR)\heap.obj" \ "$(INTDIR)\main.obj" \ "$(INTDIR)\memory.obj" \ "$(INTDIR)\output.obj" \ "$(INTDIR)\PQlist.obj" \ "$(INTDIR)\voronoi.obj" "$(OUTDIR)\voronoi.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("voronoi.dep") !INCLUDE "voronoi.dep" !ELSE !MESSAGE Warning: cannot find "voronoi.dep" !ENDIF !ENDIF !IF "$(CFG)" == "voronoi - Win32 Release" || "$(CFG)" == "voronoi - Win32 Debug" SOURCE=..\..\..\..\progs\fortune\vor\edgelist.cpp "$(INTDIR)\edgelist.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\geometry.cpp "$(INTDIR)\geometry.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\getopt.c "$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\heap.cpp "$(INTDIR)\heap.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\main.cpp "$(INTDIR)\main.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\memory.cpp "$(INTDIR)\memory.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\output.cpp "$(INTDIR)\output.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\PQlist.cpp "$(INTDIR)\PQlist.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\voronoi.cpp "$(INTDIR)\voronoi.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/fortune/vor/voronoi_lattice.dsp0100644000175000001440000001234307437361201022273 0ustar joachimusers# Microsoft Developer Studio Project File - Name="voronoi_lattice" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=voronoi_lattice - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "voronoi_lattice.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "voronoi_lattice.mak" CFG="voronoi_lattice - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "voronoi_lattice - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "voronoi_lattice - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "voronoi_lattice - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\lib" !ELSEIF "$(CFG)" == "voronoi_lattice - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "voronoi_lattice___Win32_Debug" # PROP BASE Intermediate_Dir "voronoi_lattice___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\..\lib" !ENDIF # Begin Target # Name "voronoi_lattice - Win32 Release" # Name "voronoi_lattice - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\edgelist.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\geometry.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\getopt.c # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\heap.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\main_lattice.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\memory.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\output.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\PQlist.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\progs\fortune\vor\voronoi.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/fortune/vor/voronoi_lattice.mak0100644000175000001440000001513207437361201022254 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on voronoi_lattice.dsp !IF "$(CFG)" == "" CFG=voronoi_lattice - Win32 Debug !MESSAGE No configuration specified. Defaulting to voronoi_lattice - Win32 Debug. !ENDIF !IF "$(CFG)" != "voronoi_lattice - Win32 Release" && "$(CFG)" != "voronoi_lattice - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "voronoi_lattice.mak" CFG="voronoi_lattice - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "voronoi_lattice - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "voronoi_lattice - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "voronoi_lattice - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\voronoi_lattice.exe" CLEAN : -@erase "$(INTDIR)\edgelist.obj" -@erase "$(INTDIR)\geometry.obj" -@erase "$(INTDIR)\getopt.obj" -@erase "$(INTDIR)\heap.obj" -@erase "$(INTDIR)\main_lattice.obj" -@erase "$(INTDIR)\memory.obj" -@erase "$(INTDIR)\output.obj" -@erase "$(INTDIR)\PQlist.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\voronoi.obj" -@erase "$(OUTDIR)\voronoi_lattice.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\voronoi_lattice.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\voronoi_lattice.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\voronoi_lattice.pdb" /machine:I386 /out:"$(OUTDIR)\voronoi_lattice.exe" /libpath:"..\..\..\lib" LINK32_OBJS= \ "$(INTDIR)\edgelist.obj" \ "$(INTDIR)\geometry.obj" \ "$(INTDIR)\getopt.obj" \ "$(INTDIR)\heap.obj" \ "$(INTDIR)\main_lattice.obj" \ "$(INTDIR)\memory.obj" \ "$(INTDIR)\output.obj" \ "$(INTDIR)\PQlist.obj" \ "$(INTDIR)\voronoi.obj" "$(OUTDIR)\voronoi_lattice.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "voronoi_lattice - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\voronoi_lattice.exe" CLEAN : -@erase "$(INTDIR)\edgelist.obj" -@erase "$(INTDIR)\geometry.obj" -@erase "$(INTDIR)\getopt.obj" -@erase "$(INTDIR)\heap.obj" -@erase "$(INTDIR)\main_lattice.obj" -@erase "$(INTDIR)\memory.obj" -@erase "$(INTDIR)\output.obj" -@erase "$(INTDIR)\PQlist.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(INTDIR)\voronoi.obj" -@erase "$(OUTDIR)\voronoi_lattice.exe" -@erase "$(OUTDIR)\voronoi_lattice.ilk" -@erase "$(OUTDIR)\voronoi_lattice.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\voronoi_lattice.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\voronoi_lattice.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\voronoi_lattice.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\voronoi_lattice.exe" /pdbtype:sept /libpath:"..\..\..\lib" LINK32_OBJS= \ "$(INTDIR)\edgelist.obj" \ "$(INTDIR)\geometry.obj" \ "$(INTDIR)\getopt.obj" \ "$(INTDIR)\heap.obj" \ "$(INTDIR)\main_lattice.obj" \ "$(INTDIR)\memory.obj" \ "$(INTDIR)\output.obj" \ "$(INTDIR)\PQlist.obj" \ "$(INTDIR)\voronoi.obj" "$(OUTDIR)\voronoi_lattice.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("voronoi_lattice.dep") !INCLUDE "voronoi_lattice.dep" !ELSE !MESSAGE Warning: cannot find "voronoi_lattice.dep" !ENDIF !ENDIF !IF "$(CFG)" == "voronoi_lattice - Win32 Release" || "$(CFG)" == "voronoi_lattice - Win32 Debug" SOURCE=..\..\..\..\progs\fortune\vor\edgelist.cpp "$(INTDIR)\edgelist.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\geometry.cpp "$(INTDIR)\geometry.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\getopt.c "$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\heap.cpp "$(INTDIR)\heap.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\main_lattice.cpp "$(INTDIR)\main_lattice.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\memory.cpp "$(INTDIR)\memory.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\output.cpp "$(INTDIR)\output.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\PQlist.cpp "$(INTDIR)\PQlist.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\..\progs\fortune\vor\voronoi.cpp "$(INTDIR)\voronoi.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/fortune/fortune.dsw0100644000175000001440000000215007437361201017751 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "pred"=.\pred\pred.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "pred2"=.\pred\pred2.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "voronoi"=.\vor\voronoi.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "voronoi_lattice"=.\vor\voronoi_lattice.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/fortune/pred/0040755000175000001440000000000010147210064016477 5ustar joachimuserscore++-1.7/win32/progs/fortune/pred/pred.dsp0100644000175000001440000001067707437361201020161 0ustar joachimusers# Microsoft Developer Studio Project File - Name="pred" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=pred - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "pred.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pred.mak" CFG="pred - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pred - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "pred - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pred - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\lib" !ELSEIF "$(CFG)" == "pred - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\..\lib" !ENDIF # Begin Target # Name "pred - Win32 Release" # Name "pred - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\progs\fortune\pred\pred.cpp !IF "$(CFG)" == "pred - Win32 Release" !ELSEIF "$(CFG)" == "pred - Win32 Debug" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/fortune/pred/pred.mak0100644000175000001440000001147407437361201020137 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on pred.dsp !IF "$(CFG)" == "" CFG=pred - Win32 Debug !MESSAGE No configuration specified. Defaulting to pred - Win32 Debug. !ENDIF !IF "$(CFG)" != "pred - Win32 Release" && "$(CFG)" != "pred - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pred.mak" CFG="pred - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pred - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "pred - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pred - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\pred.exe" CLEAN : -@erase "$(INTDIR)\pred.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\pred.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pred.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pred.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\pred.pdb" /machine:I386 /out:"$(OUTDIR)\pred.exe" /libpath:"..\..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pred.obj" "$(OUTDIR)\pred.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "pred - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\pred.exe" CLEAN : -@erase "$(INTDIR)\pred.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\pred.exe" -@erase "$(OUTDIR)\pred.ilk" -@erase "$(OUTDIR)\pred.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pred.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pred.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\pred.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\pred.exe" /pdbtype:sept /libpath:"..\..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pred.obj" "$(OUTDIR)\pred.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("pred.dep") !INCLUDE "pred.dep" !ELSE !MESSAGE Warning: cannot find "pred.dep" !ENDIF !ENDIF !IF "$(CFG)" == "pred - Win32 Release" || "$(CFG)" == "pred - Win32 Debug" SOURCE=..\..\..\..\progs\fortune\pred\pred.cpp !IF "$(CFG)" == "pred - Win32 Release" CPP_SWITCHES=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pred.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c "$(INTDIR)\pred.obj" : $(SOURCE) "$(INTDIR)" $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ELSEIF "$(CFG)" == "pred - Win32 Debug" CPP_SWITCHES=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pred.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c "$(INTDIR)\pred.obj" : $(SOURCE) "$(INTDIR)" $(CPP) @<< $(CPP_SWITCHES) $(SOURCE) << !ENDIF !ENDIF core++-1.7/win32/progs/fortune/pred/pred2.dsp0100644000175000001440000001060207437361201020227 0ustar joachimusers# Microsoft Developer Studio Project File - Name="pred2" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=pred2 - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "pred2.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pred2.mak" CFG="pred2 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pred2 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "pred2 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pred2 - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\lib" !ELSEIF "$(CFG)" == "pred2 - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "pred2___Win32_Debug" # PROP BASE Intermediate_Dir "pred2___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\..\lib" !ENDIF # Begin Target # Name "pred2 - Win32 Release" # Name "pred2 - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\progs\fortune\pred\pred2.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/fortune/pred/pred2.mak0100644000175000001440000001036107437361201020213 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on pred2.dsp !IF "$(CFG)" == "" CFG=pred2 - Win32 Debug !MESSAGE No configuration specified. Defaulting to pred2 - Win32 Debug. !ENDIF !IF "$(CFG)" != "pred2 - Win32 Release" && "$(CFG)" != "pred2 - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pred2.mak" CFG="pred2 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pred2 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "pred2 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pred2 - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\pred2.exe" CLEAN : -@erase "$(INTDIR)\pred2.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\pred2.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pred2.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pred2.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\pred2.pdb" /machine:I386 /out:"$(OUTDIR)\pred2.exe" /libpath:"..\..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pred2.obj" "$(OUTDIR)\pred2.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "pred2 - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\pred2.exe" CLEAN : -@erase "$(INTDIR)\pred2.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\pred2.exe" -@erase "$(OUTDIR)\pred2.ilk" -@erase "$(OUTDIR)\pred2.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\..\inc" /I "..\..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pred2.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pred2.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\pred2.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\pred2.exe" /pdbtype:sept /libpath:"..\..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pred2.obj" "$(OUTDIR)\pred2.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("pred2.dep") !INCLUDE "pred2.dep" !ELSE !MESSAGE Warning: cannot find "pred2.dep" !ENDIF !ENDIF !IF "$(CFG)" == "pred2 - Win32 Release" || "$(CFG)" == "pred2 - Win32 Debug" SOURCE=..\..\..\..\progs\fortune\pred\pred2.cpp "$(INTDIR)\pred2.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/gaussian/0040755000175000001440000000000010147210064015675 5ustar joachimuserscore++-1.7/win32/progs/gaussian/gaussian.dsp0100644000175000001440000001745607437361202020242 0ustar joachimusers# Microsoft Developer Studio Project File - Name="gaussian" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=gaussian - Win32 Debug Level3 !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "gaussian.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gaussian.mak" CFG="gaussian - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gaussian - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "gaussian - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "gaussian - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "gaussian - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "gaussian - Win32 Release Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release Level1" # PROP BASE Intermediate_Dir "Release Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level1" # PROP Intermediate_Dir "Release_Level1" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "gaussian - Win32 Debug Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug Level1" # PROP BASE Intermediate_Dir "Debug Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level1" # PROP Intermediate_Dir "Debug_Level1" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "gaussian - Win32 Release Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release Level3" # PROP BASE Intermediate_Dir "Release Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level3" # PROP Intermediate_Dir "Release_Level3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "gaussian - Win32 Debug Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug Level3" # PROP BASE Intermediate_Dir "Debug Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level3" # PROP Intermediate_Dir "Debug_Level3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "gaussian - Win32 Release Level1" # Name "gaussian - Win32 Debug Level1" # Name "gaussian - Win32 Release Level3" # Name "gaussian - Win32 Debug Level3" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\gaussian\gaussian.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/gaussian/gaussian.dsw0100644000175000001440000000133407437361202020235 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "gaussian"=.\gaussian.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "gaussianX"=.\gaussianX.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/gaussian/gaussian.mak0100644000175000001440000001704207437361202020213 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on gaussian.dsp !IF "$(CFG)" == "" CFG=gaussian - Win32 Debug Level3 !MESSAGE No configuration specified. Defaulting to gaussian - Win32 Debug Level3. !ENDIF !IF "$(CFG)" != "gaussian - Win32 Release Level1" && "$(CFG)" != "gaussian - Win32 Debug Level1" && "$(CFG)" != "gaussian - Win32 Release Level3" && "$(CFG)" != "gaussian - Win32 Debug Level3" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gaussian.mak" CFG="gaussian - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gaussian - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "gaussian - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "gaussian - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "gaussian - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "gaussian - Win32 Release Level1" OUTDIR=.\Release_Level1 INTDIR=.\Release_Level1 # Begin Custom Macros OutDir=.\Release_Level1 # End Custom Macros ALL : "$(OUTDIR)\gaussian.exe" CLEAN : -@erase "$(INTDIR)\gaussian.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\gaussian.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\gaussian.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gaussian.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\gaussian.pdb" /machine:I386 /out:"$(OUTDIR)\gaussian.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\gaussian.obj" "$(OUTDIR)\gaussian.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "gaussian - Win32 Debug Level1" OUTDIR=.\Debug_Level1 INTDIR=.\Debug_Level1 # Begin Custom Macros OutDir=.\Debug_Level1 # End Custom Macros ALL : "$(OUTDIR)\gaussian.exe" CLEAN : -@erase "$(INTDIR)\gaussian.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\gaussian.exe" -@erase "$(OUTDIR)\gaussian.ilk" -@erase "$(OUTDIR)\gaussian.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\gaussian.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gaussian.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\gaussian.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\gaussian.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\gaussian.obj" "$(OUTDIR)\gaussian.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "gaussian - Win32 Release Level3" OUTDIR=.\Release_Level3 INTDIR=.\Release_Level3 # Begin Custom Macros OutDir=.\Release_Level3 # End Custom Macros ALL : "$(OUTDIR)\gaussian.exe" CLEAN : -@erase "$(INTDIR)\gaussian.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\gaussian.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\gaussian.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gaussian.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\gaussian.pdb" /machine:I386 /out:"$(OUTDIR)\gaussian.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\gaussian.obj" "$(OUTDIR)\gaussian.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "gaussian - Win32 Debug Level3" OUTDIR=.\Debug_Level3 INTDIR=.\Debug_Level3 # Begin Custom Macros OutDir=.\Debug_Level3 # End Custom Macros ALL : "$(OUTDIR)\gaussian.exe" CLEAN : -@erase "$(INTDIR)\gaussian.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\gaussian.exe" -@erase "$(OUTDIR)\gaussian.ilk" -@erase "$(OUTDIR)\gaussian.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\gaussian.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gaussian.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\gaussian.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\gaussian.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\gaussian.obj" "$(OUTDIR)\gaussian.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("gaussian.dep") !INCLUDE "gaussian.dep" !ELSE !MESSAGE Warning: cannot find "gaussian.dep" !ENDIF !ENDIF !IF "$(CFG)" == "gaussian - Win32 Release Level1" || "$(CFG)" == "gaussian - Win32 Debug Level1" || "$(CFG)" == "gaussian - Win32 Release Level3" || "$(CFG)" == "gaussian - Win32 Debug Level3" SOURCE=..\..\..\progs\gaussian\gaussian.cpp "$(INTDIR)\gaussian.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/gaussian/gaussianX.dsp0100644000175000001440000001750007437361202020360 0ustar joachimusers# Microsoft Developer Studio Project File - Name="gaussianX" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=gaussianX - Win32 Debug Level3 !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "gaussianX.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gaussianX.mak" CFG="gaussianX - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gaussianX - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "gaussianX - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "gaussianX - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "gaussianX - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "gaussianX - Win32 Release Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release Level1" # PROP BASE Intermediate_Dir "Release Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level1" # PROP Intermediate_Dir "Release_Level1" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "gaussianX - Win32 Debug Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug Level1" # PROP BASE Intermediate_Dir "Debug Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level1" # PROP Intermediate_Dir "Debug_Level1" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "gaussianX - Win32 Release Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release Level3" # PROP BASE Intermediate_Dir "Release Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level3" # PROP Intermediate_Dir "Release_Level3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "gaussianX - Win32 Debug Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug Level3" # PROP BASE Intermediate_Dir "Debug Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level3" # PROP Intermediate_Dir "Debug_Level3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "gaussianX - Win32 Release Level1" # Name "gaussianX - Win32 Debug Level1" # Name "gaussianX - Win32 Release Level3" # Name "gaussianX - Win32 Debug Level3" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\gaussian\gaussianX.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/gaussian/gaussianX.mak0100644000175000001440000001714407437361202020346 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on gaussianX.dsp !IF "$(CFG)" == "" CFG=gaussianX - Win32 Debug Level3 !MESSAGE No configuration specified. Defaulting to gaussianX - Win32 Debug Level3. !ENDIF !IF "$(CFG)" != "gaussianX - Win32 Release Level1" && "$(CFG)" != "gaussianX - Win32 Debug Level1" && "$(CFG)" != "gaussianX - Win32 Release Level3" && "$(CFG)" != "gaussianX - Win32 Debug Level3" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gaussianX.mak" CFG="gaussianX - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gaussianX - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "gaussianX - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "gaussianX - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "gaussianX - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "gaussianX - Win32 Release Level1" OUTDIR=.\Release_Level1 INTDIR=.\Release_Level1 # Begin Custom Macros OutDir=.\Release_Level1 # End Custom Macros ALL : "$(OUTDIR)\gaussianX.exe" CLEAN : -@erase "$(INTDIR)\gaussianX.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\gaussianX.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\gaussianX.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gaussianX.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\gaussianX.pdb" /machine:I386 /out:"$(OUTDIR)\gaussianX.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\gaussianX.obj" "$(OUTDIR)\gaussianX.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "gaussianX - Win32 Debug Level1" OUTDIR=.\Debug_Level1 INTDIR=.\Debug_Level1 # Begin Custom Macros OutDir=.\Debug_Level1 # End Custom Macros ALL : "$(OUTDIR)\gaussianX.exe" CLEAN : -@erase "$(INTDIR)\gaussianX.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\gaussianX.exe" -@erase "$(OUTDIR)\gaussianX.ilk" -@erase "$(OUTDIR)\gaussianX.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\gaussianX.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gaussianX.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\gaussianX.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\gaussianX.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\gaussianX.obj" "$(OUTDIR)\gaussianX.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "gaussianX - Win32 Release Level3" OUTDIR=.\Release_Level3 INTDIR=.\Release_Level3 # Begin Custom Macros OutDir=.\Release_Level3 # End Custom Macros ALL : "$(OUTDIR)\gaussianX.exe" CLEAN : -@erase "$(INTDIR)\gaussianX.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\gaussianX.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\gaussianX.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gaussianX.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\gaussianX.pdb" /machine:I386 /out:"$(OUTDIR)\gaussianX.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\gaussianX.obj" "$(OUTDIR)\gaussianX.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "gaussianX - Win32 Debug Level3" OUTDIR=.\Debug_Level3 INTDIR=.\Debug_Level3 # Begin Custom Macros OutDir=.\Debug_Level3 # End Custom Macros ALL : "$(OUTDIR)\gaussianX.exe" CLEAN : -@erase "$(INTDIR)\gaussianX.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\gaussianX.exe" -@erase "$(OUTDIR)\gaussianX.ilk" -@erase "$(OUTDIR)\gaussianX.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\gaussianX.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\gaussianX.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\gaussianX.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\gaussianX.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\gaussianX.obj" "$(OUTDIR)\gaussianX.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("gaussianX.dep") !INCLUDE "gaussianX.dep" !ELSE !MESSAGE Warning: cannot find "gaussianX.dep" !ENDIF !ENDIF !IF "$(CFG)" == "gaussianX - Win32 Release Level1" || "$(CFG)" == "gaussianX - Win32 Debug Level1" || "$(CFG)" == "gaussianX - Win32 Release Level3" || "$(CFG)" == "gaussianX - Win32 Debug Level3" SOURCE=..\..\..\progs\gaussian\gaussianX.cpp "$(INTDIR)\gaussianX.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/generic/0040755000175000001440000000000010147210064015477 5ustar joachimuserscore++-1.7/win32/progs/generic/sample.dsp0100644000175000001440000001053007437361202017475 0ustar joachimusers# Microsoft Developer Studio Project File - Name="sample" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=sample - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "sample.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "sample.mak" CFG="sample - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "sample - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "sample - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "sample - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "sample - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "sample - Win32 Release" # Name "sample - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\generic\sample.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/generic/sample.dsw0100644000175000001440000000102707437361202017505 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "sample"=.\sample.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/generic/sample.mak0100644000175000001440000001037507437361202017466 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on sample.dsp !IF "$(CFG)" == "" CFG=sample - Win32 Debug !MESSAGE No configuration specified. Defaulting to sample - Win32 Debug. !ENDIF !IF "$(CFG)" != "sample - Win32 Release" && "$(CFG)" != "sample - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "sample.mak" CFG="sample - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "sample - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "sample - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "sample - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\sample.exe" CLEAN : -@erase "$(INTDIR)\sample.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\sample.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\sample.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\sample.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\sample.pdb" /machine:I386 /out:"$(OUTDIR)\sample.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\sample.obj" "$(OUTDIR)\sample.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "sample - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\sample.exe" CLEAN : -@erase "$(INTDIR)\sample.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\sample.exe" -@erase "$(OUTDIR)\sample.ilk" -@erase "$(OUTDIR)\sample.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\sample.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\sample.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\sample.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\sample.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\sample.obj" "$(OUTDIR)\sample.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("sample.dep") !INCLUDE "sample.dep" !ELSE !MESSAGE Warning: cannot find "sample.dep" !ENDIF !ENDIF !IF "$(CFG)" == "sample - Win32 Release" || "$(CFG)" == "sample - Win32 Debug" SOURCE=..\..\..\progs\generic\sample.cpp "$(INTDIR)\sample.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/geom2d/0040755000175000001440000000000010147210064015240 5ustar joachimuserscore++-1.7/win32/progs/geom2d/convexHull.dsp0100644000175000001440000001065507437361202020114 0ustar joachimusers# Microsoft Developer Studio Project File - Name="convexHull" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=convexHull - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "convexHull.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "convexHull.mak" CFG="convexHull - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "convexHull - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "convexHull - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "convexHull - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "convexHull - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "convexHull___Win32_Debug" # PROP BASE Intermediate_Dir "convexHull___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "convexHull - Win32 Release" # Name "convexHull - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\geom2d\convexHull.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/geom2d/convexHull.mak0100644000175000001440000001062407437361202020072 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on convexHull.dsp !IF "$(CFG)" == "" CFG=convexHull - Win32 Debug !MESSAGE No configuration specified. Defaulting to convexHull - Win32 Debug. !ENDIF !IF "$(CFG)" != "convexHull - Win32 Release" && "$(CFG)" != "convexHull - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "convexHull.mak" CFG="convexHull - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "convexHull - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "convexHull - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "convexHull - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\convexHull.exe" CLEAN : -@erase "$(INTDIR)\convexHull.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\convexHull.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\convexHull.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\convexHull.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\convexHull.pdb" /machine:I386 /out:"$(OUTDIR)\convexHull.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\convexHull.obj" "$(OUTDIR)\convexHull.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "convexHull - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\convexHull.exe" CLEAN : -@erase "$(INTDIR)\convexHull.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\convexHull.exe" -@erase "$(OUTDIR)\convexHull.ilk" -@erase "$(OUTDIR)\convexHull.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\convexHull.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\convexHull.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\convexHull.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\convexHull.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\convexHull.obj" "$(OUTDIR)\convexHull.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("convexHull.dep") !INCLUDE "convexHull.dep" !ELSE !MESSAGE Warning: cannot find "convexHull.dep" !ENDIF !ENDIF !IF "$(CFG)" == "convexHull - Win32 Release" || "$(CFG)" == "convexHull - Win32 Debug" SOURCE=..\..\..\progs\geom2d\convexHull.cpp "$(INTDIR)\convexHull.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/geom2d/geom2d.dsw0100644000175000001440000000215007437361202017140 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "convexHull"=.\convexHull.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "pointOnCircle"=.\pointOnCircle.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "testLine"=.\testLine.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "testPoint"=.\testPoint.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/geom2d/pointOnCircle.dsp0100644000175000001440000001072707437361202020535 0ustar joachimusers# Microsoft Developer Studio Project File - Name="pointOnCircle" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=pointOnCircle - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "pointOnCircle.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pointOnCircle.mak" CFG="pointOnCircle - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pointOnCircle - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "pointOnCircle - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pointOnCircle - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "pointOnCircle - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "pointOnCircle___Win32_Debug" # PROP BASE Intermediate_Dir "pointOnCircle___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "pointOnCircle - Win32 Release" # Name "pointOnCircle - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\geom2d\pointOnCircle.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/geom2d/pointOnCircle.mak0100644000175000001440000001100607437361202020506 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on pointOnCircle.dsp !IF "$(CFG)" == "" CFG=pointOnCircle - Win32 Debug !MESSAGE No configuration specified. Defaulting to pointOnCircle - Win32 Debug. !ENDIF !IF "$(CFG)" != "pointOnCircle - Win32 Release" && "$(CFG)" != "pointOnCircle - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pointOnCircle.mak" CFG="pointOnCircle - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pointOnCircle - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "pointOnCircle - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pointOnCircle - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\pointOnCircle.exe" CLEAN : -@erase "$(INTDIR)\pointOnCircle.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\pointOnCircle.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pointOnCircle.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pointOnCircle.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\pointOnCircle.pdb" /machine:I386 /out:"$(OUTDIR)\pointOnCircle.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pointOnCircle.obj" "$(OUTDIR)\pointOnCircle.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "pointOnCircle - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\pointOnCircle.exe" CLEAN : -@erase "$(INTDIR)\pointOnCircle.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\pointOnCircle.exe" -@erase "$(OUTDIR)\pointOnCircle.ilk" -@erase "$(OUTDIR)\pointOnCircle.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\pointOnCircle.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pointOnCircle.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\pointOnCircle.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\pointOnCircle.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pointOnCircle.obj" "$(OUTDIR)\pointOnCircle.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("pointOnCircle.dep") !INCLUDE "pointOnCircle.dep" !ELSE !MESSAGE Warning: cannot find "pointOnCircle.dep" !ENDIF !ENDIF !IF "$(CFG)" == "pointOnCircle - Win32 Release" || "$(CFG)" == "pointOnCircle - Win32 Debug" SOURCE=..\..\..\progs\geom2d\pointOnCircle.cpp "$(INTDIR)\pointOnCircle.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/geom2d/testLine.dsp0100644000175000001440000001062107437361202017545 0ustar joachimusers# Microsoft Developer Studio Project File - Name="testLine" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=testLine - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "testLine.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "testLine.mak" CFG="testLine - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "testLine - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "testLine - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "testLine - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "testLine - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "testLine___Win32_Debug" # PROP BASE Intermediate_Dir "testLine___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "testLine - Win32 Release" # Name "testLine - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\geom2d\testLine.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/geom2d/testLine.mak0100644000175000001440000001051007437361202017524 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on testLine.dsp !IF "$(CFG)" == "" CFG=testLine - Win32 Debug !MESSAGE No configuration specified. Defaulting to testLine - Win32 Debug. !ENDIF !IF "$(CFG)" != "testLine - Win32 Release" && "$(CFG)" != "testLine - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "testLine.mak" CFG="testLine - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "testLine - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "testLine - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "testLine - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\testLine.exe" CLEAN : -@erase "$(INTDIR)\testLine.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\testLine.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\testLine.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\testLine.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\testLine.pdb" /machine:I386 /out:"$(OUTDIR)\testLine.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\testLine.obj" "$(OUTDIR)\testLine.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "testLine - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\testLine.exe" CLEAN : -@erase "$(INTDIR)\testLine.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\testLine.exe" -@erase "$(OUTDIR)\testLine.ilk" -@erase "$(OUTDIR)\testLine.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\testLine.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\testLine.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\testLine.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\testLine.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\testLine.obj" "$(OUTDIR)\testLine.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("testLine.dep") !INCLUDE "testLine.dep" !ELSE !MESSAGE Warning: cannot find "testLine.dep" !ENDIF !ENDIF !IF "$(CFG)" == "testLine - Win32 Release" || "$(CFG)" == "testLine - Win32 Debug" SOURCE=..\..\..\progs\geom2d\testLine.cpp "$(INTDIR)\testLine.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/geom2d/testPoint.dsp0100644000175000001440000001063707437361202017756 0ustar joachimusers# Microsoft Developer Studio Project File - Name="testPoint" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=testPoint - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "testPoint.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "testPoint.mak" CFG="testPoint - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "testPoint - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "testPoint - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "testPoint - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "testPoint - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "testPoint___Win32_Debug" # PROP BASE Intermediate_Dir "testPoint___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "testPoint - Win32 Release" # Name "testPoint - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\geom2d\testPoint.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/geom2d/testPoint.mak0100644000175000001440000001055607437361202017740 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on testPoint.dsp !IF "$(CFG)" == "" CFG=testPoint - Win32 Debug !MESSAGE No configuration specified. Defaulting to testPoint - Win32 Debug. !ENDIF !IF "$(CFG)" != "testPoint - Win32 Release" && "$(CFG)" != "testPoint - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "testPoint.mak" CFG="testPoint - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "testPoint - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "testPoint - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "testPoint - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\testPoint.exe" CLEAN : -@erase "$(INTDIR)\testPoint.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\testPoint.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\testPoint.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\testPoint.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\testPoint.pdb" /machine:I386 /out:"$(OUTDIR)\testPoint.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\testPoint.obj" "$(OUTDIR)\testPoint.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "testPoint - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\testPoint.exe" CLEAN : -@erase "$(INTDIR)\testPoint.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\testPoint.exe" -@erase "$(OUTDIR)\testPoint.ilk" -@erase "$(OUTDIR)\testPoint.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\testPoint.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\testPoint.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\testPoint.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\testPoint.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\testPoint.obj" "$(OUTDIR)\testPoint.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("testPoint.dep") !INCLUDE "testPoint.dep" !ELSE !MESSAGE Warning: cannot find "testPoint.dep" !ENDIF !ENDIF !IF "$(CFG)" == "testPoint - Win32 Release" || "$(CFG)" == "testPoint - Win32 Debug" SOURCE=..\..\..\progs\geom2d\testPoint.cpp "$(INTDIR)\testPoint.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/geom3d/0040755000175000001440000000000010147210064015241 5ustar joachimuserscore++-1.7/win32/progs/geom3d/geom3d.dsw0100644000175000001440000000132207437361202017142 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "line2d"=.\line2d.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "line3d"=.\line3d.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/geom3d/line2d.dsp0100644000175000001440000001741107437361202017140 0ustar joachimusers# Microsoft Developer Studio Project File - Name="line2d" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=line2d - Win32 Debug Level3 !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "line2d.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "line2d.mak" CFG="line2d - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "line2d - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "line2d - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "line2d - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "line2d - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "line2d - Win32 Release Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release Level1" # PROP BASE Intermediate_Dir "Release Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level1" # PROP Intermediate_Dir "Release_Level1" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "line2d - Win32 Debug Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug Level1" # PROP BASE Intermediate_Dir "Debug Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level1" # PROP Intermediate_Dir "Debug_Level1" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "line2d - Win32 Release Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release Level3" # PROP BASE Intermediate_Dir "Release Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level3" # PROP Intermediate_Dir "Release_Level3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "line2d - Win32 Debug Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug Level3" # PROP BASE Intermediate_Dir "Debug Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level3" # PROP Intermediate_Dir "Debug_Level3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "line2d - Win32 Release Level1" # Name "line2d - Win32 Debug Level1" # Name "line2d - Win32 Release Level3" # Name "line2d - Win32 Debug Level3" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\geom3d\lines2d.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/geom3d/line2d.mak0100644000175000001440000001664607437361202017133 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on line2d.dsp !IF "$(CFG)" == "" CFG=line2d - Win32 Debug Level3 !MESSAGE No configuration specified. Defaulting to line2d - Win32 Debug Level3. !ENDIF !IF "$(CFG)" != "line2d - Win32 Release Level1" && "$(CFG)" != "line2d - Win32 Debug Level1" && "$(CFG)" != "line2d - Win32 Release Level3" && "$(CFG)" != "line2d - Win32 Debug Level3" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "line2d.mak" CFG="line2d - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "line2d - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "line2d - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "line2d - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "line2d - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "line2d - Win32 Release Level1" OUTDIR=.\Release_Level1 INTDIR=.\Release_Level1 # Begin Custom Macros OutDir=.\Release_Level1 # End Custom Macros ALL : "$(OUTDIR)\line2d.exe" CLEAN : -@erase "$(INTDIR)\lines2d.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\line2d.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\line2d.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\line2d.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\line2d.pdb" /machine:I386 /out:"$(OUTDIR)\line2d.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\lines2d.obj" "$(OUTDIR)\line2d.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "line2d - Win32 Debug Level1" OUTDIR=.\Debug_Level1 INTDIR=.\Debug_Level1 # Begin Custom Macros OutDir=.\Debug_Level1 # End Custom Macros ALL : "$(OUTDIR)\line2d.exe" CLEAN : -@erase "$(INTDIR)\lines2d.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\line2d.exe" -@erase "$(OUTDIR)\line2d.ilk" -@erase "$(OUTDIR)\line2d.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\line2d.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\line2d.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\line2d.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\line2d.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\lines2d.obj" "$(OUTDIR)\line2d.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "line2d - Win32 Release Level3" OUTDIR=.\Release_Level3 INTDIR=.\Release_Level3 # Begin Custom Macros OutDir=.\Release_Level3 # End Custom Macros ALL : "$(OUTDIR)\line2d.exe" CLEAN : -@erase "$(INTDIR)\lines2d.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\line2d.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\line2d.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\line2d.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\line2d.pdb" /machine:I386 /out:"$(OUTDIR)\line2d.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\lines2d.obj" "$(OUTDIR)\line2d.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "line2d - Win32 Debug Level3" OUTDIR=.\Debug_Level3 INTDIR=.\Debug_Level3 # Begin Custom Macros OutDir=.\Debug_Level3 # End Custom Macros ALL : "$(OUTDIR)\line2d.exe" CLEAN : -@erase "$(INTDIR)\lines2d.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\line2d.exe" -@erase "$(OUTDIR)\line2d.ilk" -@erase "$(OUTDIR)\line2d.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\line2d.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\line2d.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\line2d.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\line2d.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\lines2d.obj" "$(OUTDIR)\line2d.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("line2d.dep") !INCLUDE "line2d.dep" !ELSE !MESSAGE Warning: cannot find "line2d.dep" !ENDIF !ENDIF !IF "$(CFG)" == "line2d - Win32 Release Level1" || "$(CFG)" == "line2d - Win32 Debug Level1" || "$(CFG)" == "line2d - Win32 Release Level3" || "$(CFG)" == "line2d - Win32 Debug Level3" SOURCE=..\..\..\progs\geom3d\lines2d.cpp "$(INTDIR)\lines2d.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/geom3d/line3d.dsp0100644000175000001440000001760107437361202017142 0ustar joachimusers# Microsoft Developer Studio Project File - Name="line3d" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=line3d - Win32 Debug Level3 !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "line3d.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "line3d.mak" CFG="line3d - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "line3d - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "line3d - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "line3d - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "line3d - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "line3d - Win32 Release Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "line3d___Win32_Release_Level1" # PROP BASE Intermediate_Dir "line3d___Win32_Release_Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level1" # PROP Intermediate_Dir "Release_Level1" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "line3d - Win32 Debug Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "line3d___Win32_Debug_Level1" # PROP BASE Intermediate_Dir "line3d___Win32_Debug_Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level1" # PROP Intermediate_Dir "Debug_Level1" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "line3d - Win32 Release Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "line3d___Win32_Release_Level3" # PROP BASE Intermediate_Dir "line3d___Win32_Release_Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level3" # PROP Intermediate_Dir "Release_Level3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "line3d - Win32 Debug Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "line3d___Win32_Debug_Level3" # PROP BASE Intermediate_Dir "line3d___Win32_Debug_Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level3" # PROP Intermediate_Dir "Debug_Level3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "line3d - Win32 Release Level1" # Name "line3d - Win32 Debug Level1" # Name "line3d - Win32 Release Level3" # Name "line3d - Win32 Debug Level3" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\geom3d\lines3d.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/geom3d/line3d.mak0100644000175000001440000001664607437361202017134 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on line3d.dsp !IF "$(CFG)" == "" CFG=line3d - Win32 Debug Level3 !MESSAGE No configuration specified. Defaulting to line3d - Win32 Debug Level3. !ENDIF !IF "$(CFG)" != "line3d - Win32 Release Level1" && "$(CFG)" != "line3d - Win32 Debug Level1" && "$(CFG)" != "line3d - Win32 Release Level3" && "$(CFG)" != "line3d - Win32 Debug Level3" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "line3d.mak" CFG="line3d - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "line3d - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "line3d - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "line3d - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "line3d - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "line3d - Win32 Release Level1" OUTDIR=.\Release_Level1 INTDIR=.\Release_Level1 # Begin Custom Macros OutDir=.\Release_Level1 # End Custom Macros ALL : "$(OUTDIR)\line3d.exe" CLEAN : -@erase "$(INTDIR)\lines3d.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\line3d.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\line3d.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\line3d.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\line3d.pdb" /machine:I386 /out:"$(OUTDIR)\line3d.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\lines3d.obj" "$(OUTDIR)\line3d.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "line3d - Win32 Debug Level1" OUTDIR=.\Debug_Level1 INTDIR=.\Debug_Level1 # Begin Custom Macros OutDir=.\Debug_Level1 # End Custom Macros ALL : "$(OUTDIR)\line3d.exe" CLEAN : -@erase "$(INTDIR)\lines3d.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\line3d.exe" -@erase "$(OUTDIR)\line3d.ilk" -@erase "$(OUTDIR)\line3d.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\line3d.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\line3d.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\line3d.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\line3d.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\lines3d.obj" "$(OUTDIR)\line3d.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "line3d - Win32 Release Level3" OUTDIR=.\Release_Level3 INTDIR=.\Release_Level3 # Begin Custom Macros OutDir=.\Release_Level3 # End Custom Macros ALL : "$(OUTDIR)\line3d.exe" CLEAN : -@erase "$(INTDIR)\lines3d.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\line3d.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\line3d.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\line3d.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\line3d.pdb" /machine:I386 /out:"$(OUTDIR)\line3d.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\lines3d.obj" "$(OUTDIR)\line3d.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "line3d - Win32 Debug Level3" OUTDIR=.\Debug_Level3 INTDIR=.\Debug_Level3 # Begin Custom Macros OutDir=.\Debug_Level3 # End Custom Macros ALL : "$(OUTDIR)\line3d.exe" CLEAN : -@erase "$(INTDIR)\lines3d.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\line3d.exe" -@erase "$(OUTDIR)\line3d.ilk" -@erase "$(OUTDIR)\line3d.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\line3d.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\line3d.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\line3d.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\line3d.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\lines3d.obj" "$(OUTDIR)\line3d.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("line3d.dep") !INCLUDE "line3d.dep" !ELSE !MESSAGE Warning: cannot find "line3d.dep" !ENDIF !ENDIF !IF "$(CFG)" == "line3d - Win32 Release Level1" || "$(CFG)" == "line3d - Win32 Debug Level1" || "$(CFG)" == "line3d - Win32 Release Level3" || "$(CFG)" == "line3d - Win32 Debug Level3" SOURCE=..\..\..\progs\geom3d\lines3d.cpp "$(INTDIR)\lines3d.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/heron/0040755000175000001440000000000010147210064015176 5ustar joachimuserscore++-1.7/win32/progs/heron/heron.dsp0100644000175000001440000001051207437361202017026 0ustar joachimusers# Microsoft Developer Studio Project File - Name="heron" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=heron - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "heron.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "heron.mak" CFG="heron - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "heron - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "heron - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "heron - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "heron - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "heron - Win32 Release" # Name "heron - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\heron\heron.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/heron/heron.dsw0100644000175000001440000000102507437361202017034 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "heron"=.\heron.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/heron/heron.mak0100644000175000001440000001032507437361202017012 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on heron.dsp !IF "$(CFG)" == "" CFG=heron - Win32 Debug !MESSAGE No configuration specified. Defaulting to heron - Win32 Debug. !ENDIF !IF "$(CFG)" != "heron - Win32 Release" && "$(CFG)" != "heron - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "heron.mak" CFG="heron - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "heron - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "heron - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "heron - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\heron.exe" CLEAN : -@erase "$(INTDIR)\heron.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\heron.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\heron.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\heron.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\heron.pdb" /machine:I386 /out:"$(OUTDIR)\heron.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\heron.obj" "$(OUTDIR)\heron.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "heron - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\heron.exe" CLEAN : -@erase "$(INTDIR)\heron.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\heron.exe" -@erase "$(OUTDIR)\heron.ilk" -@erase "$(OUTDIR)\heron.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\heron.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\heron.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\heron.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\heron.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\heron.obj" "$(OUTDIR)\heron.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("heron.dep") !INCLUDE "heron.dep" !ELSE !MESSAGE Warning: cannot find "heron.dep" !ENDIF !ENDIF !IF "$(CFG)" == "heron - Win32 Release" || "$(CFG)" == "heron - Win32 Debug" SOURCE=..\..\..\progs\heron\heron.cpp "$(INTDIR)\heron.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/ieee/0040755000175000001440000000000010147210064014772 5ustar joachimuserscore++-1.7/win32/progs/ieee/ieee.dsp0100644000175000001440000001050307437361202016416 0ustar joachimusers# Microsoft Developer Studio Project File - Name="ieee" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=ieee - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "ieee.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "ieee.mak" CFG="ieee - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ieee - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ieee - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "ieee - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "ieee - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "ieee - Win32 Release" # Name "ieee - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\ieee\ieeeFormat.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/ieee/ieee.dsw0100644000175000001440000000102307437361202016422 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "ieee"=.\ieee.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/ieee/ieee.mak0100644000175000001440000001032207437361202016377 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on ieee.dsp !IF "$(CFG)" == "" CFG=ieee - Win32 Debug !MESSAGE No configuration specified. Defaulting to ieee - Win32 Debug. !ENDIF !IF "$(CFG)" != "ieee - Win32 Release" && "$(CFG)" != "ieee - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "ieee.mak" CFG="ieee - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ieee - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ieee - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "ieee - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\ieee.exe" CLEAN : -@erase "$(INTDIR)\ieeeFormat.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\ieee.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\ieee.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\ieee.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\ieee.pdb" /machine:I386 /out:"$(OUTDIR)\ieee.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\ieeeFormat.obj" "$(OUTDIR)\ieee.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "ieee - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\ieee.exe" CLEAN : -@erase "$(INTDIR)\ieeeFormat.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\ieee.exe" -@erase "$(OUTDIR)\ieee.ilk" -@erase "$(OUTDIR)\ieee.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\ieee.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\ieee.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\ieee.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\ieee.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\ieeeFormat.obj" "$(OUTDIR)\ieee.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("ieee.dep") !INCLUDE "ieee.dep" !ELSE !MESSAGE Warning: cannot find "ieee.dep" !ENDIF !ENDIF !IF "$(CFG)" == "ieee - Win32 Release" || "$(CFG)" == "ieee - Win32 Debug" SOURCE=..\..\..\progs\ieee\ieeeFormat.cpp "$(INTDIR)\ieeeFormat.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/kahan/0040755000175000001440000000000010147210064015145 5ustar joachimuserscore++-1.7/win32/progs/kahan/kahan.dsp0100644000175000001440000001060207437361202016744 0ustar joachimusers# Microsoft Developer Studio Project File - Name="kahan" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=kahan - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "kahan.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "kahan.mak" CFG="kahan - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "kahan - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "kahan - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "kahan - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "kahan - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "kahan - Win32 Release" # Name "kahan - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\kahan\kahan.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/kahan/kahan.dsw0100644000175000001440000000102507437361202016752 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "kahan"=.\kahan.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/kahan/kahan.mak0100644000175000001440000001032507437361202016730 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on kahan.dsp !IF "$(CFG)" == "" CFG=kahan - Win32 Debug !MESSAGE No configuration specified. Defaulting to kahan - Win32 Debug. !ENDIF !IF "$(CFG)" != "kahan - Win32 Release" && "$(CFG)" != "kahan - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "kahan.mak" CFG="kahan - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "kahan - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "kahan - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "kahan - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\kahan.exe" CLEAN : -@erase "$(INTDIR)\kahan.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\kahan.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\kahan.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\kahan.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\kahan.pdb" /machine:I386 /out:"$(OUTDIR)\kahan.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\kahan.obj" "$(OUTDIR)\kahan.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "kahan - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\kahan.exe" CLEAN : -@erase "$(INTDIR)\kahan.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\kahan.exe" -@erase "$(OUTDIR)\kahan.ilk" -@erase "$(OUTDIR)\kahan.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\kahan.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\kahan.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\kahan.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\kahan.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\kahan.obj" "$(OUTDIR)\kahan.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("kahan.dep") !INCLUDE "kahan.dep" !ELSE !MESSAGE Warning: cannot find "kahan.dep" !ENDIF !ENDIF !IF "$(CFG)" == "kahan - Win32 Release" || "$(CFG)" == "kahan - Win32 Debug" SOURCE=..\..\..\progs\kahan\kahan.cpp "$(INTDIR)\kahan.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/nestedSqrt/0040755000175000001440000000000010147210064016217 5ustar joachimuserscore++-1.7/win32/progs/nestedSqrt/nestedSqrt.dsp0100644000175000001440000001061307437361202021072 0ustar joachimusers# Microsoft Developer Studio Project File - Name="nestedSqrt" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=nestedSqrt - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "nestedSqrt.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "nestedSqrt.mak" CFG="nestedSqrt - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "nestedSqrt - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "nestedSqrt - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "nestedSqrt - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "nestedSqrt - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "nestedSqrt - Win32 Release" # Name "nestedSqrt - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\nestedSqrt\nestedSqrt.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/nestedSqrt/nestedSqrt.dsw0100644000175000001440000000103707437361202021101 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "nestedSqrt"=.\nestedSqrt.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/nestedSqrt/nestedSqrt.mak0100644000175000001440000001063007437361202021053 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on nestedSqrt.dsp !IF "$(CFG)" == "" CFG=nestedSqrt - Win32 Debug !MESSAGE No configuration specified. Defaulting to nestedSqrt - Win32 Debug. !ENDIF !IF "$(CFG)" != "nestedSqrt - Win32 Release" && "$(CFG)" != "nestedSqrt - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "nestedSqrt.mak" CFG="nestedSqrt - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "nestedSqrt - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "nestedSqrt - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "nestedSqrt - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\nestedSqrt.exe" CLEAN : -@erase "$(INTDIR)\nestedSqrt.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\nestedSqrt.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\nestedSqrt.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\nestedSqrt.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\nestedSqrt.pdb" /machine:I386 /out:"$(OUTDIR)\nestedSqrt.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\nestedSqrt.obj" "$(OUTDIR)\nestedSqrt.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "nestedSqrt - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\nestedSqrt.exe" CLEAN : -@erase "$(INTDIR)\nestedSqrt.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\nestedSqrt.exe" -@erase "$(OUTDIR)\nestedSqrt.ilk" -@erase "$(OUTDIR)\nestedSqrt.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\nestedSqrt.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\nestedSqrt.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\nestedSqrt.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\nestedSqrt.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\nestedSqrt.obj" "$(OUTDIR)\nestedSqrt.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("nestedSqrt.dep") !INCLUDE "nestedSqrt.dep" !ELSE !MESSAGE Warning: cannot find "nestedSqrt.dep" !ENDIF !ENDIF !IF "$(CFG)" == "nestedSqrt - Win32 Release" || "$(CFG)" == "nestedSqrt - Win32 Debug" SOURCE=..\..\..\progs\nestedSqrt\nestedSqrt.cpp "$(INTDIR)\nestedSqrt.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/pentagon/0040755000175000001440000000000010147210064015676 5ustar joachimuserscore++-1.7/win32/progs/pentagon/pentagon.dsp0100644000175000001440000001760607437361202020241 0ustar joachimusers# Microsoft Developer Studio Project File - Name="pentagon" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=pentagon - Win32 Debug Level3 !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "pentagon.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pentagon.mak" CFG="pentagon - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pentagon - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "pentagon - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "pentagon - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "pentagon - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pentagon - Win32 Release Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release Level1" # PROP BASE Intermediate_Dir "Release Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level1" # PROP Intermediate_Dir "Release_Level1" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "pentagon - Win32 Debug Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug Level1" # PROP BASE Intermediate_Dir "Debug Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level1" # PROP Intermediate_Dir "Debug_Level1" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "pentagon - Win32 Release Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release Level3" # PROP BASE Intermediate_Dir "Release Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level3" # PROP Intermediate_Dir "Release_Level3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "pentagon - Win32 Debug Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug Level3" # PROP BASE Intermediate_Dir "Debug Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level3" # PROP Intermediate_Dir "Debug_Level3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "pentagon - Win32 Release Level1" # Name "pentagon - Win32 Debug Level1" # Name "pentagon - Win32 Release Level3" # Name "pentagon - Win32 Debug Level3" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\pentagon\pentagon.cpp # End Source File # Begin Source File SOURCE=..\..\..\progs\pentagon\transform.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/pentagon/pentagon.dsw0100644000175000001440000000103307437361202020233 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "pentagon"=.\pentagon.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/pentagon/pentagon.mak0100644000175000001440000001766007437361202020223 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on pentagon.dsp !IF "$(CFG)" == "" CFG=pentagon - Win32 Debug Level3 !MESSAGE No configuration specified. Defaulting to pentagon - Win32 Debug Level3. !ENDIF !IF "$(CFG)" != "pentagon - Win32 Release Level1" && "$(CFG)" != "pentagon - Win32 Debug Level1" && "$(CFG)" != "pentagon - Win32 Release Level3" && "$(CFG)" != "pentagon - Win32 Debug Level3" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "pentagon.mak" CFG="pentagon - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pentagon - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "pentagon - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "pentagon - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "pentagon - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "pentagon - Win32 Release Level1" OUTDIR=.\Release_Level1 INTDIR=.\Release_Level1 # Begin Custom Macros OutDir=.\Release_Level1 # End Custom Macros ALL : "$(OUTDIR)\pentagon.exe" CLEAN : -@erase "$(INTDIR)\pentagon.obj" -@erase "$(INTDIR)\transform.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\pentagon.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\pentagon.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pentagon.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\pentagon.pdb" /machine:I386 /out:"$(OUTDIR)\pentagon.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pentagon.obj" \ "$(INTDIR)\transform.obj" "$(OUTDIR)\pentagon.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "pentagon - Win32 Debug Level1" OUTDIR=.\Debug_Level1 INTDIR=.\Debug_Level1 # Begin Custom Macros OutDir=.\Debug_Level1 # End Custom Macros ALL : "$(OUTDIR)\pentagon.exe" CLEAN : -@erase "$(INTDIR)\pentagon.obj" -@erase "$(INTDIR)\transform.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\pentagon.exe" -@erase "$(OUTDIR)\pentagon.ilk" -@erase "$(OUTDIR)\pentagon.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\pentagon.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pentagon.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\pentagon.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\pentagon.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pentagon.obj" \ "$(INTDIR)\transform.obj" "$(OUTDIR)\pentagon.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "pentagon - Win32 Release Level3" OUTDIR=.\Release_Level3 INTDIR=.\Release_Level3 # Begin Custom Macros OutDir=.\Release_Level3 # End Custom Macros ALL : "$(OUTDIR)\pentagon.exe" CLEAN : -@erase "$(INTDIR)\pentagon.obj" -@erase "$(INTDIR)\transform.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\pentagon.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\pentagon.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pentagon.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\pentagon.pdb" /machine:I386 /out:"$(OUTDIR)\pentagon.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pentagon.obj" \ "$(INTDIR)\transform.obj" "$(OUTDIR)\pentagon.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "pentagon - Win32 Debug Level3" OUTDIR=.\Debug_Level3 INTDIR=.\Debug_Level3 # Begin Custom Macros OutDir=.\Debug_Level3 # End Custom Macros ALL : "$(OUTDIR)\pentagon.exe" CLEAN : -@erase "$(INTDIR)\pentagon.obj" -@erase "$(INTDIR)\transform.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\pentagon.exe" -@erase "$(OUTDIR)\pentagon.ilk" -@erase "$(OUTDIR)\pentagon.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\pentagon.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\pentagon.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\pentagon.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\pentagon.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\pentagon.obj" \ "$(INTDIR)\transform.obj" "$(OUTDIR)\pentagon.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("pentagon.dep") !INCLUDE "pentagon.dep" !ELSE !MESSAGE Warning: cannot find "pentagon.dep" !ENDIF !ENDIF !IF "$(CFG)" == "pentagon - Win32 Release Level1" || "$(CFG)" == "pentagon - Win32 Debug Level1" || "$(CFG)" == "pentagon - Win32 Release Level3" || "$(CFG)" == "pentagon - Win32 Debug Level3" SOURCE=..\..\..\progs\pentagon\pentagon.cpp "$(INTDIR)\pentagon.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\progs\pentagon\transform.cpp "$(INTDIR)\transform.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/prover/0040755000175000001440000000000010147210064015400 5ustar joachimuserscore++-1.7/win32/progs/prover/prover.dsp0100644000175000001440000002017407437361202017437 0ustar joachimusers# Microsoft Developer Studio Project File - Name="prover" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=prover - Win32 Debug Level3 !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "prover.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "prover.mak" CFG="prover - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "prover - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "prover - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "prover - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "prover - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "prover - Win32 Release Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "prover___Win32_Release_Level1" # PROP BASE Intermediate_Dir "prover___Win32_Release_Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level1" # PROP Intermediate_Dir "Release_Level1" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "prover - Win32 Debug Level1" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "prover___Win32_Debug_Level1" # PROP BASE Intermediate_Dir "prover___Win32_Debug_Level1" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level1" # PROP Intermediate_Dir "Debug_Level1" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "prover - Win32 Release Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "prover___Win32_Release_Level3" # PROP BASE Intermediate_Dir "prover___Win32_Release_Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Level3" # PROP Intermediate_Dir "Release_Level3" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "prover - Win32 Debug Level3" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "prover___Win32_Debug_Level3" # PROP BASE Intermediate_Dir "prover___Win32_Debug_Level3" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Level3" # PROP Intermediate_Dir "Debug_Level3" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "prover - Win32 Release Level1" # Name "prover - Win32 Debug Level1" # Name "prover - Win32 Release Level3" # Name "prover - Win32 Debug Level3" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\prover\prover.cpp # End Source File # Begin Source File SOURCE=..\..\..\progs\prover\terms.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/prover/prover.dsw0100644000175000001440000000102707437361202017442 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "prover"=.\prover.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/prover/prover.mak0100644000175000001440000001740007437361202017417 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on prover.dsp !IF "$(CFG)" == "" CFG=prover - Win32 Debug Level3 !MESSAGE No configuration specified. Defaulting to prover - Win32 Debug Level3. !ENDIF !IF "$(CFG)" != "prover - Win32 Release Level1" && "$(CFG)" != "prover - Win32 Debug Level1" && "$(CFG)" != "prover - Win32 Release Level3" && "$(CFG)" != "prover - Win32 Debug Level3" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "prover.mak" CFG="prover - Win32 Debug Level3" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "prover - Win32 Release Level1" (based on "Win32 (x86) Console Application") !MESSAGE "prover - Win32 Debug Level1" (based on "Win32 (x86) Console Application") !MESSAGE "prover - Win32 Release Level3" (based on "Win32 (x86) Console Application") !MESSAGE "prover - Win32 Debug Level3" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "prover - Win32 Release Level1" OUTDIR=.\Release_Level1 INTDIR=.\Release_Level1 # Begin Custom Macros OutDir=.\Release_Level1 # End Custom Macros ALL : "$(OUTDIR)\prover.exe" CLEAN : -@erase "$(INTDIR)\prover.obj" -@erase "$(INTDIR)\terms.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\prover.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\prover.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\prover.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\prover.pdb" /machine:I386 /out:"$(OUTDIR)\prover.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\prover.obj" \ "$(INTDIR)\terms.obj" "$(OUTDIR)\prover.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "prover - Win32 Debug Level1" OUTDIR=.\Debug_Level1 INTDIR=.\Debug_Level1 # Begin Custom Macros OutDir=.\Debug_Level1 # End Custom Macros ALL : "$(OUTDIR)\prover.exe" CLEAN : -@erase "$(INTDIR)\prover.obj" -@erase "$(INTDIR)\terms.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\prover.exe" -@erase "$(OUTDIR)\prover.ilk" -@erase "$(OUTDIR)\prover.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=1 /Fp"$(INTDIR)\prover.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\prover.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\prover.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\prover.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\prover.obj" \ "$(INTDIR)\terms.obj" "$(OUTDIR)\prover.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "prover - Win32 Release Level3" OUTDIR=.\Release_Level3 INTDIR=.\Release_Level3 # Begin Custom Macros OutDir=.\Release_Level3 # End Custom Macros ALL : "$(OUTDIR)\prover.exe" CLEAN : -@erase "$(INTDIR)\prover.obj" -@erase "$(INTDIR)\terms.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\prover.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\prover.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\prover.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\prover.pdb" /machine:I386 /out:"$(OUTDIR)\prover.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\prover.obj" \ "$(INTDIR)\terms.obj" "$(OUTDIR)\prover.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "prover - Win32 Debug Level3" OUTDIR=.\Debug_Level3 INTDIR=.\Debug_Level3 # Begin Custom Macros OutDir=.\Debug_Level3 # End Custom Macros ALL : "$(OUTDIR)\prover.exe" CLEAN : -@erase "$(INTDIR)\prover.obj" -@erase "$(INTDIR)\terms.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\prover.exe" -@erase "$(OUTDIR)\prover.ilk" -@erase "$(OUTDIR)\prover.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D Level=3 /Fp"$(INTDIR)\prover.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\prover.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\prover.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\prover.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\prover.obj" \ "$(INTDIR)\terms.obj" "$(OUTDIR)\prover.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("prover.dep") !INCLUDE "prover.dep" !ELSE !MESSAGE Warning: cannot find "prover.dep" !ENDIF !ENDIF !IF "$(CFG)" == "prover - Win32 Release Level1" || "$(CFG)" == "prover - Win32 Debug Level1" || "$(CFG)" == "prover - Win32 Release Level3" || "$(CFG)" == "prover - Win32 Debug Level3" SOURCE=..\..\..\progs\prover\prover.cpp "$(INTDIR)\prover.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) SOURCE=..\..\..\progs\prover\terms.cpp "$(INTDIR)\terms.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/sumOfSqrts/0040755000175000001440000000000010147210064016211 5ustar joachimuserscore++-1.7/win32/progs/sumOfSqrts/graham.dsp0100644000175000001440000001057107437361202020172 0ustar joachimusers# Microsoft Developer Studio Project File - Name="graham" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=graham - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "graham.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "graham.mak" CFG="graham - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "graham - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "graham - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "graham - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "graham - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "graham___Win32_Debug" # PROP BASE Intermediate_Dir "graham___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "graham - Win32 Release" # Name "graham - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\sumOfSqrts\graham.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/sumOfSqrts/graham.mak0100644000175000001440000001040007437361202020143 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on graham.dsp !IF "$(CFG)" == "" CFG=graham - Win32 Debug !MESSAGE No configuration specified. Defaulting to graham - Win32 Debug. !ENDIF !IF "$(CFG)" != "graham - Win32 Release" && "$(CFG)" != "graham - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "graham.mak" CFG="graham - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "graham - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "graham - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "graham - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\graham.exe" CLEAN : -@erase "$(INTDIR)\graham.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\graham.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\graham.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\graham.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\graham.pdb" /machine:I386 /out:"$(OUTDIR)\graham.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\graham.obj" "$(OUTDIR)\graham.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "graham - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\graham.exe" CLEAN : -@erase "$(INTDIR)\graham.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\graham.exe" -@erase "$(OUTDIR)\graham.ilk" -@erase "$(OUTDIR)\graham.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\graham.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\graham.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\graham.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\graham.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\graham.obj" "$(OUTDIR)\graham.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("graham.dep") !INCLUDE "graham.dep" !ELSE !MESSAGE Warning: cannot find "graham.dep" !ENDIF !ENDIF !IF "$(CFG)" == "graham - Win32 Release" || "$(CFG)" == "graham - Win32 Debug" SOURCE=..\..\..\progs\sumOfSqrts\graham.cpp "$(INTDIR)\graham.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/sumOfSqrts/orourke.dsp0100644000175000001440000001106507437361202020420 0ustar joachimusers# Microsoft Developer Studio Project File - Name="orourke" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=orourke - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "orourke.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "orourke.mak" CFG="orourke - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "orourke - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "orourke - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "orourke - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "orourke___Win32_Release" # PROP BASE Intermediate_Dir "orourke___Win32_Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "orourke - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "orourke___Win32_Debug" # PROP BASE Intermediate_Dir "orourke___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "orourke - Win32 Release" # Name "orourke - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\sumOfSqrts\orourke.cpp !IF "$(CFG)" == "orourke - Win32 Release" !ELSEIF "$(CFG)" == "orourke - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/sumOfSqrts/orourke.mak0100644000175000001440000001072507437361202020404 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on orourke.dsp !IF "$(CFG)" == "" CFG=orourke - Win32 Debug !MESSAGE No configuration specified. Defaulting to orourke - Win32 Debug. !ENDIF !IF "$(CFG)" != "orourke - Win32 Release" && "$(CFG)" != "orourke - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "orourke.mak" CFG="orourke - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "orourke - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "orourke - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "orourke - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\orourke.exe" CLEAN : -@erase "$(INTDIR)\orourke.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\orourke.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\orourke.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\orourke.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\orourke.pdb" /machine:I386 /out:"$(OUTDIR)\orourke.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\orourke.obj" "$(OUTDIR)\orourke.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "orourke - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\orourke.exe" CLEAN : -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\orourke.exe" -@erase "$(OUTDIR)\orourke.ilk" -@erase "$(OUTDIR)\orourke.pdb" -@erase ".\Debug\orourke.obj" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\orourke.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\orourke.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\orourke.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\orourke.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ ".\Debug\orourke.obj" "$(OUTDIR)\orourke.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("orourke.dep") !INCLUDE "orourke.dep" !ELSE !MESSAGE Warning: cannot find "orourke.dep" !ENDIF !ENDIF !IF "$(CFG)" == "orourke - Win32 Release" || "$(CFG)" == "orourke - Win32 Debug" SOURCE=..\..\..\progs\sumOfSqrts\orourke.cpp !IF "$(CFG)" == "orourke - Win32 Release" "$(INTDIR)\orourke.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "orourke - Win32 Debug" ".\Debug\orourke.obj" : $(SOURCE) $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF !ENDIF core++-1.7/win32/progs/sumOfSqrts/sumOfSqrts.dsw0100644000175000001440000000132407437361202021064 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "graham"=.\graham.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "orourke"=.\orourke.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/testFilter/0040755000175000001440000000000010147210064016210 5ustar joachimuserscore++-1.7/win32/progs/testFilter/createMatrices.dsp0100644000175000001440000001075107437361202021665 0ustar joachimusers# Microsoft Developer Studio Project File - Name="createMatrices" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=createMatrices - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "createMatrices.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "createMatrices.mak" CFG="createMatrices - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "createMatrices - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "createMatrices - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "createMatrices - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "createMatrices - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "createMatrices___Win32_Debug" # PROP BASE Intermediate_Dir "createMatrices___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "createMatrices - Win32 Release" # Name "createMatrices - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\testFilter\createMatrices.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/testFilter/createMatrices.mak0100644000175000001440000001106007437361202021641 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on createMatrices.dsp !IF "$(CFG)" == "" CFG=createMatrices - Win32 Debug !MESSAGE No configuration specified. Defaulting to createMatrices - Win32 Debug. !ENDIF !IF "$(CFG)" != "createMatrices - Win32 Release" && "$(CFG)" != "createMatrices - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "createMatrices.mak" CFG="createMatrices - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "createMatrices - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "createMatrices - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "createMatrices - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\createMatrices.exe" CLEAN : -@erase "$(INTDIR)\createMatrices.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\createMatrices.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\createMatrices.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\createMatrices.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\createMatrices.pdb" /machine:I386 /out:"$(OUTDIR)\createMatrices.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\createMatrices.obj" "$(OUTDIR)\createMatrices.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "createMatrices - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\createMatrices.exe" CLEAN : -@erase "$(INTDIR)\createMatrices.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\createMatrices.exe" -@erase "$(OUTDIR)\createMatrices.ilk" -@erase "$(OUTDIR)\createMatrices.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\createMatrices.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\createMatrices.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\createMatrices.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\createMatrices.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\createMatrices.obj" "$(OUTDIR)\createMatrices.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("createMatrices.dep") !INCLUDE "createMatrices.dep" !ELSE !MESSAGE Warning: cannot find "createMatrices.dep" !ENDIF !ENDIF !IF "$(CFG)" == "createMatrices - Win32 Release" || "$(CFG)" == "createMatrices - Win32 Debug" SOURCE=..\..\..\progs\testFilter\createMatrices.cpp "$(INTDIR)\createMatrices.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/testFilter/testFilter.dsp0100644000175000001440000001061307437361202021054 0ustar joachimusers# Microsoft Developer Studio Project File - Name="testFilter" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=testFilter - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "testFilter.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "testFilter.mak" CFG="testFilter - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "testFilter - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "testFilter - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "testFilter - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "testFilter - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "testFilter - Win32 Release" # Name "testFilter - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\testFilter\testFilter.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/testFilter/testFilter.dsw0100644000175000001440000000216207437361202021063 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "createMatrices"=.\createMatrices.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "testFilter"=.\testFilter.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "timeFilter"=.\timeFilter.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "timeFilter1"=.\timeFilter1.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/testFilter/testFilter.mak0100644000175000001440000001063007437361202021035 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on testFilter.dsp !IF "$(CFG)" == "" CFG=testFilter - Win32 Debug !MESSAGE No configuration specified. Defaulting to testFilter - Win32 Debug. !ENDIF !IF "$(CFG)" != "testFilter - Win32 Release" && "$(CFG)" != "testFilter - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "testFilter.mak" CFG="testFilter - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "testFilter - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "testFilter - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "testFilter - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\testFilter.exe" CLEAN : -@erase "$(INTDIR)\testFilter.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\testFilter.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\testFilter.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\testFilter.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\testFilter.pdb" /machine:I386 /out:"$(OUTDIR)\testFilter.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\testFilter.obj" "$(OUTDIR)\testFilter.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "testFilter - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\testFilter.exe" CLEAN : -@erase "$(INTDIR)\testFilter.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\testFilter.exe" -@erase "$(OUTDIR)\testFilter.ilk" -@erase "$(OUTDIR)\testFilter.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\testFilter.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\testFilter.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\testFilter.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\testFilter.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\testFilter.obj" "$(OUTDIR)\testFilter.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("testFilter.dep") !INCLUDE "testFilter.dep" !ELSE !MESSAGE Warning: cannot find "testFilter.dep" !ENDIF !ENDIF !IF "$(CFG)" == "testFilter - Win32 Release" || "$(CFG)" == "testFilter - Win32 Debug" SOURCE=..\..\..\progs\testFilter\testFilter.cpp "$(INTDIR)\testFilter.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/testFilter/timeFilter.dsp0100644000175000001440000001066107437361202021036 0ustar joachimusers# Microsoft Developer Studio Project File - Name="timeFilter" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=timeFilter - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "timeFilter.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "timeFilter.mak" CFG="timeFilter - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "timeFilter - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "timeFilter - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "timeFilter - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "timeFilter - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "timeFilter___Win32_Debug" # PROP BASE Intermediate_Dir "timeFilter___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "timeFilter - Win32 Release" # Name "timeFilter - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\testFilter\timeFilter.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/testFilter/timeFilter.mak0100644000175000001440000001063007437361202021014 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on timeFilter.dsp !IF "$(CFG)" == "" CFG=timeFilter - Win32 Debug !MESSAGE No configuration specified. Defaulting to timeFilter - Win32 Debug. !ENDIF !IF "$(CFG)" != "timeFilter - Win32 Release" && "$(CFG)" != "timeFilter - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "timeFilter.mak" CFG="timeFilter - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "timeFilter - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "timeFilter - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "timeFilter - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\timeFilter.exe" CLEAN : -@erase "$(INTDIR)\timeFilter.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\timeFilter.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\timeFilter.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\timeFilter.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\timeFilter.pdb" /machine:I386 /out:"$(OUTDIR)\timeFilter.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\timeFilter.obj" "$(OUTDIR)\timeFilter.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "timeFilter - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\timeFilter.exe" CLEAN : -@erase "$(INTDIR)\timeFilter.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\timeFilter.exe" -@erase "$(OUTDIR)\timeFilter.ilk" -@erase "$(OUTDIR)\timeFilter.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\timeFilter.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\timeFilter.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\timeFilter.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\timeFilter.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\timeFilter.obj" "$(OUTDIR)\timeFilter.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("timeFilter.dep") !INCLUDE "timeFilter.dep" !ELSE !MESSAGE Warning: cannot find "timeFilter.dep" !ENDIF !ENDIF !IF "$(CFG)" == "timeFilter - Win32 Release" || "$(CFG)" == "timeFilter - Win32 Debug" SOURCE=..\..\..\progs\testFilter\timeFilter.cpp "$(INTDIR)\timeFilter.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/testFilter/timeFilter1.dsp0100644000175000001440000001112507437361202021113 0ustar joachimusers# Microsoft Developer Studio Project File - Name="timeFilter1" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=timeFilter1 - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "timeFilter1.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "timeFilter1.mak" CFG="timeFilter1 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "timeFilter1 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "timeFilter1 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "timeFilter1 - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "timeFilter1 - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "timeFilter1___Win32_Debug" # PROP BASE Intermediate_Dir "timeFilter1___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "timeFilter1 - Win32 Release" # Name "timeFilter1 - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\testFilter\timeFilter1.cpp !IF "$(CFG)" == "timeFilter1 - Win32 Release" !ELSEIF "$(CFG)" == "timeFilter1 - Win32 Debug" # PROP Intermediate_Dir "Debug" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/testFilter/timeFilter1.mak0100644000175000001440000001117107437361202021076 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on timeFilter1.dsp !IF "$(CFG)" == "" CFG=timeFilter1 - Win32 Debug !MESSAGE No configuration specified. Defaulting to timeFilter1 - Win32 Debug. !ENDIF !IF "$(CFG)" != "timeFilter1 - Win32 Release" && "$(CFG)" != "timeFilter1 - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "timeFilter1.mak" CFG="timeFilter1 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "timeFilter1 - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "timeFilter1 - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "timeFilter1 - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\timeFilter1.exe" CLEAN : -@erase "$(INTDIR)\timeFilter1.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\timeFilter1.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\timeFilter1.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\timeFilter1.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\timeFilter1.pdb" /machine:I386 /out:"$(OUTDIR)\timeFilter1.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\timeFilter1.obj" "$(OUTDIR)\timeFilter1.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "timeFilter1 - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\timeFilter1.exe" CLEAN : -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\timeFilter1.exe" -@erase "$(OUTDIR)\timeFilter1.ilk" -@erase "$(OUTDIR)\timeFilter1.pdb" -@erase ".\Debug\timeFilter1.obj" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\timeFilter1.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\timeFilter1.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\timeFilter1.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\timeFilter1.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ ".\Debug\timeFilter1.obj" "$(OUTDIR)\timeFilter1.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("timeFilter1.dep") !INCLUDE "timeFilter1.dep" !ELSE !MESSAGE Warning: cannot find "timeFilter1.dep" !ENDIF !ENDIF !IF "$(CFG)" == "timeFilter1 - Win32 Release" || "$(CFG)" == "timeFilter1 - Win32 Debug" SOURCE=..\..\..\progs\testFilter\timeFilter1.cpp !IF "$(CFG)" == "timeFilter1 - Win32 Release" "$(INTDIR)\timeFilter1.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "timeFilter1 - Win32 Debug" ".\Debug\timeFilter1.obj" : $(SOURCE) $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF !ENDIF core++-1.7/win32/progs/testIO/0040755000175000001440000000000010147210064015272 5ustar joachimuserscore++-1.7/win32/progs/testIO/testIO.dsp0100644000175000001440000001052707437361202017224 0ustar joachimusers# Microsoft Developer Studio Project File - Name="testIO" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=testIO - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "testIO.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "testIO.mak" CFG="testIO - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "testIO - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "testIO - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "testIO - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "testIO - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "testIO - Win32 Release" # Name "testIO - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\testIO\testIO.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/testIO/testIO.dsw0100644000175000001440000000102707437361202017226 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "testIO"=.\testIO.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/testIO/testIO.mak0100644000175000001440000001037407437361202017206 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on testIO.dsp !IF "$(CFG)" == "" CFG=testIO - Win32 Debug !MESSAGE No configuration specified. Defaulting to testIO - Win32 Debug. !ENDIF !IF "$(CFG)" != "testIO - Win32 Release" && "$(CFG)" != "testIO - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "testIO.mak" CFG="testIO - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "testIO - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "testIO - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "testIO - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\testIO.exe" CLEAN : -@erase "$(INTDIR)\testIO.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\testIO.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\testIO.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\testIO.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\testIO.pdb" /machine:I386 /out:"$(OUTDIR)\testIO.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\testIO.obj" "$(OUTDIR)\testIO.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "testIO - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\testIO.exe" CLEAN : -@erase "$(INTDIR)\testIO.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\testIO.exe" -@erase "$(OUTDIR)\testIO.ilk" -@erase "$(OUTDIR)\testIO.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\testIO.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\testIO.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\testIO.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\testIO.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\testIO.obj" "$(OUTDIR)\testIO.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("testIO.dep") !INCLUDE "testIO.dep" !ELSE !MESSAGE Warning: cannot find "testIO.dep" !ENDIF !ENDIF !IF "$(CFG)" == "testIO - Win32 Release" || "$(CFG)" == "testIO - Win32 Debug" SOURCE=..\..\..\progs\testIO\testIO.cpp "$(INTDIR)\testIO.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/progs/testIdent/0040755000175000001440000000000010147210064016026 5ustar joachimuserscore++-1.7/win32/progs/testIdent/testIdent.dsp0100644000175000001440000001057607437361202020520 0ustar joachimusers# Microsoft Developer Studio Project File - Name="testIdent" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=testIdent - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "testIdent.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "testIdent.mak" CFG="testIdent - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "testIdent - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "testIdent - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "testIdent - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "testIdent - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "testIdent - Win32 Release" # Name "testIdent - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\progs\testIdent\testIdent.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project core++-1.7/win32/progs/testIdent/testIdent.dsw0100644000175000001440000000103507437361202020515 0ustar joachimusersMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "testIdent"=.\testIdent.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### core++-1.7/win32/progs/testIdent/testIdent.mak0100644000175000001440000001056107437361202020474 0ustar joachimusers# Microsoft Developer Studio Generated NMAKE File, Based on testIdent.dsp !IF "$(CFG)" == "" CFG=testIdent - Win32 Debug !MESSAGE No configuration specified. Defaulting to testIdent - Win32 Debug. !ENDIF !IF "$(CFG)" != "testIdent - Win32 Release" && "$(CFG)" != "testIdent - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "testIdent.mak" CFG="testIdent - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "testIdent - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "testIdent - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "testIdent - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\testIdent.exe" CLEAN : -@erase "$(INTDIR)\testIdent.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\testIdent.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GR /GX /O2 /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\testIdent.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\testIdent.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\testIdent.pdb" /machine:I386 /out:"$(OUTDIR)\testIdent.exe" /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\testIdent.obj" "$(OUTDIR)\testIdent.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "testIdent - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : "$(OUTDIR)\testIdent.exe" CLEAN : -@erase "$(INTDIR)\testIdent.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\testIdent.exe" -@erase "$(OUTDIR)\testIdent.ilk" -@erase "$(OUTDIR)\testIdent.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\inc" /I "..\..\gmp" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\testIdent.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\testIdent.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\testIdent.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"$(OUTDIR)\testIdent.exe" /pdbtype:sept /libpath:"..\..\lib" LINK32_OBJS= \ "$(INTDIR)\testIdent.obj" "$(OUTDIR)\testIdent.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("testIdent.dep") !INCLUDE "testIdent.dep" !ELSE !MESSAGE Warning: cannot find "testIdent.dep" !ENDIF !ENDIF !IF "$(CFG)" == "testIdent - Win32 Release" || "$(CFG)" == "testIdent - Win32 Debug" SOURCE=..\..\..\progs\testIdent\testIdent.cpp "$(INTDIR)\testIdent.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF core++-1.7/win32/vc7/0040755000175000001440000000000010147210064013430 5ustar joachimuserscore++-1.7/win32/vc7/core.sln0100755000175000001440000000623410017721350015104 0ustar joachimusersMicrosoft Visual Studio Solution File, Format Version 8.00 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core", "core.vcproj", "{2F2FB902-6228-4903-AC9E-E8274DF1EA17}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "corex", "corex.vcproj", "{69FB5417-48A4-4A21-9F16-3529F8F4F00C}" ProjectSection(ProjectDependencies) = postProject {2F2FB902-6228-4903-AC9E-E8274DF1EA17} = {2F2FB902-6228-4903-AC9E-E8274DF1EA17} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample", "sample.vcproj", "{B3DAF3B6-1F79-47F3-8571-EC752F2E0EBF}" ProjectSection(ProjectDependencies) = postProject {2F2FB902-6228-4903-AC9E-E8274DF1EA17} = {2F2FB902-6228-4903-AC9E-E8274DF1EA17} {69FB5417-48A4-4A21-9F16-3529F8F4F00C} = {69FB5417-48A4-4A21-9F16-3529F8F4F00C} EndProjectSection EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug Debug Level1 = Debug Level1 Release = Release Release Level1 = Release Level1 EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {2F2FB902-6228-4903-AC9E-E8274DF1EA17}.Debug.ActiveCfg = Release|Win32 {2F2FB902-6228-4903-AC9E-E8274DF1EA17}.Debug.Build.0 = Release|Win32 {2F2FB902-6228-4903-AC9E-E8274DF1EA17}.Debug Level1.ActiveCfg = Debug|Win32 {2F2FB902-6228-4903-AC9E-E8274DF1EA17}.Debug Level1.Build.0 = Debug|Win32 {2F2FB902-6228-4903-AC9E-E8274DF1EA17}.Release.ActiveCfg = Release|Win32 {2F2FB902-6228-4903-AC9E-E8274DF1EA17}.Release.Build.0 = Release|Win32 {2F2FB902-6228-4903-AC9E-E8274DF1EA17}.Release Level1.ActiveCfg = Debug|Win32 {2F2FB902-6228-4903-AC9E-E8274DF1EA17}.Release Level1.Build.0 = Debug|Win32 {69FB5417-48A4-4A21-9F16-3529F8F4F00C}.Debug.ActiveCfg = Release Level3|Win32 {69FB5417-48A4-4A21-9F16-3529F8F4F00C}.Debug.Build.0 = Release Level3|Win32 {69FB5417-48A4-4A21-9F16-3529F8F4F00C}.Debug Level1.ActiveCfg = Release Level3|Win32 {69FB5417-48A4-4A21-9F16-3529F8F4F00C}.Debug Level1.Build.0 = Release Level3|Win32 {69FB5417-48A4-4A21-9F16-3529F8F4F00C}.Release.ActiveCfg = Release Level1|Win32 {69FB5417-48A4-4A21-9F16-3529F8F4F00C}.Release.Build.0 = Release Level1|Win32 {69FB5417-48A4-4A21-9F16-3529F8F4F00C}.Release Level1.ActiveCfg = Release Level3|Win32 {69FB5417-48A4-4A21-9F16-3529F8F4F00C}.Release Level1.Build.0 = Release Level3|Win32 {B3DAF3B6-1F79-47F3-8571-EC752F2E0EBF}.Debug.ActiveCfg = Release|Win32 {B3DAF3B6-1F79-47F3-8571-EC752F2E0EBF}.Debug.Build.0 = Release|Win32 {B3DAF3B6-1F79-47F3-8571-EC752F2E0EBF}.Debug Level1.ActiveCfg = Debug|Win32 {B3DAF3B6-1F79-47F3-8571-EC752F2E0EBF}.Debug Level1.Build.0 = Debug|Win32 {B3DAF3B6-1F79-47F3-8571-EC752F2E0EBF}.Release.ActiveCfg = Release|Win32 {B3DAF3B6-1F79-47F3-8571-EC752F2E0EBF}.Release.Build.0 = Release|Win32 {B3DAF3B6-1F79-47F3-8571-EC752F2E0EBF}.Release Level1.ActiveCfg = Debug|Win32 {B3DAF3B6-1F79-47F3-8571-EC752F2E0EBF}.Release Level1.Build.0 = Debug|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal core++-1.7/win32/vc7/core.vcproj0100755000175000001440000001116610017721350015613 0ustar joachimusers core++-1.7/win32/vc7/corex.vcproj0100755000175000001440000001266410017721350016007 0ustar joachimusers core++-1.7/win32/vc7/sample.vcproj0100755000175000001440000000677510017721350016156 0ustar joachimusers core++-1.7/doc/0040755000175000001440000000000010147210064012534 5ustar joachimuserscore++-1.7/doc/ANNOUNCEMENT_1.20100644000175000001440000000143007443425526014744 0ustar joachimusers ============== SOFTWARE RELEASE ANNOUNCEMENT =================== The CORE Library, Version 1.2, is now available for free download at http://cs.nyu.edu/exact/core The CORE library is a collection of C/C++ classes for exact computation with constructible real numbers. Some Features: -- ease of use: most existing C/C++ programs can be converted into robust programs with minimal effort -- precision-driven approach to exact computation -- expanded set of sample programs -- library is small (0.75 MB compressed, including documentation) -- tested on Sparc, SGI and Linux platforms. We welcome your comments and input. -- Chee Yap (yap@cs.nyu.edu) Chen Li (chenli@cs.nyu.edu) September 30, 1999 ============== SOFTWARE RELEASE ANNOUNCEMENT =================== core++-1.7/doc/ANNOUNCEMENT_1.2.10100644000175000001440000000254707443425526015115 0ustar joachimusers============== SOFTWARE RELEASE ANNOUNCEMENT =================== Core Library Version 1.2.1 Jan 12, 2000 ************************ This is a minor modification of version 1.2. 1) Each expression node is now given its own progressive flag (a Boolean value). If the flag is true, it will use progressive evaluation at that node. Otherwise, it goes directly to the root bound. Usage: if you have a good reason to think that a particular expression is identically zero, then you can set this flag to false. The default is true. In general, it is dangerous to set this flag to true. The default value of each node is that of the global progressive evaluation flag (which the user can set at any time). 2) The user can now create a debugging version of the Core Library and its programs. In the top level, the file Make.config has a line to set VER=Debug. The non-debug version would assign the empty string to VER. The debugging version essentially compiles the programs with the -g compiler option, etc. 3) Bug fixed in square-root routine. In BigFloat.cc, the algorithm for Newton iteration for square-roots may crash and give a zero-divisor error. This is because when the mantissa is right shifted in the iteration, the function fails to check if the msb is shifted out. ============== SOFTWARE RELEASE ANNOUNCEMENT =================== core++-1.7/doc/ANNOUNCEMENT_1.2.20100644000175000001440000000545707443425526015121 0ustar joachimusers============== SOFTWARE RELEASE ANNOUNCEMENT =================== Core Library Version 1.2.2 March 7, 2000 ************************ 0) This is a minor modification of version 1.2.1. You can either directly download the whole library core_v1.2.2.tar.gz or if you already have core_v1.2.1, then you only need to download the patch file patch_v1.2.2.tar 1) Fixed a bug in square-root routine (i.e., BigFloatRep::sqrt()). The basic iteration for sqrt(a), based on Newton, is x' = (x + (a/x))/2 where x is current approximation and x' is the new appromation. The problem is that when the division by 2 is inexact, we need to shift left (and adjust the exponent) before division). 2) Fixed a bug in BigFloatRep::operator <<. The bug is that the position of the decimal point in the output (stored in the programming variable E) is sometimes computed wrongly. This is because we compute machine precision to compute E, and this could be in error. We now adjust the estimated E by using exact comparison. A new private function called adjustE() is added to achieve this. 3) Fixed a bug in BigFloatRep::operator <<. We want the printout of any bigFloat number to show only the significant digits. That is, all the digits except for the last one must be correct. The last one is incorrect only up to +/- 1. E.g., 1/3 printed to 4 digits might print as 0.33338987 in the past (it is technically correct, of course) but the extra digits are misleading. Now, it will print as 0.3333 (assuming the computed value has this much precision). 4) The output routine are totally rewritten: By default, scientific notation will be used when: - if scientific notation flag is on if the error contribute to the integral part. - Does not have enough places for the specified output precision to hold the positional representation including decimal point. - The distance between the first significant digit and decimal point is too large for the width limit. The output precision can be set by using stream manipulators. E.g. double x = 1/3; cout << setprecision(4) << x << endl; This will print 0.33 (three digits plus the decimal dot). In conventional positional representation, the output precision bounds on the number of digits printed out (including decimal dot when applicable). In Scientific notation, it bounds the number of significant digits printed out (not including the exponent part). 5) The only files that have been changed for version 1.2.2 are src/BigFloat.cc and inc/BigFloat.h. Please download version 1.2.1 and replace these 2 files. ============== SOFTWARE RELEASE ANNOUNCEMENT =================== core++-1.7/doc/ANNOUNCEMENT_1.30100644000175000001440000000711007443425526014746 0ustar joachimusers===================== SOFTWARE RELEASE ANNOUNCEMENT ========================== Core Library Version 1.3 is now available for free download at http://cs.nyu.edu/exact/core/ The Core Library (CORE) is a collection of C/C++ classes to support exact computation with constructible real numbers (+,-,x,/,sqrt). Numerical nonrobustness is a widely acknowledged problem. It has proven particularly intractible in the context of geometric algorithms where numerical data and combinatorial data are intermixed in a strongly constrained manner. Recent research in the computational geometry community has demonstrated a variety of techniques that can address such problems. A basic goal of our library is to make such techniques easily accessible to the wider community of programmers and researchers. Basic CORE Features: -- ease of use: Any C/C++ programmer can now write numerical or geometric code that are fully robust. -- ease of migration: Many existing C/C++ programs can be converted into robust programs with minimal effort. -- natural and novel numerical accuracy model: Users can choose and get the numerical accuracy that best fit their applications. -- state of art technology: Precision-driven approach to exact geometric computation, best known root bounds, etc, will be incorporated into the library as the field progresses. In this way, the user's application program will automatically be upgraded (at the cost of re-compilation). -- small system: Just over 2MB (including source and documentation, compressed). It can serve as the "core" for your own applications. -- tested on Sun Sparc and Linux platforms: Earlier CORE 1.2 was also tested on SGI and Windows. What is new with CORE 1.3 ? -- improved speed: The runtime for all the sample programs in this distribution takes 55.0 seconds under CORE 1.3. Under CORE 1.2.2, the time is 1040.38 seconds. The test was performed on a Sun UltraSPARC 10, 440 MHz machine, -- improved root bounds: This yield great speedups for the important class of expressions expressions with division (e.g., expressions with rational number or floating point number inputs). -- adoption of LiDIA's number kernel: This allows the easy plug-in of alternative big number packages such as Gnu's gmp. CORE Distribution comes with CLN, one of the fastest big number packages (it implements the Schonhage-Strassen multiplication). Because of the move to LiDIA, we now support only the g++ compiler. -- improved numerical output: Only significant digits are printed, and a choice of scientific or positional formats. -- improved numerical input: With input from strings, the user can control precision of conversion, including forcing exact input. Again, choice of scientific or positional formats. -- more sample programs: Examples show how one can easily use CORE to compute transcendental constants (Pi) or functions (e.g., sin, log) to any an desired precision. An improved randomized prover for ruler-and-compass theorems, etc. For further information http://cs.nyu.edu/exact/ mailto://exact@cs.nyu.edu. We welcome your comments and input. -- Chee Yap (yap@cs.nyu.edu) Chen Li (chenli@cs.nyu.edu) September 22, 2000 | Department of Computer Science | Courant Institute of Mathematical Sciences | New York University | 251 Mercer Street | New York, NY 10012, USA ===================== SOFTWARE RELEASE ANNOUNCEMENT ========================== core++-1.7/doc/ANNOUNCEMENT_1.40100644000175000001440000000650507520345631014750 0ustar joachimusers===================== SOFTWARE RELEASE ANNOUNCEMENT ========================== March 15, 2002: Core Library Version 1.4 is now available for free download at http://cs.nyu.edu/exact/core/ The Core Library (CORE) is a collection of C/C++ classes to support computation with constructible real numbers (+,-,x,/,sqrt), under a variety of precision requirements. Numerical nonrobustness is a widely acknowledged problem. It has proven particularly intractable in the context of geometric algorithms where numerical data and combinatorial data are intermixed in a strongly constrained manner. Recent research in computational geometry has demonstrated a variety of techniques based on the principles of Exact Geometric Computation (EGC) that can address such problems. A basic goal of our library is to make such techniques easily accessible to the wider community of programmers and researchers. Basic CORE Features: -- ease of use: Any C/C++ programmer can write numerical or geometric code that are fully robust just by calling our Library. -- ease of migration: Many existing C/C++ programs can be converted into robust CORE programs with minimal effort. -- natural and novel numerical accuracy model: Users can choose and get the numerical accuracy that best fit their applications. -- state of art technology: The precision-driven approach to EGC, best known root bounds, filter technology, etc, will be incorporated into the library as the field progresses. In this way, the user's application program will automatically be upgraded (at the cost of re-compilation). -- small system: It can serve as the "core" for your own applications. Just over 500KB (including source, extensions, demos, documentation) when gmp is not included. With gmp, the distribution is 3MB. -- tested on Sun Sparc, Linux, cygwin and Windowx platforms. What is new with CORE 1.4 ? -- adoption of gmp as the big number kernel -- the BFS floating point filter implemented (significant speedup possible) -- improved speed from incremental sqrt algorithm -- file I/O in decimal or hex, allowing linear time file I/O of numbers -- improved precision-driven algorithms -- redesigned geometry 2d and 3d extension libraries -- support for cygwin and Windoz platforms -- more sample programs, including the contribution of a hypergeometric package from M.Eleftheriou and J.Moreira of IBM T.J.Watson We welcome your comments and input. -- Chee Yap (yap@cs.nyu.edu) Zilin Du (zilin@cs.nyu.edu) March 15, 2002 |============================================= | Exact Computation Project | Department of Computer Science | Courant Institute of Mathematical Sciences | New York University | 251 Mercer Street | New York, NY 10012, USA | | For further information: | http://cs.nyu.edu/exact/ | mailto://exact@cs.nyu.edu. | | Supported by NSF/ITR Grant CCR-0082056. |============================================= ===================== SOFTWARE RELEASE ANNOUNCEMENT ========================== core++-1.7/doc/ANNOUNCEMENT_1.50100644000175000001440000000761007524525176014757 0ustar joachimusers===================== SOFTWARE RELEASE ANNOUNCEMENT ========================== August 10, 2002: Core Library Version 1.5 is now available for free download at http://cs.nyu.edu/exact/core/ The Core Library (CORE) is a collection of C/C++ classes to support computation with constructible real numbers (+,-,x,/,sqrt), under a variety of precision requirements. Numerical nonrobustness is a widely acknowledged problem. It has proven particularly intractable in the context of geometric algorithms where numerical data and combinatorial data are intermixed in a strongly constrained manner. Recent research in computational geometry has demonstrated a variety of techniques based on the principles of Exact Geometric Computation (EGC) that can address such problems. A basic goal of our library is to make such techniques easily accessible to the wider community of programmers and researchers. Basic CORE Features: -- ease of use: Any C/C++ programmer can write numerical or geometric code that are fully robust just by calling our Library. -- ease of migration: Many existing C/C++ programs can be converted into robust CORE programs with minimal effort. -- natural and novel numerical accuracy model: Users can choose and get the numerical accuracy that best fit their applications. -- state of art technology: The precision-driven approach to EGC, best known root bounds, filter technology, etc, will be incorporated into the library as the field progresses. In this way, the user's application program will automatically be upgraded (at the cost of re-compilation). -- small system: It can serve as the "robust core" of your own applications. About 550KB (including source, extensions, demos) when gmp and documentation is not included. Otherwise, the full distribution is 3.6MB. -- extensively tested on Sun Sparc, Linux, cygwin and Windows platforms. What is new with CORE 1.5 ? -- Faster code (can be significantly faster than CORE 1.4) -- Introduce headers for compiling CGAL with Core Library, made compatibility modifications, and sample CGAL programs -- Introduce namespace CORE -- Improved root bounds (can be significant) -- Improved Expression evaluation algorithms -- Streamlined code for Expr and Real (mainly through template classes) -- Level 2 and 4 programs can now be compiled (with limited support) -- Header files (i.e., API) for Expr and Real are mutually consistent (this was necessary to support Level 2 accuracy) -- More sample programs: (a) improved hypergeometric package (all the elementary functions in math.h are now available in Core) (b) polynomial package with Sturm sequences and Newton iteration for polynomail roots -- Compatibility with gmp 4.1, and g++ 3.1 -- Updated Core Library Tutorial -- Bug fixes: (a) bad initial root bound values for some constants (e.g., Expr(1.0)) (b) uMSB, lMSB (in Real, BigFloat, Filter classes) (c) BigInt::ceilLg We welcome your comments and input. -- Chee Yap (yap@cs.nyu.edu) Sylvain Pion (pion@cs.nyu.edu) Zilin Du (zilin@cs.nyu.edu) August 10, 2002 |============================================= | Exact Computation Project | Department of Computer Science | Courant Institute of Mathematical Sciences | New York University | 251 Mercer Street | New York, NY 10012, USA | | For further information: | http://cs.nyu.edu/exact/ | mailto://exact@cs.nyu.edu. | | Supported by NSF/ITR Grant CCR-0082056. |============================================= ===================== SOFTWARE RELEASE ANNOUNCEMENT ========================== core++-1.7/doc/ANNOUNCEMENT_1.60100644000175000001440000000717010106256647014753 0ustar joachimusers===================== SOFTWARE RELEASE ANNOUNCEMENT ========================== June 20, 2003: Core Library Version 1.6 is now available for free download at http://cs.nyu.edu/exact/core/ The Core Library (CORE) is a collection of C/C++ classes to support computation with real algebraic numbers (+,-,x,/,sqrt and rootOf), under a variety of precision requirements. Numerical nonrobustness is a widely acknowledged problem. It has proven particularly intractable in the context of geometric algorithms where numerical data and combinatorial data are intermixed in a strongly constrained manner. Recent research in computational geometry has demonstrated a variety of techniques based on the principles of Exact Geometric Computation (EGC) that can address such problems. A basic goal of our library is to make such techniques easily accessible to the wider community of programmers and researchers. Basic CORE Features: -- ease of use: Any C/C++ programmer can write numerical or geometric code that are fully robust just by calling our Library. -- ease of migration: Many existing C/C++ programs can be converted into robust CORE programs with minimal effort. -- natural and novel numerical accuracy model: Users can choose and get the numerical accuracy that best fit their applications. -- state of art technology: The precision-driven approach to EGC, best known root bounds, filter technology, etc, will be incorporated into the library as the field progresses. In this way, the user's application program will automatically be upgraded (at the cost of re-compilation). -- small system: It can serve as the "robust core" of your own applications. About 550KB (including source, extensions, demos) when gmp and documentation is not included. Otherwise, the full distribution is 3.6MB. -- extensively tested on Sun Sparc, Linux, cygwin and Windows platforms. What is new with CORE 1.6 ? -- Arbitrary real algebraic numbers is now supported -- Faster code (can be significantly faster than CORE 1.5) -- Fully compatible with CGAL Library (Core Library is also directly distributed with the CGAL Library) -- Improved root bounds (can be significant) -- Header files (i.e., API) for Expr and Real are now consistent This was necessary to support Level 2 accuracy. In general, slightly better support for Levels 2 and 4. -- Polynomial package directly incorporated into the Library -- Compatibility with gmp 4.1, and gcc 3.3 -- Updated Core Library Tutorial -- Various new features: --Expr can return a double interval containing its true value -- -- Various Bug fixes: output We welcome your comments and input. -- Chee Yap (yap@cs.nyu.edu) Sylvain Pion (Sylvain.Pion@mpi-sb.mpg.de) Zilin Du (zilin@cs.nyu.edu) Vikram Sharma (sharma@cs.nyu.edu) June 20, 2003 |============================================= | Exact Computation Project | Department of Computer Science | Courant Institute of Mathematical Sciences | New York University | 251 Mercer Street | New York, NY 10012, USA | | For further information: | http://cs.nyu.edu/exact/ | mailto://exact@cs.nyu.edu. | | Supported by NSF/ITR Grant CCR-0082056. |============================================= ===================== SOFTWARE RELEASE ANNOUNCEMENT ========================== core++-1.7/doc/ANNOUNCEMENT_1.70100644000175000001440000000705510145237415014751 0ustar joachimusers===================== SOFTWARE RELEASE ANNOUNCEMENT ========================== Nov 12, 2004: Core Library Version 1.7 is now available for free download at http://cs.nyu.edu/exact/core/ The Core Library (CORE) is a collection of C/C++ classes to support computation with real algebraic numbers (+,-,x,/,sqrt and rootOf), under a variety of precision requirements. Numerical nonrobustness is a widely acknowledged problem. It has proven particularly intractable in the context of geometric algorithms where numerical data and combinatorial data are intermixed in a strongly constrained manner. Recent research in computational geometry has demonstrated a variety of techniques based on the principles of Exact Geometric Computation (EGC) that can address such problems. A basic goal of our library is to make such techniques easily accessible to the wider community of programmers and researchers. Basic CORE Features: -- ease of use: Any C/C++ programmer can write numerical or geometric code that are fully robust just by calling our Library. -- ease of migration: Many existing C/C++ programs can be converted into robust CORE programs with minimal effort. -- natural and novel numerical accuracy model: Users can choose and get the numerical accuracy that best fit their applications. -- state of art technology: The precision-driven approach to EGC, best known root bounds, filter technology, etc, will be incorporated into the library as the field progresses. In this way, the user's application program will automatically be upgraded (at the cost of re-compilation). -- small system: It can serve as the "robust core" of your own applications. The tarred gzipped file is 0.8MB (including source, extensions, demos) when gmp and documentation is not included. -- well-tested on Sun Sparc, Linux, cygwin and Windows platforms. What is new with CORE 1.7 ? -- Introduction of plane algebraic curves and bi-variate polynomials -- An interactive version of Core Library based on Python (this has to be downloaded separately) -- Reorganized number classes with up to 20% speed improvement -- Enhancement of the univariate polynomial and real algebraic number facilities (GCD, resultant, square free part, etc) -- Compatibility with gmp 4.1.4, and gcc 3.4. -- Simple graphics facilities for curves -- Various bug fixes and improvements especially in Newton routines. We welcome your comments and input. -- Chee Yap (yap@cs.nyu.edu) Zilin Du (zilin@cs.nyu.edu) Vikram Sharma (sharma@cs.nyu.edu) Sylvain Pion (Sylvain.Pion@sophia.inria.fr) |============================================= | Exact Computation Project | Department of Computer Science | Courant Institute of Mathematical Sciences | New York University | 251 Mercer Street | New York, NY 10012, USA | | For further information: | http://cs.nyu.edu/exact/ | mailto://exact@cs.nyu.edu. | | Supported by NSF/ITR Grant CCR-0082056 and | NSF Grant CCF-0430836. |============================================= ===================== SOFTWARE RELEASE ANNOUNCEMENT ========================== core++-1.7/doc/Makefile0100644000175000001440000000361310141772577014214 0ustar joachimusers############################################################ # file: Makefile (for tutorial) # CORE Library version 1.4 # $Id: Makefile,v 1.9 2004/11/02 21:00:47 exact Exp $ ############################################################ p=history p=tut DOXYGEN=/usr/unsupported/installers/exact/doxygen-1.3/bin/doxygen ############################################################ # targets ############################################################ tut tutorial: appendix.tex appendix_b.tex tutorial.tex tutorial.bib latex tutorial dvips tutorial -o ps2pdf tutorial.ps tutorial.pdf all: tutorial history his history: history.tex latex history dvips history -o ps2pdf history.ps history.pdf tutorial.ps: tutorial.dvi dvips tutorial -o tutorial.dvi tutorial.aux: tutorial.tex tutorial.bib latex tutorial bibtex tutorial latex tutorial tutoriala4.tex: tutorial.tex nawk 'BEGIN{FS="]"; \ print "% THIS FILE IS AUTOMATICALLY GENERATED";\ print "% FROM tutorial.tex. DO NOT MODIFY THIS."; }\ /documentclass/ {\ print "\\documentclass[12pt,a4]{article}"; }\ !/documentclass/ {print;}\ END{}\ ' tutorial.tex > tutoriala4.tex ps: tutorial.dvi dvips tutorial -o pspdf: tutorial.ps ps2pdf tutorial.ps tutorial.pdf manual: ${DOXYGEN} doxygen.cfg clean-manual: rm -rf html latex ############################################################ # make sure there is a .dvipsrc in the home directory # to use only type 1 font. ############################################################ pdf: tutorial.tex tutoriala4.tex pdflatex tutorial pdflatex tutoriala4 a4 tuta4 tutoriala4.dvi tutoriala4.aux: tutoriala4.tex tutorial.bib latex tutoriala4 bibtex tutoriala4 latex tutoriala4 bib: tutorial.aux tutorial.bib bibtex tutorial save: -mkdir RCS; ci -l -m"make save" *.tex Makefile README \ ANNOUNCEMENT* *.bib clean: -rm -f *.dvi *.log *.aux *.toc *.blg *pdf veryclean: clean core++-1.7/doc/README0100644000175000001440000000502710106757055013430 0ustar joachimusersREADME File for doc directory files: -- README: this file -- ANNOUNCEMENTS_*: announcements for various releases of CORE -- Makefile: to produce tutorial -- tutorial.tex: latex source for CORE Library Tutorial -- appendix.tex: appendix A: Core Class Reference -- history.tex: History of library development -- tutoriala4.tex: automatically generated for a4 paper format -- tutorial.bib: bibtex references -- bigNumFormat.txt: description of a bigNumber file format used by CORE -- stackOverflow.txt: hints on how to solve stack overflow problems In "papers" subdirectory: -- brown.ps.gz: "New Core for Robust Numerical and Geometric Computation", Chee Yap. Invited talk at 3rd CGC Workshop on Computational Geometry, Brown University, Providence, RI, Oct 11-12, 1998. SUMMARY: This paper introduces the Core Numerical Accuracy Model (API). -- core.ps.gz: "A Core Library for Robust Numerical and Geometric Libraries", V. Karamcheti, C. Li, I. Pechtchanski and C. Yap. In Proc. 15th ACM Symposium on Computational Geometry, Miami Beach, Florida, June 1999, pp. 351--359. SUMMARY: Describes the first Core Library implementation, and compiler optimization efforts. -- prover.ps.gz: "Randomized Zero Testing of Radical Expressions and Elementary Geometry Theorem Proving", by D. Tulone, C. Yap and C. Li. In Proc. Int'l. Workshop on Automated Deduction in Geometry (ADG'00), Zurich, Sep 25-27, 2000. In Lecture Notes in Comp. Sci. and A.I., No.2061, Springer 2001. SUMMARY: Describes a randomized theorem prover for ruler-and-compass theorems based on a generalization of Schwartz's lemma to radical expressions. -- rootBound.ps.gz: "New Constructive Root Bound for Algebraic Expressions", by C. Li and C. Yap. In Proc. 12th ACM-SIAM Symposium on Discrete Algorithms (SODA), Jan 2001. SUMMARY: Gives a new constructive root bound which is implemented in Core Library, Version 1.3. It greatly improves upon the BFMS bound for expressions with division. -- hypergeom.pdf: "Hypergeometric Functions in Exact Geometric Computation", by Z.Du, M.Eleftheriou, J.Moreira and C.Yap. In Proc. 5th Workshop on Computability and Complexity in Analysis, Malaga, Spain, July 12-13, 2002. In Electronic Notes in Theoretical Computer Science, 66:1 (2002). SUMMARY: Introduces several issues in the implementation of hypergeometric functions in the context of EGC. An implementation based on Core Library is described. core++-1.7/doc/appendix.tex0100644000175000001440000016353410142255773015112 0ustar joachimusers% appendix.tex % -- include file for tutorial.tex \newpage \appendix \section{APPENDIX: \core\ Classes Reference} \label{classes} There are three main classes in the \core\ package: \expr, \real\ and \BF. The \expr\ class is built upon the other two classes and provides the basic functionalities of Level 3 accuracy. Although users do not have to directly access the \real\ and \BF\ classes, they are useful for understanding the behavior of the \corelib. Advanced users may want to program directly with these classes. Here is a brief summary of these classes. \begin{description} \item[\real] is a ``heterogeneous'' number system\footnote{ In contrast, most number systems has a ``homogeneous'' representation. The \real\ class ought to provide automatic conversions among subtypes, but this capability is not currently implemented. } that currently incorporates the following six subtypes: \int, \lng, \double, \Int, \Rat, and \BF. The first three are standard machine types while the latter three are big number types. Since Version 1.6, \Int\ and \Rat\ are wrapper classes for gmp's mpz and mpq. \item[\expr] is the most important class of the library. It provides the mechanism to support Level 3 accuracy. An \expr\ object has an approximate value as well as a precision. Users can freely set the precision of the \expr\ object, and its approximate value will be automatically adjusted to satisfy the precision. Currently, the approximate value is a \BF. \item[\BF] is an arbitrary precision floating point number representation that we built on top of \Int. It is used by our library to represent approximate values. A \BF\ is represented by the triple $\langle m, \varepsilon, e \rangle$ where $m$ is the mantissa of type \Int, $\varepsilon$ is the error bound and $e$ is the exponent. It represents the interval $(m\pm \varepsilon)B^e$ where $B=2^{14}$. These intervals are automatically maintained when performing arithmetic with \BF's. \end{description} Besides these three classes, the user should know about the class \extlong\ of ``extended longs''. This is a wrapper around the primitive \lng\ type with the special values of \posInfty, \negInfty, and \NaN. For convenience, {\tt CORE\_INFTY} is defined to be \posInfty. By using these special values, extended longs can handle overflows as well as undefined operations (divide by zero) in a graceful way. This class is extensively used in specifying root bounds and precision. The rest of this appendix is a reference for the classes \BF, \real\ and \expr. \subsection{The Class \BF} A \BF\ number $x$ is given as a triple $\left< m, err, exp \right> $ where the {\em mantissa} is $m$, the {\em error-bound} is $err \in \left\{ 0, 1, \ldots, B-1 \right\}$ and $exp$ is the {\em exponent}. Here the {\em base} $B$ is equal to $2^{14}$. The ``number'' $x$ really represents the interval \begin{equation} \label{eq:bigfloat} \left[ \left( m - err \right) B^{exp}, \left( m + err \right) B^{exp} \right] \end{equation} We say that a real number $X$ {\em belongs} to $x$ if $X$ is contained in this interval. In our implementation of \BF, $m$ is \Int, $err$ is {\tt unsigned long}, and $exp$ is {\tt long} for efficiency. You can obtain these components of a \BF\ by calling the member functions \texttt{m()}, \texttt{err()} and \texttt{exp()}. Since Version 1.4, \Int\ is gmp's Big Integer. If $err = 0$ then we say the \BF\ $x$ is {\em error-free}. When we perform the operations $ +, -, *, / $ and $ \sqrt{\phantom{\cdot}} $ on \BF\ numbers, the error-bound is automatically propagated subject in the following sense: {\em if $X$ belongs to \BF\ $x$ and $Y$ belongs to \BF\ $y$, and we compute \BF\ $z=x\circ y$ (where $\circ\in\{+,-,\times,\div\}$) then $X\circ Y$ belongs to $z$. } A similar condition holds for the unary operations. In other words, the error-bound in the result $z$ must be ``large enough''. There is leeway in the choice of the error-bound in $z$. Basically, our algorithms try to minimize the error-bound in $z$ subject to efficiency and algorithmic simplicity. This usually means that the error-bound in $z$ is within a small constant factor of the optimum error-bound (see Koji's thesis \cite{ouchi:thesis} for full details). But this may be impossible if both $x$ and $y$ are error-free: in this case, the optimum error-bound is $0$ and yet the result $z$ may not be representable exactly as a \BF. This is the case for the operations of $\div$ and $\sqrt{\cdot}$. In this case, our algorithm ensures that the error in $z$ is within some default precision (the value of global variable {\tt defAbsPrec}). This is discussed under the class \real\ below. A practical consideration in our design of the class \BF\ is that we insist that the error-bound $err$ is at most $B$. To achieve this, we may have to truncate the number of significant bits in the mantissa $m$ in (\ref{eq:bigfloat}) and modify the exponent $exp$ appropriately. \subsubsection{Class Constructors for \BF} \label{sec-bf-cons} \begin{progb}{ \> \tt BigFloat();\\ \> \tt BigFloat(int);\\ \> \tt BigFloat(long);\\ \> \tt BigFloat(double);\\ \> \tt BigFloat(const BigInt\& M, unsigned long err = 0, long exp = 0);\\ \> \tt BigFloat(const \BF \&);\\ \> \tt BigFloat(const char *);\\ \> \tt BigFloat(const std::string\&);\\ \> \tt BigFloat(const \Rat\ \&, const extLong\& r = defRelPrec,\\ \> \> \> \tt const extLong\& a = defAbsPrec);\\ \> \tt BigFloat(const \expr\ \&, const extLong\& r = defRelPrec,\\ \> \> \> \tt const extLong\& a = defAbsPrec); }\end{progb} The default constructor declares an instance with a value zero. The instances of \BF\ can also be constructed from \int, \lng, \float, \double, \Int\ and \str. The last two constructors needs some clarification: (a) The constructor from strings is controlled by the global parameter \defBFinput, and ensures that the \BF\ value constructor differs from the string value by an absolute value of at most $10^{-\defBFinput}$. (b) The constructors {\tt \BF(\Rat\ R, r, a)} and {\tt \BF(\expr\ e, r, a)} constructs a \BF\ that approximates the rational {\tt R} and expression {\tt e} to the composite precision {\tt [r, a]}. \nopagebreak \begin{progb}{ \> \tt BigInt I(5); \\ \> \tt BigFloat B(I); \\ \> \tt BigFloat bf1("0.023");\\ \> \tt BigFloat bf2("1234.32423e-5");\\ \> \tt BigRat R(1, 3);\\ \> \tt BigFloat br(R, 200, CORE\_INFTY); }\end{progb} \subsubsection{Assignment} \begin{progb} { \> \tt BigFloat\& operator=(const BigFloat\&);\\ \> // arithmetic and assignment operators\\ \> \tt BigFloat\& operator+=(const BigFloat\&);\\ \> \tt BigFloat\& operator-=(const BigFloat\&);\\ \> \tt BigFloat\& operator*=(const BigFloat\&);\\ \> \tt BigFloat\& operator/=(const BigFloat\&); }\end{progb} \subsubsection{Arithmetic Operations} \begin{progb} { \> \tt BigFloat operator+(const BigFloat\&, const BigFloat\&); \\ \> \tt BigFloat operator-(const BigFloat\&, const BigFloat\&); \\ \> \tt BigFloat operator*(const BigFloat\&, const BigFloat\&); \\ \> \tt BigFloat operator/(const BigFloat\&, const BigFloat\&); \\ \> \tt BigFloat sqrt(const BigFloat\&); }\end{progb} \subsubsection{Comparison} \begin{progb} { \> \tt bool operator==(const BigFloat\&, const BigFloat\&); \\ \> \tt bool operator!=(const BigFloat\&, const BigFloat\&); \\ \> \tt bool operator< (const BigFloat\&, const BigFloat\&); \\ \> \tt bool operator<=(const BigFloat\&, const BigFloat\&); \\ \> \tt bool operator> (const BigFloat\&, const BigFloat\&); \\ \> \tt bool operator>=(const BigFloat\&, const BigFloat\&); }\end{progb} \subsubsection{Approximations} \label{sec-bf-approx} \begin{progb} { \> \tt void approx(const BigInt\& I, const extLong\& r, const extLong\& a);\\ \> \tt void approx(const BigFloat\& B, const extLong\& r, const extLong\& a);\\ \> \tt void approx(const BigRat\& R, const extLong\& r, const extLong\& a); }\end{progb} Another important source of \BF\ numbers is via the approximation of \Int, \BF\ and \Rat\ numbers. We provide the member functions {\tt approx} which take such a number, and precision bounds $r$ and $a$ and assign to the \BF\ a value that approximates the input number to the specified composite precision bounds: \nopagebreak \begin{progb}{ \> \tt BigRat R(1,3); // declares {\tt R} to have value 1/3. \\ \\ \> \tt BigFloat B; \\ \> \tt B.approx(R,16,16); \\ \> \tt // now {\tt B} contains an approximation of 1/3 to precision [16,16].\\ }\end{progb} \subsubsection{Conversion Functions} \label{sec-bigfloat-cast} \begin{progb} { \> \tt double doubleValue() const; \>\>\>\>\>\>\> // convert to machine built-in double\\ \> \tt float floatValue() const; \>\>\>\>\>\>\> // convert to machine built-in float\\ \> \tt long longValue() const; \>\>\>\>\>\>\> // convert to machine built-in long\\ \> \tt int intValue() const; \>\>\>\>\>\>\> // convert to machine built-in int\\ \> \tt \Int\ BigIntValue() const; \>\>\>\>\>\>\> // convert to a BigInt number\\ \> \tt \Rat\ BigRatValue() const; \>\>\>\>\>\>\> // convert to a BigRat number\\ }\end{progb} The semantics of these expressions are mostly self-explanatory. For conversion of \Int, we simply use truncation of the mantissa of the \BF. Users must exercise caution in using these conversions. Overflow or underflow errors occur silently during the conversion. It is the user's responsibility to detect such conditions. \subsubsection{Algebraic Operations} \begin{progb}{ \>\tt bool isDivisible(const \BF\ \&a, const \BF\ \&b); \\ \>\tt \BF\ div\_exact(const \BF\ \&a, const \BF\ \&b); \\ \>\tt \BF\ gcd(const \BF\ \&a, const \BF\ \&b); }\end{progb} All algebraic operations are only defined for exact \BF\ values. The methods \texttt{isDivisible}, \texttt{div\_exact} and \texttt{gcd} are global functions. The definition of divisibility is not obvious: every floating point value can be uniquely written in the form $m 2^e$ where $m$ is an odd integer and $e$ is an integer. We say $m2^e$ divides $m'2^{e'}$ if $m$ divides $m'$ and $|e|\le |e'|$ and $ee'\ge 0$. Once this concept is defined, the meaning of these algebraic operations are standard. \subsubsection{I/O} \label{sec-BF-out} \begin{progb} { \> \tt ostream\& operator<<(ostream\&, const BigFloat\&);\\ \> \tt istream\& operator>>(istream\&, BigFloat\&); }\end{progb} Stream I/O operators are defined for \BF. Integer values can be read in exactly. Fractional values are read in correctly within an absolute error of $10^{-\defBFinput}$ where \defBFinput\ is a global parameter settable by users. Note that\\ \defBFinput\ cannot be $\infty$. Outputs utilize the precision parameter $p$ associated with output streams. The parameter $p$ is interpreted to be the number of digits printed: in scientific format, this is the number of significant digits but in positional format, leading zeros are counted. E.g., $0.123$ and $0.001$ both have $p=4$. When outputting, the error bits in a \BF\ representation are first truncated. The output is in one of two formats: {\em positional} or {\em scientific}. In scientific notation, the length of the mantissa can at most be $p$. The extra digits are rounded (to the closest possible output value). We choose scientific notation if at least one of the following conditions is true: \begin{enumerate} \item The scientific notation flag is on. This flag is associated with output streams in C++ and can be set using standard I/O manipulator. \item The absolute value of the number is smaller than $10^{-p+1}$. \item The absolute value of the number is bigger or equal to $10^{p-\delta}$ where $\delta=0$ or $1$ depending on whether the number is a whole number or not. \end{enumerate} Note that we may actually print out less than $p$ digits if the \BF\ value does not have that many digits of precision. If a \BF\ $x$ is not error-free, the output is a decimal number whose value approximates the value of $x$ correctly to the last digit. That means that the last significant digit $m_\ell$ really lies in the range $d_\ell\pm 1$, where $d_\ell$ is the last digit of output. \ignore{ Next, the output routine will print out at most {\tt defPrtDgt} digits using a rounding to the nearest digit rule. If the absolute value of the exponent is equal to or larger than {\tt defPrtDgt}, the output strings use the scientific notation of the form $$m_1.m_2m_3\cdots m_\ell ~\mbox{\bf e} \pm e_1e_2\cdots e_m$$ where the $m$'s and $e$'s are in decimal notation and $\mbox{\bf e}$ is a literal character indicating the start of the exponent. Otherwise, the usual decimal representation would be adopted. Note that we may actually print out less than {\tt defPrtDgt} many digits. This output represents decimal floating point number whose value approximates the value of $x$ correctly to the last digit. That means that the last significant digit $m_\ell$ really lies in the range $m_\ell\pm 1$. The number of significant digits in this output is $\ell$, and it is controlled by the global variable \defprt. The value of \defprt\ is defaulted to 10, but the user can change this at run time. The value $\ell$ is equal to the minimum of \defprt\ and the number of significant digits in the internal representation of $x$. } It is interesting to see the interplay between ostreams' {\tt precision} $p$ and the composite precision {\tt [defAbsPrec, defRelPrec]}. Keep in mind that {\tt defAbsPrec} and {\tt defRelPrec} refer to binary bits. \begin{center} \begin{tabular}{c} \begin{progb} { \> \tt double q = BigRat(1, 3); \\ \> \tt setDefaultAbsPrecision(67); // about 20 digits \\ \> \tt cout << "q = " << setprecision(10) << q << ", in 10 digits" << endl;\\ \> \tt // output: q = 0.33333333, in 10 digits\\ \> \tt cout.precision(30); // or use setDefaultOutputDigits(30, cout), \\ \> \tt // default to output 30 digits.\\ \> \tt cout << "q = " << q << endl;\\ \> \tt // output: q = 0.33333333333333333333, in positional notation.\\ }\end{progb} \end{tabular} Program 7 \end{center} \ignore{ A LOW LEVEL WAY TO DO THE ABOVE: double q = BigRat(1, 3); setDefaultAbsPrecision(67); // about 20 digits cout << "q = " << setprecision(10) << q << ", in 10 digits" << endl; // output: q = 0.33333333, in 10 digits cout.precision(30); // default to output 30 digits. cout.setf(ios::scientific, ios::floatfield); // use scientific notation cout << "q = " << q << ", in scientific notation." << endl; // output: q = 3.3333333333333333333e-1, in scientific notation. cout.setf(0, ios::floatfield); // reset the format to default. cout << "q = " << q << ", in positional notation." << endl; // output: q = 0.33333333333333333333, in positional notation. } %ignore \ignore{ OLD! \nopagebreak \begin{progb}{ \> \tt setDefaultOutputDigits(4);\\ \> // sets the number of output digits to 4.\\ \> \tt cout << B;\\ \> // prints the value 0.333.\\ \> \tt setDefaultOutputDigits(6) ;\\ \> \tt cout << B;\\ \> // prints the value 0.33333.\\ \> \tt setDefaultOutputDigits(20);\\ \> \tt cout << B;\\ \> // prints the value 0.3333333320915699005.\\ \> // the precision is not high enough to get all printed digits right.\\ \> \tt setDefaultPrecision(67, \posInfty);\\ \> // set adequate precision for 20 correct significant decimal digits.\\ \> \tt cout << B;\\ \> // prints the value 0.3333333333333333333 }\end{progb} } %ignore It is programmers' responsibility to set the composite precisions high enough to have all requested digits printed correctly. \subsubsection{Miscellaneous} To get the sign of the mantissa in a \BF, use $$\texttt{int BigFloat::sign()}$$ which returns one of the values $-1, 0, +1$. Since there may be error in a \BF, this may not be taken as the sign of the \BF\ unless you also verify that the following predicate is false: $$\texttt{bool BigFloat::isZeroIn()}.$$ This predicate is true iff $0$ lies in the interval $[mantissa \pm err]$. Another useful function is $$\texttt{BigFloat::isExact()}$$ which returns a true Boolean value if the error component of the \BF\ is zero. We can set this error component to zero by calling $$\texttt{BigFloat::makeExact()}.$$ There are two variants, \texttt{makeCeilExact()} and \texttt{makeFloorExact()}. Why would one do this? There are applications where the error bound is not needed. An example is when you implement a Newton iterator for roots. The algorithm is self-correcting, so the error bound is not necessary. But after an inexact operation (e.g., division), the error bound is nonzero. If you do not set this to zero, our automatic significance arithmetic algorithms may start to truncate the mantissa in order to keep the error bound from growing. This may prevent Newton from converging. The most significant bit (MSB) of any real number $x$ is basically $\lg|x|$ (log to base 2). When $x$ is an exact \BF, this value is an integer. In general, $x$ has an error, and it represents an interval of the form $[x-\varepsilon, x+\varepsilon]$. We provide two functions, \texttt{BigFloat::uMSB()} and \texttt{BigFloat::lMSB()}, each returning an extended long. Assuming that $0< x-\varepsilon$, the following inequalities must hold $$ \texttt{BigFloat::lMSB()} \le \lg |x-\varepsilon| \le \lg | x+\varepsilon| \le \texttt{BigFloat::uMSB()}.$$ When $x+\varepsilon < 0$, we modify the inequalities approproriately. When \texttt{x.isExact()} is true, the inequalities become equalities, and you can simply call the function \texttt{x.MSB()}. Here is an application: suppose you have computed a \BF\ value $x$ approximates $\sqrt{2}$. To see how close $x$ is to $\sqrt{2}$, you can compute $$\texttt{extLong p = (x*x - 2).uMSB() }.$$ E.g., to guarantee that $x- \sqrt{2}< 2^{-100}$, it is enough to make sure that this \textit{p} is less than $-97$. An alternative approach is to compare $x*x -2$ to $2^{-97}$. You can obtain the value $2^{-97}$ by calling another helper function $$\texttt{BigFloat::exp2(int n)}$$ which returns a \BF\ whose value is $2^n$. A \BF\ is really a wrapper about a \texttt{BigFloatRep} object. Sometime, you may like to get at this ``rep'', using the member function \texttt{getRep()}. \subsection{The Class \real} \label{sec-real-intro} The class \real\ provides a uniform interface to the six subtypes of numbers: \int, \lng, \double, \Int, \Rat, and \BF. There is a natural type coercion among these types as one would expect. It is as follows: \begin{center} $ \int \prec \lng \prec \double \prec \BF \prec \Rat $ , \\ $ \int \prec \lng \prec \Int \prec \Rat $ . \end{center} The \BF\ in this coercion is assumed to be error-free. To use the class \real, a program simply includes the file {\tt Real.h}. \nopagebreak \begin{progb}{ \> \tt \#include "CORE/Real.h" }\end{progb} \subsubsection{Class Constructors for \real} % \samepage \begin{progb}{ \> \tt Real();\\ \> \tt Real(int);\\ \> \tt Real(long);\\ \> \tt Real(double);\\ \> \tt Real(const BigInt\&);\\ \> \tt Real(const BigRat\&);\\ \> \tt Real(const BigFloat\&);\\ \> \tt Real(const Real\&);\\ \> \tt Real(const char *str, const extLong\& prec = defInputDigits); \\ \> \tt Real(const std::string\& str, const extLong\& prec = defInputDigits); }\end{progb} The default constructor declares an instance with a default \real\ with the value zero. Consistent with the \cpp\ language, an instance can be initialized to be any subtype of \real: \int, \lng, \double, \Int, \Rat, and \BF. In the last constructor from string, the conversion is exact in three cases: (i) when the value is integral (i.e., the string has only digits); (ii) rational (i.e., the string contains one `/' character and digits otherwise); (iii) when {\tt prec} = \coreInfty. Otherwise, it will convert to a \BF\ number within absolute precision $10^{-\mathit{prec}}$. \bigskip \subsubsection{Assignment} % \samepage \begin{progb} { \> \tt Real\& operator=(const Real\&);\\ \\ \> // arithmetic and assignment operators\\ \> \tt Real\& operator+=(const Real\&); \\ \> \tt Real\& operator-=(const Real\&); \\ \> \tt Real\& operator*=(const Real\&); \\ \> \tt Real\& operator/=(const Real\&); \\ \\ \> // post- and pre- increment and decrement operators\\ \> \tt Real operator++(); \\ \> \tt Real operator++(int); \\ \> \tt Real operator--(); \\ \> \tt Real operator--(int); }\end{progb} Users can assign values of type \int, \lng, \double, \Int, \Rat, and \BF\ to any instance of \real. \nopagebreak \begin{progb}{ \> \tt Real X; \\ \\ \> \tt X = 2; // assigns the machine \int\ 2 to {\tt X}. \\ \> \tt X = BigInt(4294967295); // assigns the \Int\ 4294967295 to {\tt X}. \\ \> \tt X = BigRat(1, 3); // assigns the \Rat\ 1/3 to {\tt X}. }\end{progb} \bigskip \subsubsection{Arithmetic Operations} \begin{progb} { \> \tt Real operator-() const; \\ \> \tt Real operator+(const Real\&) const; \\ \> \tt Real operator-(const Real\&) const; \\ \> \tt Real operator*(const Real\&) const; \\ \> \tt Real operator/(const Real\&) const; \\ \> \tt Real sqrt(const Real\&); }\end{progb} The class \real\ supports binary operators {\tt +, -, *, /} and the unary operators {\tt -}, and {\tt sqrt()} with standard operator precedence. % \samepage The rule for the binary operators $bin\_op\in\{+,-,\times\}$ is as follows: let $ typ_X $ and $ typ_Y $ be the underlying types of \real\ {\tt X} and {\tt Y}, respectively. Then the type of \mbox{{\tt X} $ bin\_op $ {\tt Y}} would be $MGU=max \{ typ_1, typ_2 \} $ where the order $ \prec $ is defined as in the type coercion rules in Section~\ref{sec-real-intro}. For instance, consider Program 8. Although {\tt X} and {\tt Y} are of type {\tt RealInt}, their sum {\tt Real Z} is of type {\tt RealBigInt} since the value of {\tt Z} cannot be represented in {\tt RealInt}. \nopagebreak \begin{center} \begin{tabular}{c} \begin{progb}{ \> \tt Real X, Y, Z; \\ \> \tt unsigned int x, y, z; \\ \> \tt int xx, yy, zz; \\ \\ \> \tt X = 1; x = 1; xx = 1;\\ \> \tt Y = 4294967295; // $ 2^{32}-1 $\\ \> \tt y = 4294967295; // $ 2^{32}-1 $ \\ \> \tt yy = 2147483647; // $ 2^{31}-1 $ \\ \> \tt Z = X + Y; z = x + y; zz = xx + yy; \\ \> \tt cout << "Z = " << Z << endl; \ // prints: Z = 4294967296 (correct!)\\ \> \tt cout << "z= " << z << endl; \ // prints: z = 0 (overflow)\\ \> \tt cout << "zz= " << zz << endl; // prints: z = -2147483648 (overflow)\\ }\end{progb} \end{tabular} Program 8 \end{center} \paragraph{Square Root.} The result of {\tt sqrt()} is always a \BF. There are two cases: in case the original input has an error $err>0$, then the result of the {\tt sqrt()} operation has error-bound at most $16\sqrt{err}$ , see \cite{ouchi:thesis}. If $err=0$, then the absolute error of the result is at most $2^{-a}$ where $a$=\defabs. \nopagebreak \begin{progb}{ \> \tt Real X = 2.0; \\ \\ \> \tt cout << setprecision(11) << sqrt(X) << endl; \\ \> // prints: 1.414213562 }\end{progb} \paragraph{Division.} The type $typ_Z$ of {\tt Z = X / Y} is either \Rat\ or \BF. If both $typ_X$ and $typ_Y$ are not \float, \double\ or \BF, then $typ_Z$ is \Rat; otherwise, it is \BF. If the output type is \Rat, the output is exact. For output type of \BF, the error bound in {\tt Z} is determined as follows. Inputs of type \float\ or \double\ are considered to be error-free, so only \BF\ can have positive error. If the error-bounds in {\tt X} or {\tt Y} are positive, then the relative error in {\tt Z} is at most $12\max\{relErr_X,relErr_Y\}$ where $relErr_X,relErr_Y$ are the relative errors in {\tt X} and {\tt Y}, respectively. If both {\tt X} and {\tt Y} are error-free then the relative error in {\tt Z} is at most \defrel. \subsubsection{Comparison} % \samepage \begin{progb} { \> \tt bool operator==(const Real\&) const;\\ \> \tt bool operator!=(const Real\&) const;\\ \> \tt bool operator< (const Real\&) const;\\ \> \tt bool operator<=(const Real\&) const;\\ \> \tt bool operator> (const Real\&) const;\\ \> \tt bool operator>=(const Real\&) const; }\end{progb} \subsubsection{Real I/O} \label{sec-real-out} % \samepage \begin{progb} { \> \tt istream\& operator>>(istream\&, Real);\\ \> \tt ostream\& operator<<(ostream\&, const Real\&); }\end{progb} The input string is parsed and if the value is integral, it is read in exactly. Otherwise, it is approximated with absolute precision \definput\ (in decimal). Note that if \definput\ is $\infty$, the input is read in exactly as a big rational number. To output the value of an instance of \real, we can use the standard \cpp\ output stream operator {\tt <<}. Output is in decimal representation. There are two kinds of decimal outputs: for \int, \lng, \Int\ and \Rat\ subtypes, this is the exact value of \real. But for \double\ and \BF\ subtypes, we use the decimal floating point notation described under \BF\ output. \nopagebreak \begin{center} \begin{tabular}{c} \begin{progb}{ \> \tt BigRat R(1, 3); \\ \> \tt BigFloat B(R); \\ \> \tt BigInt I = 1234567890;\\ \> \tt cout.precision(8); // set output precision to 8\\ \\ \> \tt Real Q = R; \\ \> \tt Real X = B; \\ \> \tt Real Z = I; \\ \\ \> \tt cout << R << endl; // prints: \tt 1/3 \\ \\ \> \tt cout << Q << endl; // prints: \tt 0.3333333 \\ \\ \> \tt cout << X << endl; // prints: \tt 0.3333333\\ \\ \> \tt cout << Z << endl; // prints: \tt .12345679e+10 }\end{progb} \end{tabular}\\ Program 9 \end{center} Other related functions are \begin{progb}{ \> \tt int BigInt::fromString(const char* s, int base = 0); \\ \> \tt std::string BigInt::toString(int base = 10); \\ }\end{progb} If {\tt base = 0}, then a prefix {\tt p} in string {\tt s} tself determines the base: {\tt p = 0b} means binary, {\tt p = 0} means octal, {\tt p = 0x} means hexadecimal, {\tt p} is the empty string means decimal. \subsubsection{Approximation} \begin{progb} { \> \tt Real approx(const extLong\& r, const extLong\& a) const; }\end{progb} Force the evaluation of the approximate value to the composite precision $[r, a]$. The returned value is always a {\tt RealBigFloat} value. \ignore{ Actually it is built upon the \BF\ functions described in Section~\ref{sec-bf-approx}. } \subsubsection{Miscellaneous} \begin{progb} { \> // get the sign of a Real value\\ \> \tt int Real::sign() const;\\ \> \tt int sign(const Real\&); }\end{progb} \subsection{The Class \expr} To use the class \expr, a program simply includes the file {\tt Expr.h}. The file {\tt Real.h} is automatically included with {\tt Expr.h}. \nopagebreak \begin{progb}{ \> \tt \#include "CORE/Expr.h" }\end{progb} For most users, the ideal way to use our library is to have the user access only the class \expr\ indirectly by setting the accuracy level to 3 so that \double\ and \lng\ will be prompted to \expr. An instance of the class \expr\ $ E $ is formally a triple $$ E = ( T, P, A )$$ where $T$ is an {\em expression tree}, $P$ a composite precision, and $A$ is some real number or $\uparrow$ (undefined value). The internal nodes of $T$ are labeled with one of those operators \begin{equation}\label{eq:op} +, -, \times, \div, \sqrt{\cdot}, \end{equation} and the leaves of $T$ are labeled by \real\ values or is $\uparrow$. $P=[r,a]$ is a pair of \extlong, with $ r $ non-negative. If all the leaves of $T$ are labeled by \real\ values, then there is a real number $V$ that is the value of the expression $T$; otherwise, if at least one leaf of $T$ is labeled by $\uparrow$, then $V=\uparrow$. Finally, the value $A$ satisfies the relation $$A\simeq V [r,a].$$ This is interpreted to mean either $V=A=\uparrow$ or $A$ approximates $V$ to precision $P$. In the current implementation, leaves must hold exact values. Moreover, the value $A$ is always a \BF. The nodes of expression trees are instances of the class \exprep. More precisely, each instance of \expr\ has a member \rep\ that points to an instance of \exprep. Each instance of \exprep\ is allocated on the heap and has a type, which is either one of the operations in (\ref{eq:op}) or type ``constant''. Depending on its type, each instance of \exprep\ has zero, one or two pointers to other \exprep. For instance, a constant \exprep, a $\sqrt{\cdot}$-\exprep\ and a +-\exprep\ has zero, one and two pointers, respectively. The collection of all \exprep s together with their pointers constitute a directed acyclic graph (DAG). Every node $N$ of this DAG defines an expression tree $E(N)$ in the natural way. Unlike \cite{ouchi:thesis}, assignment to \expr\ has the standard semantics. As an example, after the assignment $e = f \odot g$, $\val(e) = \val(f) \odot \val(g)$ and $\val(e)$ does not change until some other assignment to $e$. In particular, subsequent assignments to $f$ and $g$ do not affect $\val(e)$. \bigskip \subsubsection{Class Constructors for \expr} % \samepage \begin{progb}{ \> \tt Expr(); \\ \> \tt Expr(int); \\ \> \tt Expr(long); \\ \> \tt Expr(unsigned int); \\ \> \tt Expr(unsigned long); \\ \> \tt Expr(float); \\ \> \tt Expr(double); \\ \> \tt Expr(const BigInt \&); \\ \> \tt Expr(const BigFloat \&); \\ \> \tt Expr(const BigRat \&); \\ \> \tt Expr(const char *s, const extLong\& prec=defInputDigits); \\ \> \tt Expr(const std::string \&s, const extLong\& prec=defInputDigits); \\ \> \tt Expr(const Real \&); \\ \> \tt Expr(const Expr \&); // copy constructor \\ \> \tt template \\ \>\> \tt Expr(const Polynomial\& p, int n=0);\\ \>\>\> // this specifies the n-th smallest real root. \\ \> \tt template \\ \>\> \tt Expr(const Polynomial\& p, const BFInterval\& I);\\ \>\>\> // this specifies the unique real root in interval I. }\end{progb} The default constructor of \expr\ constructs a constant \expr\ object with the value zero. When a constructor is called with some \real\ value, then a parameter which contains the specified \real\ value is declared. In \corelib\ 1.6, we introduced a new constant \expr\ object which is constructed from a polynomial (see Appendix A.4 for the \Poly\ class). The value is a real root of this polynomial, and so we need an argument to indicate a unique root. This can be an closed interval $I$ comprising a pair of \BF's, or an integer $n$. Collectively, both $n$ and $I$ are called {\em root indicators}. The interval $I$ must be {\em isolating} meaning that it contains a unique real root of the polynomial. If $n\ge 1$, then we specify the $n$th {\em smallest} real root (so $n=1$ is the smallest real root). If $n\le -1$, this refers to the $(-n)$-th {\em largest} real root. For convenience, we also provide three global functions to help the user construct such \expr\ node: \begin{progb}{ \> \tt template \\ \> \> \tt rootOf(const Polynomial\& p, int n=0); \\ \> \tt template \\ \> \> \tt rootOf(const Polynomial\& p, const BFInterval\& I); \\ \> \tt template \\ \> \> \tt radical(const NT\& k, int m); // the m-th root of k\\ }\end{progb} So for a polynomial {\tt P}, both {\tt Expr e(P, i)} and {\tt Expr e = rootOf(P, i)} are equivalent (where {\tt i} is a root indicator). \ignore{ \nopagebreak A variable is declared if a constructor is called with an algebraic expression which involves operators {\tt +}, {\tt -}, {\tt *}, {\tt /} or {\tt sqrt()}, instances of \expr\ (can be either parameters or variables), and \real\ values. However, the expressions must be dags (i.e., cycles are not allowed). } \bigskip \subsubsection{Assignments} \begin{progb} { \> \tt Expr\& operator=(const Expr\&); \\ \\ \> \tt Expr\& operator+=(const Expr\&); \\ \> \tt Expr\& operator-=(const Expr\&); \\ \> \tt Expr\& operator*=(const Expr\&); \\ \> \tt Expr\& operator/=(const Expr\&); \\ \\ \> \tt Expr\& operator++(); \\ \> \tt Expr operator++(int); \\ \> \tt Expr\& operator--(); \\ \> \tt Expr operator--(int); }\end{progb} %%\subsubsection{Assignments} %% %%Two distinct instances of the class \expr\ may share their \rep\ %%s. Assignments to instances of \expr\ must therefore be handled %%carefully. %% %%Depending on what is on the right hand side of the assignment, there %%are three distinct meanings for assignments. %% % %%\samepage %%If the RHS is a \real\ value, then the assignment is called {\em value %%assigning}; the LHS becomes a parameter. %% %%\nopagebreak %%\begin{progb}{ %%\> \tt Expr e, f; \\ %%\> \tt Real X; \\ %%\\ %%\> \tt e = X; \\ %%\> \tt f = 5; \\ %%\> // value assigning; \\ %%\> // {\tt e} and {\tt f} are now parameters. %%}\end{progb} %% % %%\samepage %%If the RHS is an algebraic expression, then the assignment is called %%{\em constructing}; the LHS becomes a variable. %% %%\nopagebreak %%\begin{progb}{ %%\> \tt Expr e, f, g; \\ %%\\ %%\> \tt e = f * g; \\ %%\> // {\tt e} is now a variable. %%}\end{progb} %% %%\bigskip %% \subsubsection{Arithmetic Operations} % \samepage \begin{progb} { \> \tt Expr operator-() const; //unary minus \\ \> \tt Expr operator+(const Expr\&, const Expr\&); //addition \\ \> \tt Expr operator-(const Expr\&, const Expr\&); //subtraction \\ \> \tt Expr operator*(const Expr\&, const Expr\&); //multiplication \\ \> \tt Expr operator/(const Expr\&, const Expr\&); //division \\ \> \tt Expr sqrt(const Expr\&); // square root \\ \> \tt Expr abs(const Expr\&); // absolute value \\ \> \tt Expr fabs(const Expr\&); // same as abs() \\ \> \tt Expr pow(const Expr\&, unsigned long); // power \\ \> \tt Expr power(const Expr\&, unsigned long); // power \\ }\end{progb} % WHAT ABOUT the % \samepage For the convenience and efficiency, integer powers can be constructed by applying the function {\tt power()}. \nopagebreak \begin{progb}{ \> \tt Expr e = 3 * power(B, 5);\\ \> \> // alternative for "Expr e = 3 * B*B*B*B*B.\\ }\end{progb} \subsubsection{Comparisons} % \samepage \begin{progb} { \> \tt bool operator==(const Expr\&, const Expr\&); \\ \> \tt bool operator!=(const Expr\&, const Expr\&); \\ \> \tt bool operator< (const Expr\&, const Expr\&); \\ \> \tt bool operator<=(const Expr\&, const Expr\&); \\ \> \tt bool operator> (const Expr\&, const Expr\&); \\ \> \tt bool operator>=(const Expr\&, const Expr\&); }\end{progb} The standard \cpp\ comparison operators {\tt <}, {\tt >}, {\tt <=}, {\tt >=}, {\tt ==}, and {\tt != } perform ``exact comparison''. When {\tt A < B} is tested, {\tt A} and {\tt B } are evaluated to sufficient precision so that the decision is made correctly. Because of root bounds, such comparisons always terminate. The returned value is a non-negative integer, where 0 means ``false'' while non-0 means ``true''. % // An example of O'Rourke: \nopagebreak \begin{center} \begin{tabular}{c} \begin{progb}{ \> \tt Expr e[2];\\ \> \tt Expr f[2];\\ \> \tt e[0] = 10.0; e[1] = 11.0;\\ \> \tt f[0] = 5.0; f[1] = 18.0;\\ \> \tt Expr ee = sqrt(e[0])+sqrt(e[1]);\\ \> \tt Expr ff = sqrt(f[0])+sqrt(f[1]);\\ \> \tt if (ee>ff) cout << "sr(10)+sr(11) > sr(5)+sr(18)" << endl;\\ \> \tt else cout << "sr(10)+sr(11) <= sr(5)+sr(18)" << endl;\\ \> // prints: $sr(10)+sr(11) > sr(5)+sr(18)$\\ }\end{progb} \end{tabular}\\ Program 10 \end{center} \bigskip \subsubsection{Expr I/O} % % \samepage \begin{progb} { \> \tt ostream\& operator<<(ostream\&, const Expr\&); \\ \> \tt istream\& operator>>(istream\&, Expr \&); }\end{progb} The input will construct a {\tt ConstRep} with a {\tt Real} value read in from the input stream. The input routine for {\tt Real} is discussed in Section~\ref{sec-real-out}. The standard \cpp\ operator {\tt <<} outputs the stored approximate value which is always a \BF\ number. If there is no approximate value available, it will force an evaluation to the default precisions. It prints as many digits of significance as is currently known as correct (up to the output precision specified). See Section~\ref{sec-BF-out} for examples. \subsubsection{Approximation} \begin{progb} { \> \tt Real approx(const extLong\& r = defRelPrec, const extLong\& a = defAbsPrec); }\end{progb} {\tt A.approx(r, a)} evaluates {\tt A} and returns its approximate value to precision {\tt [r, a]}. If no argument is passed, then {\tt A} is evaluated to the default global precision [\defrel, \defabs]. If the required precision is already satisfied by the current approximation, the function just returns the current approximate value. An expression is not evaluated until the evaluation is requested explicitly (e.g., by {\tt approx()}) or implicitly (e.g.\ by some I/O operations). \nopagebreak \begin{progb}{ \> \tt Expr e; \\ \> \tt Real X; \\ \> \tt unsigned r; int a; \\ \\ \> \tt X = e.approx(r, a); \\ \> // {\tt e} is evaluated to precision at least \tt [r, a] \\ \> // and this value is given to {\tt X}; }\end{progb} The following helper functions allow you to get at the current approximate value in an \expr: \nopagebreak \begin{progb}{ \> \tt Expr e; \\ \> \tt $\vdots$ \\ \> \tt e.sign(); // returns the exact sign of e (note that e.getSign() is deprecated,\\ \> \>\>\> as "sign()" is the uniform interface for all the number classes\\ \> \tt e.BigFloatValue(); // returns the current BigFloat approximation \\ \> \tt e.getMantissa(); // returns the mantissa of current BigFloat \\ \> \tt e.getExponent(); // returns the exponent of current BigFloat \\ }\end{progb} \subsubsection{Conversion Functions} \label{sec-expr-cast} \begin{progb} { \> \tt double doubleValue() const; \>\>\>\>\>\>\> // convert to machine built-in double\\ \> \tt float floatValue() const; \>\>\>\>\>\>\> // convert to machine built-in float\\ \> \tt long longValue() const; \>\>\>\>\>\>\> // convert to machine built-in long\\ \> \tt int intValue() const; \>\>\>\>\>\>\> // convert to machine built-in int\\ \> \tt \Int\ BigIntValue() const; \>\>\>\>\>\>\> // convert to a BigInt number\\ \> \tt \Rat\ BigRatValue() const; \>\>\>\>\>\>\> // convert to a BigRat number\\ \> \tt \BF\ BigFloatValue() const; \>\>\>\>\>\>\> // convert to a BigFloat number\\ }\end{progb} The semantics of these operations are clear except for converting into \Rat\ or \BF. For \BF, we use the current approximate value of the expression. For \Rat, we use the same \BF\ value converted into a rational number. Note that users must exercise caution in using these conversions. Overflow or underflow errors occur silently during the conversion. It is the user's responsibility to detect such conditions. Nevertheless, they are useful for converting existing \candcpp\ programs. E.g., these operators can be applied on the {\tt printf()} arguments. See Section~\ref{sec-convert} for details. \subsection{Filters and Root Bounds} \label{sec-expr-filters} The expression class has an elaborate mechanism for computing root bounds, and a floating point filter. Our filters is based on the so-called BFS Filter \cite{bfs:exact-cascaded:01}. Our root bounds are a combination of several techniques (BFMSS Bound, Measure bound and conjugate bound). In fact, the BFMSS bound is the so-called k-ary version \cite{pion-yap:kary:03}. For more details on these topics, see \cite{li-pion-yap:progress:04}. \subsection{The Template Class \Poly} Class \Poly\ is a template class, which can be instantiated with the number type {\tt NT} of polynomial coefficients. We support {\tt NT} chosen from \int\, \Int\, \BF\, \Rat\ and \expr. Since Version 1.6, the Class \Poly\ is incorporated into \corelib. In particular, the file \texttt{CORE.h} or \texttt{Expr.h} automatically include the files \texttt{poly/Poly.h} and \texttt{poly/Poly.tcc}. The following constructors are available for this class: \begin{progb}{ \> \tt Polynomial(); // the Zero Polynomial \\ \> \tt Polynomial(int n); // the Unit Polynomial of nominal deg $n\ge 0$ \\ \> \tt Polynomial(int n, NT* coef); // coef is the array of coefficients\\ \> \tt Polynomial(const VecNT \&); // VecNT is a vector of coefficients\\ \> \tt Polynomial(int n, const char * s[]);\\ \> \tt Polynomial(const Polynomial \&); \\ \> \tt Polynomial(const string \& s, char myX='x' );\\ \> \tt Polynomial(const char * s, char myX='x' ); }\end{progb} The last two constructors takes a string {\tt s}. They are convenient and intuitive to use, and works best for up to moderate size polynomials. For instance, The user can construct a polynomial by calling \mbox{\tt Polynomial p("3x\^2 + 4*x + 5")} using the default variable name {\tt x}. If you use some other variable name such as {\tt Z}, then you can use the second argument to specify this. E.g., \mbox{\tt Polynomial p("3Z \^2 + 4*Z + 5", 'Z')}. The syntax for a valid input string {\tt s} given by the following BNF grammar: \begin{verbatim} [poly] -> [term] | [term] '+/-' [poly] \\ | '-' [term] | '-' [term] '+/-' [poly] \\ [term] -> [basic term] | [basic term] [term] | [basic term]*[term]\\ [basic term] -> [number] | 'x' | [basic term] '^' [number] | '(' [poly] ')' \end{verbatim} The recursiveness in these rules meant that an input string such as {\tt s = "(2x - 1)\^12 (x\^2 - 2x + 3)"} is valid. See \progsdir/\texttt{poly/parsePoly.cpp} for examples. When specifying an array {\tt coef} of coefficients, the coefficient of the power product $x^i$ is taken from {\tt coeff[i]}. So the constant term is {\tt coeff[0]}. If we want to reverse this ordering (and treat {\tt coeff[0]} as the leading coefficient), we can first use the above constructor, and then reverse the polynomial (the reverse method is listed below). An example of how to use these constructors are shown below: \begin{progb}{ \> \tt typedef BigInt NT; \\ \> \tt typedef Polynomial PolyNT; // convenient typedef \\ \> \tt PolyNT P1; // Zero Polynomial \\ \> \tt PolyNT P2(10); // Unit Polynomial of degree 10\\ \> \tt NT coeffs[] = \{1, 2, 3\}; \\ \> \tt PolyNT P3(1, coeffs); // P3(x) = 1 + 2x + 3x**2\\ \> \tt const char* s[] = \{"123456789", "0", "-1"\}; \\ \> \tt PolyNT P4(1, s) // P4(x) = 123456789 - x**2; \\ \> \tt PolyNT P5("u\^2(u + 234)\^2 - 23(u + 2)*(u+1)", 'u'); }\end{progb} You can also input these coefficients as strings (this is useful when the coefficients are so large that they may overflow a machine integer). \subsubsection{Assignments} \begin{progb} { \> \tt Polynomial\& operator=(const Polynomial\&); \\ \\ \> \tt Polynomial\& operator+=(const Polynomial\&); \\ \> \tt Polynomial\& operator-=(const Polynomial\&); \\ \> \tt Polynomial\& operator*=(const Polynomial\&); }\end{progb} \subsubsection{Arithmetric Operations} \begin{progb} { \> \tt Polynomial\& operator-(); \\ \\ \> \tt Polynomial\& operator+(const Polynomial\&, const Polynomial\&); \\ \> \tt Polynomial\& operator-(const Polynomial\&, const Polynomial\&); \\ \> \tt Polynomial\& operator*(const Polynomial\&, const Polynomial\&); }\end{progb} \subsubsection{Comparisons} \begin{progb} { \> \tt bool operator ==(const Polynomial\&, const Polynomial\&); \\ \> \tt bool operator !=(const Polynomial\&, const Polynomial\&); }\end{progb} \subsubsection{I/O} \begin{progb} { \> \tt ostream\& operator<<(ostream\&, const Polynomial\&);\\ \> \tt istream\& operator>>(istream\&, Polynomial\&); }\end{progb} \subsubsection{Manipulation and Query Functions} The following methods are used to manipulate (i.e., modify) to query polynomials: \begin{progb} { \> \tt int expand(int n); // Change the nominal degree to n \\ \> \tt int contract(); // get rid of leading zeros \\ \> \tt int getDegree() const; // nominal degree \\ \> \tt int getTrueDegree() const; // true degree \\ \> \tt const NT\& getLeadCoeff() const; // get TRUE leading coefficient \\ \> \tt const NT\& getTailCoeff() const; // get last non-zero coefficient\\ \> \tt NT** getCoeffs() ; // get all coefficients \\ \> \tt const NT\& getCoeff(int i) const; // Get coefficient of $x^i$ \\ \> \tt bool setCoeff(int i, const NT\& cc);i // Makes cc the coefficient\\ \>\> // of $x^i$; return FALSE if invalid i. \\ \> \tt void reverse(); // reverse the coefficients \\ \> \tt Polynomial \& negate(); //Multiply by -1.\\ \> \tt int makeTailCoeffNonzero(); // Divide (*this) by $x^k$, so that\\ \>\> // the tail coeff is non-zero. Return k.\\ }\end{progb} \subsubsection{Algebraic Polynomial Operations} \begin{progb}{ \>\tt Polynomial\& differentiate(); // self-differentiation\\ \>\tt Polynomial\& differentiate(int n); // multi self-differentiation\\ \>\tt Polynomial\& squareFreePart(); // P/gcd(P,P') \\ \>\tt Polynomial\& primPart(); // Primitive Part \\ \>\tt Polynomial pseudoRemainder (const Polynomial\& B, NT\& C);\\ \>\> // The pseudo quotient of (*this) mod B is returned, but (*this) is\\ \>\> // transformed into the pseudo remainder. If argument C is not not\\ \>\> // null, then C*(*this) = B*pseudo-quotient + pseudo-remainder.\\ \>\tt Polynomial \& negPseudoRemainder (const Polynomial\& B); \\ \>\> // Same as the previous one, except negates the remainder.\\ \>\tt Polynomial reduceStep (Polynomial\& p ); \\ }\end{progb} All of the above operations are self-modifying. If this is undesirable, the user ought to make a copy of the polynomial first. \subsubsection{Numerical Polynomial Operations} These operations include evaluation and root bounds: \begin{progb}{ \> \tt Expr eval(const Expr\&) const; // polynomial evaluation \\ \> \tt BigFloat eval(const BigFloat\&) const; // polynomial evaluation \\ \> \tt template myNT eval(const myNT\&) const; // evaluation at an\\ \> \> //arbitrary number type.\\ \> \tt BigFloat CauchyUpperBound() const; // Cauchy Root Upper Bound \\ \> \tt BigFloat CauchyLowerBound() const; // Cauchy Root Lower Bound \\ \> \tt BigFloat sepBound() const; // separation bound (multiple roots allowed) \\ \> \tt BigFloat height() const; // height function\\ \> \tt BigFloat length() const; // length function\\ }\end{progb} Note that the {\tt eval} function here is a generic function: it allows you to evaluate the polynomial at any number type {\tt myNT}. The return type is also {\tt myNT}. To do this, we convert each coefficient (which has type {\tt NT}) of the polynomial into type {\tt myNT}. Then all the operations of the evaluation is performed within the class {\tt myNT}. For this to work properly, we therefore require that {\tt NT}$\le${\tt myNY} (recall that there is a natural partial ordering among number types). For instance, if {\tt NT}=\BF, then {\tt myNT} can be \BF, \Rat\ or \expr. In particular, using {\tt myNT} will ensure exact results; but this may be expensive and in many situations, \BF\ is the correct choice (e.g., Newton iteration). \subsubsection{Miscellaneous} Some methods in \Poly\ depend on the choice of {\tt NT}. In particular, some methods need to know whether the coefficient type {\tt NT} supports\footnote{ We say ``general division'' to distinguish this from special kinds of division such as division by 2 (this is supported by \BF) or exact division (this is supported by \Int). } ``general'' division. Hence we require all such number types to provide a static method {\tt NT::hasDivision()} that returns a boolean value. Among the supported {\tt NT}, only \Rat\ and \expr\ has general division. \subsection{The Template Class \Sturm} % Class \Sturm\ has been incorporated into \corelib\ since 1.6. This class implements the Sturm sequence associated with a polynomial. Starting with Version 1.7 this class can handle \int, \Int, \lng, \Rat, \BF, and \expr. The most important being \Int, \BF, and \expr, although the last one can be inefficient for polynomials with large degree. The constructors are: \begin{progb}{ \> \tt Sturm(); // null constructor\\ \> \tt Sturm(PolyNT pp); // constructor from polynomial\\ \> \tt Sturm(int n, NT * c);// constructor from an array of coefficients\\ \> \tt Sturm(const Sturm\& s); // copy constructor }\end{progb} After we have constructed a Sturm object based upon some polynomial, we can use the following functions to get more properties as described below. \subsubsection{Functions in \Sturm\ Class} \begin{progb}{ \> \tt int signVariations(const BigFloat\& x, int sx); \\ \>\> // Gets the sign variations of the Sturm sequence at a given point\\ \> \tt int signVariationsAtPosInfty();\\ \> \tt int signVariationsAtNegInfty();\\ \> \tt int numberOfRoots(const BigFloat\& x, const BigFloat\& y);\\ \> \> //Number of roots in the closed interval [x, y] \\ \> \tt int numberOfRoots();// number of real roots of the polynomial\\ \> \tt int numberOfRootsAbove(const BigFloat \&x);\\ \> \tt int numberOfRootsBelow(const BigFloat \&x);\\ \> \tt void isolateRoots(const BigFloat \&x, const BigFloat \&y, BFVecInterval \&v);\\ \> \> //Isolates all the roots in the interval [x,y] and returns them in v\\ \> \> //a list of intervals\\ \> \tt void isolateRoots(BFVecInterval \&v); \rm// Isolates all the roots\\ \> \tt BFInterval isolateRoot(int i); \rm// Isolate the i-th smallest\\ \> \> // root, if $i < 0$ then we get the i-th largest root\\ \> \tt BFInterval isolateRoot(int i, BigFloat x, BigFloat y);\\ \> \> // Isolate the i-th smallest root in the interval [x,y]\\ \> \tt BFInterval firstRootAbove(const BigFloat \&e);\\ \> \tt BFInterval firstRootBelow(const BigFloat \&e);\\ \> \tt BFInterval mainRoot();//First root above 0\\ \> \tt BFInterval refine(const BFInterval\& I, int aprec);\\ \> \> // Refine the interval \texttt{I} containing the root using bisection\\ \> \tt BFInterval refinefirstRootAbove(const BigFloat \&e, int aprec);\\ \> \> //Get an absolute approximation to aprec of the first root above \texttt{e}.\\ \> \> //Achieved using the refine method above.\\ \> \tt BFInterval refinefirstRootBelow(const BigFloat \&e, int aprec);\\ \> \> // Similar to previous method, except refines the first root below \texttt{e}\\ \> \tt void refineAllRoots( BFVecInterval \&v, int aprec);\\ \> \> //Refines all the roots to absolute precision aprec (based upon refine)\\ \> \tt }\end{progb} A main feature of the Sturm Class is that it provides standard Newton iteration using which we can converge rapidly to any root of the underlying polynomial. The following methods provide the desired functionality. \subsubsection{Newtons Method in \Sturm\ Class} \begin{progb}{ \> \tt BigFloat newtonIterN(long n, const BigFloat\& bf, BigFloat\& del,\\ \> \> unsigned long \& err);\\ \> \> // Does n steps of standard Newton's method starting from the initial\\ \> \> // value bf. The return value is the approximation to the root after\\ \> \> // n steps. del is an exact BigFloat which is an upper bound on the \\ \> \> difference between the n-th and n-1-th approximation, say $del_{n-1}$.\\ \> \> err is an upper bound $|del - del_{n-1}|$.\\ \> \tt BigFloat newtonIterE(int prec, const BigFloat\& bf, BigFloat\& del);\\ \> \> // Does Newton iteration till $del.uMSB() < -prec$\\ \> \tt BFInterval newtonRefine(const BFInterval I, int aprec);\\ \> \> // Given an isolating interval I for a root x*, will return \\ \> \> //an approximate root x such that $|x-x^*| < 2^{-aprec}$.\\ \> \> //Assumes that the interval end points are known exactly.\\ \> \tt void newtonRefineAllRoots( BFVecInterval \&v, int aprec);\\ \> \> // Refines all the roots of the polynomial to the desired precision\\ \> \> // aprec using newtonRefine above\\ \> \tt bool smaleBoundTest(const BigFloat\& z); // Implementation of \\ \> \> // Smale's point estimate to determine whether we have reached \\ \> \> // Newton basin. This is an a posteriori criterion unlike the next.\\ \> \tt BigFloat yapsBound(const Polynomial \& p);// An apriori bound\\ \> \> // to determine whether we have reached Newton zone.\\ }\end{progb} \subsection{The Template Class \Curve} Introduced in Version 1.7, this class allows the user to manipulate arbitrary real algebraic curves. The \Curve\ class is derived from the \BiPoly\ class, so we begin by describing the \BiPoly\ class: \begin{progb}{ \> \tt BiPoly(); //Constructs the zero bi-poly.\\ \> \tt BiPoly(int n);// creates a BiPoly with nominal y-degree of n.\\ \> \tt BiPoly(std::vector > vp); // From vector of Polynomials\\ \> \tt BiPoly(Polynomial p, bool flag=false);\\ \> \> //if true, it converts polynomial p(x) into p(y)\\ \> \> //if false, it creates the bivariate polynomial y - p(x)\\ \> \tt BiPoly(int deg, int *d, NT *C); //Takes in a list of list of\\ \> \> // coefficients. Each cofficient list represents a polynomial in x\\ \> \> // deg - ydeg of the bipoly\\ \> \> // d[] - array containing the degrees of each coefficient\\ \> \> // (i.e., x poly)\\ \> \> // C[] - list of coefficients, we use array d to select the \\ \> \> // coefficients.\\ \> \tt BiPoly(const BiPoly\&); //Copy constructor\\ \> \tt BiPoly(const string\& s, char myX='x', char myY='y');\\ \> \tt BiPoly(const char* s, char myX='x', char myY='y'); }\end{progb} The last two constructors from strings are similar to the ones for \Poly. The syntax of valid input string is determined by a BNF grammar that is identical to the one for univariate polynomials, except that we now allow a second variable {\tt 'y'}. \subsubsection{Assignments} \begin{progb} { \> \tt BiPoly \& operator=( const BiPoly\& P); // Self-assignment\\ \> \tt BiPoly \& BiPoly::operator+=( BiPoly\& P); // Self-addition\\ \> \tt BiPoly \& BiPoly::operator-=( BiPoly\& P); //Self-subtraction\\ \> \tt BiPoly \& BiPoly::operator*=( BiPoly\& P); //Self-multiplication}\end{progb} \subsubsection{Comparison and Arithmetic} \begin{progb}{ \> \tt bool operator==(const BiPoly\& P, const BiPoly\& Q);\\ \> \> //Equality operator for BiPoly\\ \> \tt BiPoly operator+(const BiPoly\& P, const BiPoly\& Q);\\ \> \> //Addition operator for BiPoly\\ \> \tt BiPoly operator-(const BiPoly\& P, const BiPoly\& Q);\\ \> \> //Subtraction operator for BiPoly\\ \> \tt BiPoly operator*(const BiPoly\& P, const BiPoly\& Q);\\ \> \> //Multiplication operator for BiPoly }\end{progb} \subsubsection{I/O} \begin{progb}{ \> \tt void dump(std::ostream \& os, std::string msg = "");\\ \> \tt void dump(std::string msg="");\\ }\end{progb} These dump the \BiPoly\ object to a file or standard output as a string. \subsubsection{Functions} We have the following methods to manipulate bivariate polynomials. \begin{progb}{ \> \tt Polynomial yPolynomial(const NT \& x); // Returns the univariate\\ \> \> //polynomial obtained by evaluating the coeffecients at x.\\ \> \tt Polynomial yExprPolynomial(const Expr \& x);\\ \> \> // Expr version of yPolynomial.\\ \> \tt Polynomial yBFPolynomial(const BigFloat \& x);\\ \> \> // BF version of yPolynomial\\ \> \tt Polynomial xPolynomial(const NT \& y) ;\\ \> \> // returns the polynomial (in X) when we substitute Y=y\\ \> \tt int getYdegree() const; // returns the nominal degree in Y\\ \> \tt int getXdegree(); // returns the nominal degree in X.\\ \> \tt int getTrueYdegree();//returns the true Y-degree.\\ \> \tt Expr eval(Expr x, Expr y);//Evaluate the polynomial at (x,y)\\ \> \tt int expand(int n);\\ \> \> // Expands the nominal y-degree to n;\\ \> \> // Returns n if nominal y-degree is changed to n, else returns -2\\ \> \tt int contract();\\ \> \> // contract() gets rid of leading zero polynomials\\ \> \> // and returns the new (true) y-degree; returns -2 if this is a no-op\\ \> \tt BiPoly \& mulXpoly( Polynomial \& p);\\ \> \> // Multiply by a polynomial in X\\ \> \tt BiPoly \& mulScalar( NT \& c);\\ \> \> //Multiply by a constant\\ \> \tt BiPoly \& mulYpower(int s);\\ \> \> // mulYpower: Multiply by $Y^i$ (COULD be a divide if i<0)\\ \> \tt BiPoly \& divXpoly( Polynomial \& p);\\ \> \> // Divide by a polynomial in X.\\ \> \> // We replace the coeffX[i] by the pseudoQuotient(coeffX[i], P)\\ \> \tt BiPoly pseudoRemainderY (BiPoly \& Q);\\ \> \> //Using the standard definition of pseudRemainder operation.\\ \> \> // --No optimization!\\ \> \tt BiPoly \& differentiateY(); //Partial Differentiation wrt Y\\ \> \tt BiPoly \& differentiateX(); //Partial Differentiation wrt X\\ \> \tt BiPoly \& differentiateXY(int m, int n);\\ \> \> //m times wrt X and n times wrt Y\\ \> \tt BiPoly \& convertXpoly();\\ \> \> //Represents the bivariate polynomial in (R[X])[Y] as a member\\ \> \> //of (R[Y])[X]. This is needed to calculate resultants w.r.t. X.\\ \> \tt bool setCoeff(int i, Polynomial p);\\ \> \> //Set the $i$th Coeffecient to the polynomial passed as a parameter\\ \> \tt void reverse();// reverse the coefficients of the bi-poly\\ \> \tt Polynomial replaceYwithX();\\ \> \tt BiPoly\& pow(unsigned int n); //Binary-power operator\\ \> \tt BiPoly getbipoly(string s);\\ \> \> //Returns a Bipoly corresponding to s, which is supposed to\\ \> \> //contain as place-holders the chars 'x' and 'y'.\\ }\end{progb} There are other useful friend functions for \BiPoly\ class: \begin{progb}{ \> \tt bool zeroPinY(BiPoly \& P);\\ \> \> //checks whether a Bi-polynomial is a zero Polynomial\\ \> \tt BiPoly gcd( BiPoly\& P ,BiPoly\& Q);\\ \> \> // This gcd is based upon the subresultant PRS to avoid\\ \> \> // exponential coeffecient growth and gcd computations, both of which \\ \> \> // are expensive since the coefficients are polynomials\\ \> \tt Polynomial resY( BiPoly\& P ,BiPoly\& Q);\\ \> \> // Resultant of Bi-Polys P and Q w.r.t. Y.\\ \> \> // So the resultant is a polynomial in X\\ \> \tt BiPoly resX( BiPoly\& P ,BiPoly\& Q);\\ \> \> // Resultant of Bi-Polys P and Q w.r.t. X.\\ \> \>// So the resultant is a polynomial in Y\\ \> \>// We first convert P, Q to polynomials in X. Then \\ \> \>// call resY and then turn it back into a polynomial in Y\\ }\end{progb} We now come to the derived class \Curve. All the methods provided for bivariate polynomials are available for curves as well, but there are two additional functions: \begin{progb}{ \> \tt int verticalIntersections(const BigFloat \& x, BFVecInterval \& vI,\\ \>\> \> int aprec=0);\\ \> \> // The list vecI is passed an isolating intervals for y's such \\ \> \> // that (x,y) lies on the curve.\\ \> \> // If aprec is non-zero (!), the intervals have with $<2^{-aprec}$.\\ \> \> // Returns $-2$ if curve equation does not depend on Y,\\ \> \> // -1 if infinitely many roots at x,\\ \> \> // 0 if no roots at x,\\ \> \> // 1 otherwise\\ \> \tt int plot( BigFloat eps=0.1, BigFloat xmin=-1.0,\\ \> \> \> BigFloat ymin=-1.0, BigFloat xmax=1.0, BigFloat ymax=1.0, int fileNo=1);\\ \> \> // Gives the points on the curve at resolution "eps". Currently,\\ \> \> // eps is viewed as delta-x step size.\\ \> \> // The display is done in the rectangle [xmin, ymin, xmax, ymax].\\ \> \> // The output is written into a file in the format specified\\ \> \> // by our drawcurve function (see COREPATH/ext/graphics).\\ \> \> // Heuristic: the open polygonal lines end when number of roots\\ \> \> // changes. }\end{progb} %% END core++-1.7/doc/appendix_b.tex0100644000175000001440000000555110142212776015401 0ustar joachimusers\newpage \section{APPENDIX: Sample Program} \label{sec-example-dt} \label{example} The following is a simple program from O'Rourke's book to compute the Delaunay triangulation for $n$ points. The program tests all triples of points to see if their interior is empty of other points, and outputs the number of ``empty'' triples. In our adaptation of O'Rourke's program below, we generate input points that are (exactly) co-circular. This highly degenerate set of input points is expected to cause problems at Level 1 accuracy. {\scriptsize \begin{verbatim} ---------------------------------------------------------------------- #define CORE_LEVEL 3 // Change "3" to "1" if you want Level 1 accuracy #include "CORE/CORE.h" main() { // Adapted from O'Rourke's Book double x[1000],y[1000],z[1000];/* input points x y,z=x^2+y^2 */ int n; /* number of input points */ double xn, yn, zn; /* outward vector normal to (i,j,k) */ int flag; /* true if m above (i,j,k) */ int F = 0; /* # of lower faces */ // define the rotation angle to generate points double sintheta = 5; sintheta /= 13; double costheta = 12; costheta /= 13; printf("Please input the number of points on the circle: "); scanf("%d", &n); x[0] = 65; y[0] = 0; z[0] = x[0] * x[0] + y[0] * y[0]; for (int i = 1; i < n; i++ ) { x[i] = x[i-1]*costheta - y[i-1]*sintheta; // compute x-coordinate y[i] = x[i-1]*sintheta + y[i-1]*costheta; // compute y-coordinate z[i] = x[i] * x[i] + y[i] * y[i]; // compute z-coordinate } for (int i = 0; i < n - 2; i++ ) for (int j = i + 1; j < n; j++ ) for (int k = i + 1; k < n; k++ ) if ( j != k ) { // For each triple (i,j,k), compute normal to triangle (i,j,k). xn = (y[j]-y[i])*(z[k]-z[i]) - (y[k]-y[i])*(z[j]-z[i]); yn = (x[k]-x[i])*(z[j]-z[i]) - (x[j]-x[i])*(z[k]-z[i]); zn = (x[j]-x[i])*(y[k]-y[i]) - (x[k]-x[i])*(y[j]-y[i]); if ( flag = (zn < 0) ) // Only examine faces on bottom of paraboloid for (m = 0; m < n; m++) /* For each other point m, check if m is above (i,j,k). */ flag = flag && ((x[m]-x[i])*xn + (y[m]-y[i])*yn + (z[m]-z[i])*zn <= 0); if (flag) { printf("lower face indices: %d, %d, %d\n", i, j, k); F++; } } printf("A total of %d lower faces found.\n", F); } ---------------------------------------------------------------------- \end{verbatim} }%\small You can compile this program at Levels 3 or Level 1. At Level 3 accuracy, our program will correctly detects all ${n \choose 3}$ triples; at Level 1 accuracy, it is expected to miss many empty triples. For example, when $n=5$, Level 3 gives all the 10 (= ${5 \choose 3}$) triangles, while Level 1 produces only 3. %end core++-1.7/doc/appendix_c.tex0100644000175000001440000000414310142212776015376 0ustar joachimusers% file: appendix_b.tex % CORE Library % $Id: appendix_c.tex,v 1.1 2004/11/03 17:31:42 exact Exp $ \newpage \section{APPENDIX: Brief History} \begin{description} \item{Version 1.1} (Dec 1998) The initial implementation by Karamcheti, Li, Pechtchanski and Yap \cite{klpy:core:98} was based on the \rexpr\ package, designed by Dub\'e and Yap (circa 1993) and rewritten by Ouchi \cite{ouchi:thesis}. Details about the underlying algorithms (especially in \BF) and their error analysis may be found in the Ouchi's thesis \cite{ouchi:thesis}. \item{Version 1.2} (Sep 1999) Incorporates the BFMS root bound and other techniques to give significant speedup to the system. \item{Version 1.3} (Sep 2000) Two improvements (new root bounds and faster big number packages based on \lidia/\cln) gave significant general speedup. More examples, including a hypergeometric function package and a randomized geometric theorem prover. \item{Version 1.4} (Sep 2001) Introduced a floating point filter based on the BFS filter, incremental square root computation, improved precision-sensitive evaluation algorithms, better numerical I/O support. Our big integer and big rational packages are now based on \gmp, away from \lidia/\cln. \item{Version 1.5} (Aug 2002) Improvements in speed from better root bounds (k-ary bounds), CGAL compatibility changes, file I/O for large mathematical constants (BigInt, BigFloat, BigRat), improved hypergeometric package. \item{Version 1.6} (June 2003) The introduction of real algebraic numbers (a first among such systems). CORE is now issued under the the Q PUBLIC LICENSE (QPL), concurrent with its being distributed with CGAL under commercial licenses by Geometry Factory, the CGAL commercial spin-off. Incorporated Polynomial and Sturm classes into Core Library. \item{Version 1.7} (Aug 2004) Introduced algebraic curves and bivariate polynomials. An interactive version of Core Library called "InCore" is available. Beginning basic graphic capability for display of curves. Restructuring of number classes (Expr, BigFloat, etc) to have common reference counting and rep facilities. \end{description} core++-1.7/doc/bigNumFormat.txt0100644000175000001440000002306407523565514015712 0ustar joachimusersProposal for A BigNumber File Format ==================================== -- Chee Yap (yap@cs.nyu.edu) (Aug 1, 2001) Motivation ========== We need the ability to store bignumbers in files, and functions to read such files. The format should support various bases (decimal, binary and hex). This capability is vital for fast elementary function computations that often need special constants to very high precision. We want to store these in precomputed form in files. Examples of constants we will need: e, Pi, sqrt(Pi), 1/sqrt(Pi), sqrt(2), etc., We want this in hex since this avoids the \Omega(n\log^2 n) time to convert between binary and decimal representations. The following design aims at human readability -- hence we only define a text-based (ascii) version. The speed advantage of a byte-based (binary) version is not in our intended applications. If file size is an issue, it is usually sufficient to run our text file through a standard compression program such as gzip. A text-based version allows a human (using any text editor) to create sample files, or to verify and modify output files produced by a program. Also important is the ability for self-documentation, through the comments and white-space management. BigNum File Format Version 1.0 ======+++++++================= (0) A data file in this format will have the file extension ".big" or ".bign" (for "big number format") (1) The file is a line-based ascii file In the present version, we assume that each file contains a sequence of big numbers. (2) An input file is regarded as a sequence of "physical lines" which are terminated by (or ). (3) The comment character is '#'. The rest of a physical line is ignored after '#' (4) One or more physical lines are merged into "logical lines" If the last character before the or is '\' (continuation character), then the next physical line is considered a continuation of the current "logical line". The continuation character is discarded. (5) White space characters are or characters. Note that and are not white space characters. There are two distinct ways to treat white spaces in a logical line: (i) Space-reduced line: Replace consecutive white space characters by a single character. (ii) Non-white line: Ignore (i.e., delete) all white spaces. N.B. Based on (4) and (5), we can provide three useful file reading functions: read_logical_line(), read_reduced_line(), read_nonwhite_line(). (6) The following bases are supported: (i) Base 10 (digits are 0-9) (ii) Base 16 (digits are 0-9, A-F (or a-f)) (iii) Base 2 (digits are 0,1) (7) The concept of a "base number" is basically an unsigned natural number to any of the supported bases. More precisely: = [] where [...] indicates an optional element (this convention is used throughout this document) is '0b' or '0B' (for base 2), '0' (for base 8), and '0x' or '0X' (for base 16). When the is omitted, the base is 10. is a sequence of at least one digit to the appropriate base, interspersed with white spaces (which are ignored). We define the of the to be the number of digits in (thus, is not counted). N.B. As will be seen below, a is typically represented by a single nonwhite line in the input file. Thus, we use white spaces to help visualization and debugging in that is large. (8) We define the following number formats: Integer, Float, NFloat, Rational These formats represent the corresponding types of mathematical real numbers (called its "value"). (9) An integer is represented by two space-reduced lines as follows: Integer [] [] where and are both base numbers "Integer" is a key word, is an optional sign ('+' or '-'). If omitted, assume '+' sign. the second space-reduced line is treated as a nonwhite line NOTE: is optional because it is defaulted to the actual number of digits in . It could be less than the number of digits in , in which case no reader will read the extra digits. But if it is more, it is automatically set to the actual number of digits. Thus is a helpful hint to readers that may need to preallocate space for reading in the integer. E.g. Integer 12345 67890 12345 # space in the second logical line is ignored Integer 6 # space before the length of 6 is required -0X 369 BDF Integer 12 +0b 1010 1010\ 1010 1111 0011 (10) A float is represented by three space-reduced lines as follows Float () [] [] [] where , , and are all base numbers is the base B of the floating point representation, is the optional length of , again represented in decimal notation. line 2 is a nonwhite line and represents the exponent E line 3 is a nonwhite line and represents the mantissa M So the value of the Float is (M * B**E). NOTES: The value is again optional, but the parenthesis '(', ')' in the first logical line is required. Note that, as a base number, M has a base that is equal to 2, 16 or 10. For efficiency, we recommend that B be a power of this base. E.g., if M is in Hex, it is best to have B to be a power of 16. If this is not possible (as in Core Library numbers), then B should be a power of 2. E.g. Float(2) 6 - 0x A # exponent +0x 369 BDF # mantissa E.g. # Value of this float is -10**(-5) * 123 = 0.00123. Float(10) -0101 123 E.g. Float(0b 10000 00000 0000) # base is 2**(14) -2 0b 1111 # value is 15*2**(-14*2 - 3) = 15*2**(-31) (11) We also have the "Normalized Float" variation which uses the key word "Normalized Float" (or "NFloat") instead of "Float". This format is useful for well-known mathematical constants and or physical constants because the exponent of such a constant tells us its magnitude, independent of the choice of mantissa. The format is exactly as for Floats, except that the value of a normalized float is defined differently. For mantissa M, exponent E, and base B, is equal to <> * B**E, where <> is the normalized value of an integer M. In the positional representation, <> just amounts to placing the radical point between the first and second digits of M. E.g., if M = 1234, then <> = 1.234. If M = 0xABC123, then <> = 0x A.BC123. Alternatively, <> = M * B**(- len(M) + 1) where len(M) is the number of digits of M in its base representation. Thus, len(M) = 1 + floor(log_b(M)) where b is tbe base of M. E.g. # Value of Pi Normalized Float(10) 0 # exponent 314159 # mantissa (12) A rational is represented by 3 space-reduced lines as follows: Rational [ []] [] where "Rational" is a key word, , , and are base numbers. The value of this rational number is [] /. The base of and are strongly recommended to be identical. This facilitates our goal (below) of only reading in initial parts of a number. The optional and are lengths of the numerator and denominator. We strongly recommend providing these lengths when the numbers involved are very big. This allows our functions to compute high order digits of the rational number without having to read the entire file. E.g. Rational 3 5 -X123 X12345 (13) Input from files. We want to read any of the above numbers into our Real numbers: -- Natural and Integer becomes our BigInt -- Float becomes our BigFloat -- Rational becomes our BigFloat (14) It is important to be able to read ONLY the initial segment of the input digits. So, this means for any of our big number formats, we can ask to read to at most "precision"

where

is a natural number. -- For Natural and Integers, this means we read min(

,) digits of the , where is the length of the base number. -- For Floats, this means we only read the first min(

,) digits of the mantissa where is the length of the mantissa. -- For Rational, this is trickier. Assume (as recommended) that the base of the numerator and denominator are the same, and equal to b. Suppose we want the relative precision to be O(b^{-

}). Let the number of digits in N and D be ln and ld, respectively. Let N' and D' be the integer obtained from the first

digits of N and D, respectively. Then we compute the value N'/D' * b^{ln - ld}. REMARKS: (1) Zilin has recently implemented the integer part of the above proposal. This has been incorporated into the Core Library Version 1.4. (2) Most systems seem to implement a quadratic time conversion. Recently, with Valentina Marotta, we designed and implemented an O(n\log^2 n) time decimal to binary conversion routine. That should be incorporated into Core Library soon. (3) Float Format implementation: we currently only implement the case where = 2^{14}, and the is restricted to a machine Long. Both restrictions are motivated by our Core Library BigFloat number class, where the base is 2^{14} and exponent must be machine Long. (4) We should probably overload "<<" (by setting some stream manipulation parameters) to achieve the above file I/O functionality. ======================= END ============================================ core++-1.7/doc/doxygen.cfg0100644000175000001440000001721007667722401014710 0ustar joachimusers# Doxyfile 1.3-rc1 #--------------------------------------------------------------------------- # General configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "Core Library" PROJECT_NUMBER = 1.6 OUTPUT_DIRECTORY = . OUTPUT_LANGUAGE = English EXTRACT_ALL = NO EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO EXTRACT_LOCAL_CLASSES = YES HIDE_UNDOC_MEMBERS = YES HIDE_UNDOC_CLASSES = YES HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES SHORT_NAMES = NO HIDE_SCOPE_NAMES = NO VERBATIM_HEADERS = YES SHOW_INCLUDE_FILES = YES JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES INLINE_INFO = YES SORT_MEMBER_DOCS = NO DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ALIASES = ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../inc/BigInt.h \ ../inc/BigRat.h \ ../inc/BigFloat.h \ ../inc/Real.h \ ../inc/Expr.h FILE_PATTERNS = RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = HTML_FOOTER = HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = YES TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = YES LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = YES PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_SCHEMA = XML_DTD = #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::addtions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = YES HIDE_UNDOC_RELATIONS = YES HAVE_DOT = NO CLASS_GRAPH = YES COLLABORATION_GRAPH = YES TEMPLATE_RELATIONS = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::addtions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO CGI_NAME = search.cgi CGI_URL = DOC_URL = DOC_ABSPATH = BIN_ABSPATH = /usr/local/bin/ EXT_DOC_PATHS = core++-1.7/doc/history.tex0100644000175000001440000005200410145421127014757 0ustar joachimusers% file: history.tex % CORE Library % $Id: history.tex,v 1.8 2004/11/13 15:03:51 exact Exp $ \documentclass[12pt]{article} \usepackage{amssymb} \input{macro} \draftdimensions \title{What Was New In Core Library} \begin{document} \maketitle \section*{} This is an accumulated list of the ``What is New'' information, released with each version of the Core Library. \section{Version 1.1, Dec 1998} The initial implementation by Karamcheti, Li, Pechtchanski and Yap \cite{klpy:core:98} was based on the \rexpr\ package, designed by Dub\'e and Yap (circa 1993) and rewritten by Ouchi \cite{ouchi:thesis}. Details about the underlying algorithms (especially in \BF) and their error analysis may be found in the Ouchi's thesis \cite{ouchi:thesis}. \section{Version 1.2, Sep 1999} Incorporates the BFMS root bound and other techniques to give significant speedup to the system. \begin{itemize} \item{New root bound implemented.} This is based on the paper of Burnikel et al \cite{mehlhorn-etal:sep-bd:00}. \item{Dynamic error bound checking.} The system utilizes the error bound of the computed approximate value to decide whether or not to re-evaluate a node in an expression. This is faster than just looking at the precision bound at that node because the precision bound is only a lower bound on the computed precision. \item{Progressive and non-progressive evaluation.} \item{Expression constructor from string.} \item{Exception handling.} We introduce a simple facility for \cpp\ exception handling. See the file \includedir/{\tt CoreExceptions.h}. \end{itemize} \section{Version 1.3, Sep 2000} Two improvements (new root bounds and faster big number packages based on \lidia/\cln) gave significant general speedup. More examples, including a hypergeometric function package and a randomized geometric theorem prover. \begin{itemize} \item Implemented new root bounds as described in \cite{li-yap:constructiveBound:00}. This gave significant speedups for the important case of expressions with division nodes. \item Printout of numbers is improved so that all but the last digit of any printout is correct. The last digit can be off by $\pm 1$. \item Input of numbers (string constructors and stream input) is improved to allow both exact rational inputs as well as approximations. Uses the global variable {\tt defInputDgt}. \item A much faster big number kernel (taken from \lidia/\cln) is incorporated. We can more easily incorporate other big number kernels (such as \gnu's \gmp), especially those supported by \lidia. Unfortunately, we have to drop support for those compilers not compatible with \lidia. \item Application program: Contribution of a hypergeometric package from Maria Elefteriou and Jose Moreira from IBM Watson Center. You can compute any of the elementary functions (log, exp, sine, etc) to any desired absolute precision. This can be used to compute constants such as $\pi$ or $e$ to any desired precision. \item Application program: improved geometric theorem prover \cite{tyl:zero-test:00} based on randomized testing of radical expressions. \item Sample timing: it took 55.0 seconds under \core\ 1.3 to run all the test programs in the distribution. Under \core\ 1.2.2, the time is 1040.38 seconds. This test was performed on a Sun UltraSPARC-IIi (440 MHz, 512 MB), and corresponds to the ``make test'' command in the {\tt \$(CORE\_PATH)} directory. \end{itemize} \section{Version 1.4, Sep 2001} Our big integer and big rational packages are now based on \gmp, away from \lidia/\cln. Introduced a floating point filter facility, incremental square root computation, improved precision-sensitive evaluation algorithms. \begin{itemize} \item File I/O for big numbers. In particular the storage of Hex representation in a files allows large constants to be input or output in linear time. \item Incremental square-roots now implemented. There can be significant speedups. \item BFS filter option \item Introduced the "escape precision" mechanism, and a recommended {\tt CORE\_init()} method. \item Improved conversion from BigFloat to machine double: overflows, etc, are indicated. \item Improved geometry extension library \item Improved numerical I/O. I/O of big rational number format, BigInt constructor from string, support for scientific as well as positional notation. \item Bug fixes: Steve Robbins discovered that \texttt{defAbsPrec} is not always properly initialized. The solution is to make \texttt{CORE\_posInfty}, \texttt{CORE\_negInfty} and \texttt{CORE\_NaNLong} global variables, not static member variables. \end{itemize} \section{Version 1.5, Aug 2002} Improvements in speed from better root bounds (k-ary bounds), CGAL compatibility changes, file I/O for large mathematical constants (BigInt, BigFloat, BigRat), improved hypergeometric package. \begin{itemize} \item Namespace Issues: Introduced namespace \texttt{CORE}. \item Compatibility with \cgal\ Library: Introduced \texttt{inc/CGAL\_Expr.h} for easy adaptation of \cgal\ programs to use \corelib. Sample programs are found under in the cgal directory under \examplesdir. \item Better root bounds (including the new BFMSS bound and a new 2-ary version of BFMSS). Various minor improvements. Overall speedup can be greatly improved especially when rootbound limits are reached. Some timings for various test programs found under \examplesdir (just based on the new BFMSS bound) \begin{verbatim} (1) progs/pi, executing "./pi 10000 0 0" Core 1.5: 0.79 sec Core 1.4: 2.37 sec Core 1.3: 2.93 sec (2) progs/compare, running "./compare 100 n" (for n=2 and n=5) Core 1.5: n=2, 0.01 sec; n=5, 0.03 sec Core 1.4: n=2, 22.58 sec; n=5, 56.61 sec Core 1.3: n=2, 36.12 sec; n=5, 90.59 sec (3) progs/delaunay, executing "make test" Core 1.5: 0.43 sec Core 1.4: 0.43 sec Core 1.3: 0.49 sec (4) progs/nestedSqrt, executing "./nestedSqrt 8" Core 1.5: 0.62 sec Core 1.4: 0.82 sec Core 1.3: 447.29 sec \end{verbatim} These tests were done on a Solaris machine, SunBlade 1000 (2x Ultrasparc III 750MHz, 8MB Cache, 2GB Memory) \item Improvements of the hypergeometric package (automatic error analysis, argument reduction, partial parameter preprocessing, improved $\log(x)$ series) In particular, the elementary functions found in \texttt{math.h} are reasonably supported: $\log()$, $\exp()$, $\sin()$, $\cos()$, $\arcsin()$, $\arccos()$, $\tan()$, $\arctan()$, $\textrm{erf}()$. \item Some development of other Levels of Accuracy: (a) Level 4 can now be explicitly invoked. (b) Level 2 programs can now compile without error: to achieve this, we have to merge the API for Expr and Real classes. \item New Polynomial Class (univariate case) may be found in \examplesdir, under \texttt{poly}, with applications to Sturm Sequences and Newton Iteration. \item Reorganization of \real\ class: new abstract base class \realrep\ (previously no such class). \real\ class is no longer virtual (no longer points to itself or have reference counter, but points to \realrep). Streamlined code for \texttt{Real.cpp} by introducing templates. The classes \texttt{AddRep} and \texttt{SubRep} are now merged by templates, to improve maintenability. \item Implemented the ability to read/write arbitrarily large \BF\ and \Rat\ constants from files (Version 1.4 only supported file I/O for \Int\ constants) \item Improved algorithm for computing degree bound (degreeBound(), count(), clearFlag()), avoiding exponential worst case behavior \item Removed implementation dependent files: \texttt{gmp-impl.h}, \texttt{longlong.h}, \texttt{gmp-params.h}. Also removed obsolete files: \texttt{ExprUtil.h,cpp}, \texttt{Filer.cpp}, \texttt{CoreIOmanip.h}, \texttt{CoreException.h}. \item Updated Core Library Tutorial. \item Bug fixes: (a) Computing of uMSB and lMSB was inaccurate (b) Root bound parameters for some constants was wrong (e.g., for Expr(1.0)). (c) BigInt::ceilLg(x) was wrong for $x<0$. (d) Thanks to Martin Held for exposing a bug in the installation script (script may compile gmp library using a different compiler than the one used to compile Core Library, with the result that linking may fail). \end{itemize} \section{Version 1.6, Jun 2003} The introduction of real algebraic numbers. CORE is now issued under the the Q PUBLIC LICENSE (QPL), concurrently with its being distributed with CGAL. Incorporated Polynomial and Sturm classes into Core Library. \begin{itemize} \item Two new classes have been incorporated into CORE: Polynomial class and Sturm class. Both are templated classes. The coefficients of a polynomial have a parameterized number type NT. Currently NT is restricted to \Int, \int, \lng. \item An associated Sturm class has methods for root isolation and Newton iteration. \item Real algebraic numbers is now available as leaves in \expr. These can be specified as a polynomial together with a root root indicator. The special case of m-th root of n is implemented as radical(n,m). \item Further improvement in k-ary BFMSS Root Bound (we now extract powers of 5 (as well as powers of 2). Thus decimal inputs can be exploited. \item By setting a global \texttt{rationalReduceFlag = true}, you can automatically reduce rational \expr\ to a single node. This allows some previously intractable computations to succeed (see pentagon example under progs directory). By default, this flag is false. \item New wrapper classes for \Int\ and \Rat\ to directly exploit \gmp. Previously it was based on \lidia's wrapper classes (even though the underlying number classes were already based on \gmp). This gives about 11.8\% speedup. \item Much faster algorithm for refining isolating interval. This comes from two sources. First, instead of only bisection, we exploit Newton iteration when we can. Second, we Replace \expr\ intervals by \BF\ intervals. \item Introduced the \texttt{defInitialProgressivePrec} variable, to control the initial precision for progressive evaluation: originally, this initial value was 1. Here are the speed from "make time" for variouse values of defInitialProgressivePrec (based on Core v.1.6 Test Programs): \begin{verbatim} defInitialProgressivePrec User time (seconds) 1 1:11.5 32 1:09.4 64 1:08.7 128 1:08.3 256 1:09.3 \end{verbatim} \item Implemented \texttt{toString} and \texttt{fromString} methods for \Int, \Rat, \BF\, \real, \expr. \item In \BF, we now have methods for \texttt{makeExact()}, \texttt{makeInexact()} and \texttt{div2()} for error-free division by 2. These are important for controlling I/O precision and Newton iteration. \item Implemented automatic checks for invalid \expr\ at construction time. E.g., for division, check for divide-by-zero, and for sqrt, check for negative argument. \item Various bug fixes: in particular, fixed a bug arising from negative root bit-bound (this arises from the new k-ary root bounds, since previous root bound parameters could never generate negative root bit-bounds) \item Miscellanenous changes: \begin{itemize} \item Core Numerical API Level is now called \texttt{CORE\_LEVEL}. \item Restructuring of include files: we now prefer to use \texttt{\#include "CORE/xxx.h"} instead of \texttt{\#include "xxx.h"} to avoid name conflict. For backwards compatibility, you can still use \texttt{\#include "CORE.h"}. \item Reorganization of header files (e.g., \texttt{Expr.h} is split into \texttt{Expr.h} and \texttt{ExprRep.h}). \item New functions: \texttt{Expr::operator \%(x,y)}, \texttt{BigFloat::pow(x,n)} \item New functions: \texttt{Expr::doubleInterval()} returns an interval containing exact value \item New \texttt{escapePrecisionWarning} boolean flag (useful for testing escape precision) \item New \texttt{gcd(long, long)} function \end{itemize} \end{itemize} \section{Version 1.7, Aug 2004} Introduced algebraic curves and bivariate polynomials. An interactive version of Core Library called "InCore" is available. Beginning some graphic capability for display of curves. Restructuring of number classes (Expr, BigFloat, etc) to have common reference counting and rep facilities. \begin{itemize} \item Introduced plane algebraic curves and bi-variate polynomials The main capability is to plot curves and do basic intersection tests. See \examplesdir\texttt{/curves}. \item Introduced "InCore", an interactive version of Core Library based on Python (this has to be downloaded separately) \item Enhancement of the univariate polynomial and real algebraic number facilities. New methods such as polynomial GCD, resultant, square free part, primitive part, etc. \begin{itemize} \item Polynomials now accept string inputs. E.g., \texttt{Polynomial p = "x\^{}3 - 2x\^{}2 + 17x - 4";} \item \texttt{Polynomial} can now work with all choices of \texttt{NT = BigInt, int, BigRat, Expr, BigFloat} But not all functionality are fully available for \texttt{NT=BigFloat} and \texttt{NT=Expr} (e.g., rootbounds). \item \texttt{Sturm} can now work with \texttt{NT=BigFloat} \item To support the above, various new methods are added to the \Int, \Rat, \BF\ and \real\ classes (isDivisible, gcd, etc). \end{itemize} \item Compatibility with gmp 4.1.4, and gcc 3.3 \item Introduced a common Reference Counting facility for all Core number types, encoded in the two templated classes: \texttt{RCRepImpl} to create Reps of the class N. The basic functions provided by this class is reference counting, and gives us the "Reps" of each number type (e.g., \texttt{BigIntRep} is derived from \texttt{RCRepImpl}). The other class is \texttt{RCImpl} which is the actual number type (e.g., BigInt is derived from \texttt{RCImpl). As a result former Rep Files such as RealRep.h can be removed, and the code size is reduced. Also, \Int\ and \Rat\ now have reference counting in their Rep classes (none before). \item Speedup from reorganization of Core Library number classes. We wrote wrappers around gmp's C function library. We also tested the possibility of using gmp's C++ classes (since gmp 4.1) which are template based. CORE's interface are not fully compatible with gmp since since we have exact algebraic representation and precision bounds. We compared three versions of Core Library: \\ (A) -- old code: version 1.6 \\ (B) -- new code: some optimization \\ (C) -- new code: optimzation + using gmp C++ class \\Here are the running times on two machines: \begin{verbatim} Test Pentium III (1G Memory) Jinai (Solaris) ======================================================= > A 64.12s 1m:07s > B 56.52s 52.6s > C 50.71s 50.4s > Speedup 20% 25% \end{verbatim} Although the use of gmp C++ classes (which use expression template to eliminate temporary variables) is faster, it is incompatiable with visual C++ (not sure about Sun CC). So we added as an option for compiling the Core Library: to turn on gmp C++ classes, uncomment macro CORE\_USE\_GMPXX in CoreImpl.h and recompile Core Library; there is no need to compile GMP C++ library since all necessory code are in Core Library already. \item Simple openGL display for curves: see \extdir\texttt{/graphics/} \item Various improvements by replacing Expr with BigFloats whenever possible: in Polynomial and Sturm operations, in progs/pi/brent.cpp, etc. \item The compiled Core Library is changed from "libcore" to "libcore++", and "libcorex" to "libcorex++". This mitigates any possible name conflicts as a Debian package for Core Library (see below). \item Rewrote the memory pool class to avoid strict aliasing problems under gcc's -O2 optimization. Now, we can compile Core Library under -O2 optimization. \item Bug fixes \begin{itemize} \item \texttt{rootOf(P,i)} now works properly when P have multiple roots (reason: we assumed the endpoints of isolating intervals have distinct signs) \item Fixed bugs in Newton and Sturm methods \item \texttt{Expr::doubleValue()} is now correctly implemented. E.g., suppose you compute double s = sqrt(n); double ss = sqrt(Expr(n)).doubleValue(); Then we guarantee that |s-ss| has relative error at most \texttt{4*CORE\_EPS = 4.44089e-16} (\texttt{CORE\_EPS} is machine epsilon). This factor of 4 is essentially the best possible (see \\ \examplesdir\texttt{/testIO/testSqrt.cpp}). \item fixed \texttt{Expr::degreeBound()}. Previously it always returned 1 at leaves. But with algebraic numbers, it must return \texttt{d\_e()}. This has dramatic improvement in speed. Ron Wein's program for intersecting two ellipses used to take overnight, but now take 0.4 sec. \item Fixed an output bug that has been around since Core 1.4. BigFloat can print an output whose exponent is off by 1. E.g., \texttt{sqrt(100) = 9.999e0} but \texttt{BigFloatRep::round(...)}, an internal function, returns the string "1.0000e0" instead of "1.0000e1". Thanks to Blazi for noticing this. \end{itemize} \item Miscellaneous: \begin{itemize} \item Thanks to Joachim Reichel for creating a Debian package for Core Library. \item Previously, the library version numbers have two numbers (e.g., "1" and "6" in Version 1.6). Between official releases, we call it Version 1.6x. Thus "Version 1.6x" refers to any number of unofficial releases between 1.6 and 1.7. We now have a third number. E.g., this official release is Wersion 1.7.0. \item \texttt{CORE::core\_error()} is enhanced to write its results into a file \texttt{Core\_Diagnostics} but also writes errors to std::cerr (as before). \item We introduce new versions of the \texttt{BigFloat::makeExact()} , namely, \texttt{makeCeilExact()} and \texttt{makeFloorExact()}. \item Upgraded Core Library to be compatible with the latest gmp 4.1.3 (released 4/28/2004). \item Use the program \texttt{astyle} to beautify all our code, so the files are more consistent and readable. Tab are converted to spaces, using k\&r style, etc: \begin{equation} \texttt{./astyle --style=kr -s2 filename} \end{equation} \item More use of BigFloats to replace Expr, when possible. E.g. CauchyLowerBound() and CauchyUpperBound() rewritten using BigFloat instead of Expr (30\% improvement here). \item In CORE\_PATH, you can type "make options" to see all your currently selected CORE ENVIRONMENT VARIABLES. If you type "make alloptions", this will also show all possible alternatives that you could have chosen. \item Simple timing facility (see src/Timer.h) \end{itemize} \item Acknowledgements: Thanks for feedback and bug reports from Janos Blazi, Ovidiu Daescu, Arno Eigenwillig, Andreas Fabri, Efi Fogel, Michael Hemmer, Athanasios Kakargias, Norbert Mueller, Joachim Reichel, Daniel Russell, Raphael Straub, Ron Wein. \end{itemize} \bibliographystyle{abbrv} \bibliography{tutorial} \end{document} core++-1.7/doc/macro.tex0100644000175000001440000000771310141772600014367 0ustar joachimusers% Macros for CORE Documents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % UNDATE THESE MACROS FOR EACH RELEASE! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Current Core Library Version \newcommand{\versionNo}{1.7} % Current Release Date \newcommand{\releaseDate}{August 15, 2004} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\ignore}[1]{} \newcommand{\dt}[1]{{\em #1}} \newcommand{\RR}{{\mathbb R}} \newcommand{\corelib}{Core Library} \newcommand{\core}{\mbox{\tt CORE}} \newcommand{\corex}{\mbox{\tt COREX}} \newcommand{\lidia}{\mbox{\tt LiDIA}} \newcommand{\cgal}{\mbox{\tt CGAL}} \newcommand{\cln}{\mbox{\tt CLN}} \newcommand{\rexpr}{\mbox{\tt Real/Expr}} \newcommand{\real}{\mbox{\tt Real}} \newcommand{\realrep}{\mbox{\tt RealRep}} \newcommand{\expr}{\mbox{\tt Expr}} \newcommand{\exprep}{\mbox{\tt ExprRep}} \newcommand{\rep}{\mbox{\tt rep}} \renewcommand{\int}{\mbox{\tt int}} \newcommand{\lng}{\mbox{\tt long}} \newcommand{\ulong}{\mbox{\tt unsigned long}} \newcommand{\extlong}{\mbox{\tt extLong}} \newcommand{\float}{\mbox{\tt float}} \newcommand{\double}{\mbox{\tt double}} \newcommand{\str}{\mbox{\tt string}} \newcommand{\Int}{\mbox{\tt BigInt}} \newcommand{\Rat}{\mbox{\tt BigRat}} \newcommand{\BF}{\mbox{\tt BigFloat}} \newcommand{\Poly}{\mbox{\tt Polynomial}} \newcommand{\Sturm}{\mbox{\tt Sturm}} \newcommand{\BiPoly}{\mbox{\tt BiPoly}} \newcommand{\Curve}{\mbox{\tt Curve}} % DO WE REALLY WANT "Long" below? \newcommand{\coreInfty}{\mbox{\tt CORE\_INFTY}} \newcommand{\posInfty}{\mbox{\tt extLong::CORE\_posInfty}} \newcommand{\negInfty}{\mbox{\tt extLong::CORE\_negInfty}} \newcommand{\NaN}{\mbox{\tt extLong::CORE\_NaN}} \newcommand{\defrel}{\mbox{\tt defRelPrec}} \newcommand{\defabs}{\mbox{\tt defAbsPrec}} \newcommand{\defprt}{\mbox{\tt defPrtDgt}} \newcommand{\definput}{\mbox{\tt defInputDigits}} \newcommand{\defBFinput}{\mbox{\tt defBigFloatInputDigits}} \newcommand{\defOutputDig}{\mbox{\tt defOutputDigits}} \newcommand{\cpp}{\mbox{\tt C++}} \newcommand{\candcpp}{\mbox{\tt C/C++}} \newcommand{\gnu}{\mbox{\tt GNU}} \newcommand{\gmp}{\mbox{\tt GMP}} \newcommand{\gpp}{\mbox{\tt g++}} \newcommand{\gppandgcc}{\mbox{\tt g++/gcc}} \newcommand{\installpath}{\mbox{\tt \$\{INSTALL\_PATH\}}} % \newcommand{\corepath}{\mbox{\tt \$\{INSTALL\_PATH\}/core\_vX.Y/}} \newcommand{\corepath}{\mbox{\tt \$\{CORE\_PATH\}}} \newcommand{\coredistfile}{\mbox{\tt core\_vX.Y.Z.tgz}} \newcommand{\docdir}{\mbox{\tt \$\{CORE\_PATH\}/doc}} \newcommand{\extdir}{\mbox{\tt \$\{CORE\_PATH\}/ext}} \newcommand{\examplesdir}{\mbox{\tt \$\{CORE\_PATH\}/progs}} \newcommand{\progsdir}{\mbox{\tt \$\{CORE\_PATH\}/progs}} \newcommand{\includedir}{\mbox{\tt \$\{CORE\_PATH\}/inc}} \newcommand{\includegmpdir}{\mbox{\tt \$\{CORE\_PATH\}/gmp/include}} \newcommand{\libdir}{\mbox{\tt \$\{CORE\_PATH\}/lib}} \newcommand{\gmplibdir}{\mbox{\tt \$\{CORE\_PATH\}/gmp/lib}} \newcommand{\win}{\mbox{\tt \$\{CORE\_PATH\}/win32}} % no longer used: % \newcommand{\lidiadir}{\mbox{\tt \$\{CORE\_PATH\}/lidia}} \newcommand{\srcdir}{\mbox{\tt \$\{CORE\_PATH\}/src}} \newcommand{\tempdir}{\mbox{\tt \$\{CORE\_PATH\}/tmp}} \newcommand{\gmplink}{\mbox{\tt \$\{CORE\_PATH\}/gmp}} \newcommand{\val}{\mbox{\rm Val}} \newcommand{\err}{\mbox{\rm Err}} \newcommand{\preci}{\mbox{\rm Prec}} \newcommand{\appr}{\mbox{\rm Approx}} \newenvironment{prog}{\begin{tabbing} xx\=xxxx\=xxxx\=xxxx\=xxxx\=xxxx\=xxxx\=xxxx\=\kill \\} {\end{tabbing}} \newenvironment{progb}[1]{ \vspace{+\abovedisplayskip} \fbox{ \begin{minipage}{.9\textwidth} \vspace{-\abovedisplayskip} \begin{prog}#1\end{prog} \vspace{-\abovedisplayskip} \end{minipage} } \vspace{+\abovedisplayskip} } \newcommand{\draftdimensions}{ \setlength{\oddsidemargin}{-1cm} \setlength{\evensidemargin}{-1cm} % \setlength{\textwidth}{1.2\textwidth} \setlength{\textwidth}{7in} % \setlength{\textheight}{1.2\textheight} \setlength{\textheight}{9in} \setlength{\topmargin}{-5mm} \setlength{\parindent}{0mm} \setlength{\parskip}{5mm} } core++-1.7/doc/stackOverflow.txt0100644000175000001440000000520007455331704016135 0ustar joachimusersStack Overflow Problems ======================= This file gives some hints on addressing this problem on different platforms. Under Unix-like systems, programs may throw a "Segmentation Fault" error. This can be due to stack overflow, especially from recursive function calls or huge data sets. In our demo program "Pi" (see "$(CORE_PATH)/progs/pi"), we compute Pi to any number of desired bits or digits. Here are some test results on when stack overflows will occur on different platforms, using their default stack sizes. platform default size # bits # digits =============================================================== SunOS/Solaris 8172K bytes <=39875 <=12003 (Shared Version) Linux 8172K bytes <=62407 <=18786 Windows 1024K bytes <=10581 <=3185 (Release Version) cygwin 2048K bytes <=3630 <=1092 If we now change their stack size to their maximum, our Pi program can compute more bits. platform stack size # bits # digits =============================================================== SunOS/Solaris unlimited >=100,000 30102 Linux 8172K bytes <=33,219,282 <=10,000,000(?) Windows 32768K bytes <=343077 <=12041 How to change the default stack size on different platforms: In general, under Unix-like platforms, the stack size is controlled by environment variable, not the program itself. So you cannot pass any flags to the compilers, like gcc, to setup stack size. Under Windows platforms, the stack size information is contained in the executable files. It can be set during compilation in Visual C++, but this is not available in gcc. Alternatively, Microsoft provides a program "editbin.exe" which can change the executable files directly. Here are more details: SunOS/Solaris: ============== > limit # shows the current stack size > unlimit # changes the stack size to unlimited > setenv STACKSIZE 32768 # limits the stack size to 32M bytes Linux: ====== > ulimit -a # shows the current stack size > ulimit -s 32768 # sets the stack size to 32M bytes Windows (during compilation): ============================= 1. Select "Project->Setting". 2. Select "Link" page. 3. Select "Category" to "Output". 4. Type your preferred stack size in "Reserve:" field under "Stack allocations". eg, 32768 in decimal or 0x20000 in hexadecimal. Windows (to modify the executable file): ======================================= There are two programs included in Microsoft Visual Studio, "dumpbin.exe" and "editbin.exe". Run "dumpbin /headers executable_file", and you can see the "size of stack reserve" information in "optional header values". Run "editbin /STACK:size" to change the default stack size. core++-1.7/doc/tutorial.bbl0100644000175000001440000001276110106136600015062 0ustar joachimusers\begin{thebibliography}{10} \bibitem{burnikel:exact:thesis} C.~Burnikel. \newblock {\em Exact Computation of {Voronoi} Diagrams and Line Segment Intersections}. \newblock Ph.{D} thesis, Universit{\"a}t des Saarlandes, March 1996. \bibitem{bfms:easy:99} C.~Burnikel, R.~Fleischer, K.~Mehlhorn, and S.~Schirra. \newblock Exact geometric computation made easy. \newblock In {\em Proc. 15th ACM Symp. Comp. Geom.}, pages 341--450, 1999. \bibitem{mehlhorn-etal:sep-bd:00} C.~Burnikel, R.~Fleischer, K.~Mehlhorn, and S.~Schirra. \newblock A strong and easily computable separation bound for arithmetic expressi ons involving radicals. \newblock {\em Algorithmica}, 27:87--99, 2000. \bibitem{bfs:exact-cascaded:01} C.~Burnikel, S.~Funke, and M.~Seel. \newblock Exact geometric computation using cascading. \newblock {\em International J. Comp. Geometry and Applications}, 11(3):245--266, 2001. \newblock Special Issue. \bibitem{bkmnsu:exact:95} C.~Burnikel, J.~K{\"o}nnemann, K.~Mehlhorn, S.~N{\"a}her, S.~Schirra, and C.~Uhrig. \newblock Exact geometric computation in {LEDA}. \newblock In {\em Proc. 11th ACM Symp. Computational Geom.}, pages C18--C19, 1995. \bibitem{fortune-vanwyk:exact} S.~J. Fortune and C.~J. van Wyk. \newblock Efficient exact arithmetic for computational geometry. \newblock In {\em Proc. 9th ACM Symp. on Computational Geom.}, pages 163--172, 1993. \bibitem{fortune-vanwyk:static:96} S.~J. Fortune and C.~J. van Wyk. \newblock Static analysis yields efficient exact integer arithmetic for computational geometry. \newblock {\em ACM Transactions on Graphics}, 15(3):223--248, 1996. \bibitem{klpy:core:98} V.~Karamcheti, C.~Li, I.~Pechtchanski, and C.~Yap. \newblock A core library for robust numeric and geometric computation. \newblock In {\em Proc.~15th ACM Symp.~on Computational Geometry}, pages 351--359, June 1999. \newblock Miami Beach, Florida. \bibitem{kln:delaunay:91} M.~Karasick, D.~Lieber, and L.~R. Nackman. \newblock Efficient {D}elaunay triangulation using rational arithmetic. \newblock {\em ACM Trans. on Graphics}, 10:71--91, 1991. \bibitem{li-pion-yap:progress:04} C.~Li, S.~Pion, and C.~Yap. \newblock Recent progress in exact geometric computation. \newblock {\em Journal of Logic and Algebraic Programming}, 2004. \newblock To appear. Special issue on ``Practical Development of Exact Real Number Computation''. \bibitem{li-yap:constructiveBound:00} C.~Li and C.~Yap. \newblock A new constructive root bound for algebraic expressions. \newblock In {\em Proc.~12th ACM-SIAM Symposium on Discrete Algorithms (SODA)}, pages 496--505. ACM and SIAM, Jan. 2001. \bibitem{orourke:bk} J.~O'Rourke. \newblock {\em Computational Geometry in {C}}. \newblock Cambridge University Press, second edition edition, 1998. \bibitem{ouchi:thesis} K.~Ouchi. \newblock {Real/Expr}: Implementation of an exact computation package. \newblock Master's thesis, New York University, Department of Computer Science, Courant Institute, January 1997. \bibitem{pion-yap:kary:03} S.~Pion and C.~Yap. \newblock Constructive root bound method for $k$-ary rational input numbers. \newblock In {\em 19th ACM Symp. on Comp.Geometry}, pages 256--263, San Diego, California., 2003. \bibitem{schirra:robustness-survey:98} S.~Schirra. \newblock Robustness and precision issues in geometric computation. \newblock Report MPI-I-98-1-004, Max-Planck-Institut f{\"u}r Informatik, Saarbr{\"u}cken, Germany, Jan 1998. \newblock To appear in {\em Handbook on Computational Geometry}, edited by J.R.~Sack and J.~Urrutia. \bibitem{shewchuk:adaptive:96} J.~R. Shewchuk. \newblock Robust adaptive floating-point geometric predicates. \newblock In {\em Proc.~12th ACM Symp.~on Computational Geom.}, pages 141--150. Association for Computing Machinery, May 1996. \bibitem{tyl:zero-test:00} D.~Tulone, C.~Yap, and C.~Li. \newblock Randomized zero testing of radical expressions and elementary geometry theorem proving. \newblock In {\em International Workshop on Automated Deduction in Geometry (ADG'00), Zurich, Switzerland}, Sept. 2000. \newblock Preprint: {\tt ftp://cs.nyu.edu/pub/local/yap/exact/}. \bibitem{yap:brown-cgc:98} C.~Yap. \newblock A new number core for robust numerical and geometric libraries. \newblock In {\em 3rd CGC Workshop on Geometric Computing}, 1998. \newblock Invited Talk. Brown University, Oct 11--12, 1998. Abstracts, {\tt http://www.cs.brown.edu/cgc/cgc98/home.html}. \bibitem{yap:exact} C.~K. Yap. \newblock Towards exact geometric computation. \newblock {\em Computational Geometry: Theory and Applications}, 7:3--23, 1997. \bibitem{yap:algebra-bk} C.~K. Yap. \newblock {\em Fundamental Problems in Algorithmic Algebra}. \newblock Oxford University Press, 2000. \newblock A version is available at URL {\tt ftp:/Preliminary/cs.nyu.edu/pub/local/yap/algebra-bk}. \bibitem{yap:crc} C.~K. Yap. \newblock Robust geometric computation. \newblock In J.~E. Goodman and J.~O'Rourke, editors, {\em Handbook of Discrete and Computational Geometry}, chapter~41, pages 927--952. Chapmen \& Hall/CRC, Boca Raton, FL, 2nd edition, 2004. \newblock Expanded from 1997 version. \bibitem{yap-dube:paradigm} C.~K. Yap and T.~Dub\'e. \newblock The exact computation paradigm. \newblock In D.-Z. Du and F.~K. Hwang, editors, {\em Computing in Euclidean Geometry}, volume~1 of {\em Lecture Notes Series on Computing}, pages 452--492. World Scientific, Singapore, 2nd edition, 1995. \end{thebibliography} core++-1.7/doc/tutorial.bib0100644000175000001440000001644510106136600015062 0ustar joachimusers% Bibliography for Core Library Tutorial @book{orourke:bk , author = "Joseph O'Rourke" , title = "Computational Geometry in {C}" , publisher = "Cambridge University Press" , edition = "Second Edition" , comment= "first edition is 1994" , year = 1998 } @techreport{schirra:robustness-survey:98 , author="Stefan Schirra" , title="Robustness and Precision Issues in Geometric Computation" , type ="Report" , number ="MPI-I-98-1-004" , institution="Max-Planck-Institut f{\"u}r Informatik" , address ="Saarbr{\"u}cken, Germany" , note="To appear in {\em Handbook on Computational Geometry}, edited by J.R.~Sack and J.~Urrutia." , month="Jan" , year=1998 } @inproceedings{bfms:easy:99 , author="C. Burnikel and R. Fleischer and K. Mehlhorn and S. Schirra" , title="Exact Geometric Computation Made Easy" , booktitle="Proc. 15th ACM Symp. Comp. Geom." , pages="341--450" , year=1999 } @article{fortune-vanwyk:static:96 , author="Steven J. Fortune and Christopher J. van Wyk" , title="Static analysis yields efficient exact integer arithmetic For computational geometry" , journal="ACM Transactions on Graphics" , volume=15 , number=3 , pages="223--248" , year=1996 } @inproceedings{fortune-vanwyk:exact, author="Steven J. Fortune and Christopher J. van Wyk", title="Efficient exact arithmetic for computational geometry", booktitle="Proc. 9th ACM Symp. on Computational Geom.", pages="163-172", year=1993 } @article{kln:delaunay:91 , author="M. Karasick and D. Lieber and L. R. Nackman" , title="Efficient {D}elaunay triangulation using rational arithmetic" , journal="ACM Trans. on Graphics" , volume=10 , pages="71--91" , year=1991 } @inproceedings{bkmnsu:exact:95 , author="Christoph Burnikel and Jochen K{\"o}nnemann and Kurt Mehlhorn and Stefan N{\"a}her and Stefan Schirra and Christian Uhrig" , title = "Exact Geometric Computation in {LEDA}" , booktitle = "Proc. 11th ACM Symp. Computational Geom." , year = 1995 , pages = "C18--C19" , url = "http://www.mpi-sb.mpg.de/guide/staff/uhrig/leda.html" , keywords = "" } @phdthesis{burnikel:exact:thesis , author = "C. Burnikel" , title = "Exact Computation of {Voronoi} Diagrams and Line Segment Intersections" , type = "Ph.{D} Thesis" , school = "Universit{\"a}t des Saarlandes" , month = "March" , year = 1996 , keywords = "doctoral thesis" } @inproceedings{shewchuk:adaptive:96 ,author = {Jonathan Richard Shewchuk} ,title = {Robust Adaptive Floating-Point Geometric Predicates} ,booktitle = {Proc.~12th ACM Symp.~on Computational Geom.} ,publisher = {Association for Computing Machinery} ,pages = {141--150} ,month = may ,year = 1996 } @inproceedings{klpy:core:98 , author="V. Karamcheti and C. Li and I. Pechtchanski and C. Yap" , title="A Core Library for Robust Numeric and Geometric Computation" , booktitle="Proc.~15th ACM Symp.~on Computational Geometry" , pages="351--359" , month=jun , year="1999" , note="Miami Beach, Florida" } @inproceedings{li-yap:constructiveBound:00 ,title="A New Constructive Root Bound for Algebraic Expressions" , author="Chen Li and Chee Yap" , booktitle="Proc.~12th ACM-SIAM Symposium on Discrete Algorithms (SODA)" , publisher="ACM and SIAM" , pages="496--505" , month=jan , year=2001 } @inproceedings{tyl:zero-test:00 , title="Randomized Zero Testing of Radical Expressions and Elementary Geometry Theorem Proving" , author="Daniela Tulone and Chee Yap and Chen Li" , booktitle="International Workshop on Automated Deduction in Geometry (ADG'00), Zurich, Switzerland" , note="Preprint: {\tt ftp://cs.nyu.edu/pub/local/yap/exact/}." , month=sep , year=2000 } @article{mehlhorn-etal:sep-bd:00 , author="C. Burnikel and R. Fleischer and K. Mehlhorn and S. Schirra" , title="A strong and easily computable separation bound for arithmetic expressi ons involving radicals" , journal="Algorithmica" , volume=27 , pages="87--99" , year=2000 } @mastersthesis{ouchi:thesis , author="Kouji Ouchi" , title="{Real/Expr}: Implementation of an Exact Computation Package" , school="New York University" , address="Department of Computer Science, Courant Institute" , month="January" , year=1997 } @article{yap:exact , author="Chee K. Yap" , title="Towards Exact Geometric Computation" , journal="Computational Geometry: Theory and Applications" , volume=7 , pages="3--23" , year=1997 } @inproceedings{yap:brown-cgc:98 , author="Chee Yap" , title="A New Number Core for Robust Numerical and Geometric Libraries" , booktitle="3rd CGC Workshop on Geometric Computing" , note="Invited Talk. Brown University, Oct 11--12, 1998. Abstracts, {\tt http://www.cs.brown.edu/cgc/cgc98/home.html}" , year=1998 } @incollection{yap-dube:paradigm , author = "C. K. Yap and T. Dub\'e" , title = "The exact computation paradigm" , editor = "D.-Z. Du and F. K. Hwang" , booktitle = "Computing in Euclidean Geometry" , series = "Lecture Notes Series on Computing" , volume = 1 , edition = "2nd" , publisher = "World Scientific" , address = "Singapore" , year = 1995 , pages = "452--492" , url = "http://cs.nyu.edu/cs/faculty/yap/papers/paradigm.ps" , keywords = "survey paper, numeral computing, exact compuation, fixed-precis ion, multiprecision number packages" , update = "97.11 icking, 97.03 devillers+pocchiola" , abstract = "A survey of the approaches to non-robustness of geometric algor ithms, and especially the exact computation approach. Also surveys available big -number packages." } @incollection{yap:crc , author = "Chee K. Yap" , title = "Robust Geometric Computation" , editor = "Jacob E. Goodman and Joseph O'Rourke" , booktitle = "Handbook of Discrete and Computational Geometry" , publisher = "Chapmen \& Hall/CRC" , edition = "2nd" , address = "Boca Raton, FL" , chapter = 41 , pages = "927--952" , note= "Expanded from 1997 version." , extraNote=" URL {\tt ftp://cs.nyu.edu/pub/local/yap/exact/crc02.ps.gz}." , comment="64 chapters, approx. xiv+1400 pp." , year = "2004" } @book{yap:algebra-bk, author="Chee K. Yap", title="Fundamental Problems in Algorithmic Algebra", publisher="Oxford University Press", comment="ISBN 0-19-512516-9, 500 pp.", note="A version is available at URL {\tt ftp:/Preliminary/cs.nyu.edu/pub/local/yap/algebra-bk}", year="2000" } @inproceedings{pion-yap:kary:03 , title="Constructive Root Bound Method for $k$-Ary Rational Input Numbers" , author="Sylvain Pion and Chee Yap" , booktitle="19th " # "ACM Symp. on Comp.Geometry" , address="San Diego, California. " , comment="Submitted to Journal" , pages="256--263" , year="2003" } @article{li-pion-yap:progress:04 , title="Recent Progress in Exact Geometric Computation" , author="Chen Li and Sylvain Pion and Chee Yap" , editor="N. M{\"u}ller and M. Escardo and P. Zimmermann" , journal="Journal of Logic and Algebraic Programming" , note="To appear. Special issue on ``Practical Development of Exact Real Number Computation''." , comment="replaces li-yap:progress:01" , year="2004" } @article{bfs:exact-cascaded:01 , author="C. Burnikel and S. Funke and M. Seel" , title="Exact Geometric Computation using Cascading" , journal="International J. Comp. Geometry and Applications" , volume=11 , number=3 , pages="245--266" , note="Special Issue" , comment="replaces bfs:exact-cascaded:98. Interesting that they used EGC in new title!" , year=2001 } core++-1.7/doc/tutorial.tex0100644000175000001440000024006410146414067015134 0ustar joachimusers% file: tutorial.tex % CORE Library % $Id: tutorial.tex,v 1.39 2004/11/16 15:09:43 exact Exp $ % Revision History: % -- Nov 12, 2004 by Chee, Zilin, Vikram and Pion for Version 1.7 % -- Jun 20, 2003 by Chee, Zilin and Vikram for CORE Version 1.6 % -- Jul 29, 2002 by Sylvain, Chee, Zilin for CORE Version 1.5 % -- Sep 1, 2001 by Chee for CORE Version 1.4x % -- Aug 15, 2000 by Chee and Chen for CORE Version 1.3 % -- Sep 9, 1999 by Chee and Chen for CORE Version 1.2 % -- Jan 9, 1999 by Chen for a new tutorial for CORE lib % -- Jun 15, 1998 by Chee for CORE proposal \documentclass[12pt]{article} % \input mssymb \usepackage{amssymb} \input{macro} % \textwidth 15.4cm % \textheight 23.4cm % \textheight 23cm % \topmargin -14mm % \evensidemargin 3mm % \oddsidemargin 3mm \draftdimensions \title{\corelib\ Tutorial} \author{Chen Li, Chee Yap, Sylvain Pion, Zilin Du and Vikram Sharma\\ Department of Computer Science\\ Courant Institute of Mathematical Sciences\\ New York University\\ %251 Mercer Street\\ New York, NY 10012, USA } \date{Nov 12, 2004\footnotemark[0]{\dag} \footnotetext[0]{\dag Revised: Jan 18, 1999; Sep 9, 1999; Aug 15, 2000; Sep 1, 2001; Jul 29, 2002; Jun 20, 2003; Nov 12, 2004. This work has been funded by NSF Grants \#CCR-9402464, \#CCF-0430836, and NSF/ITR Grant \#CCR-0082056. } } \begin{document} \maketitle \abstract{ The \corelib\ is a collection of \cpp\ classes to support numerical computations that have a variety of precision requirements. In particular, it supports the Exact Geometric Computation (EGC) approach to robust algorithms. The implementation embodies our precision-driven approach to EGC. The library is designed to be extremely easy to use. Any \cpp\ programmer can immediately transform a ``typical'' geometric application program into fully robust code, without needing to transform the underlying program logic. This tutorial gives an overview of the \corelib, and basic instructions for using it. } %\newpage %\section*{Table of Contents} \vspace{.2in} \begin{center} \begin{minipage}{4in} % \section*{Table of Contents} \begin{tabular}{c l c } {\bf Section} & {\bf Contents} & {\bf Page} \\ 1 & Introduction & 2 \\ 2 & Getting Started & 3 \\ 3 & Expressions & 8 \\ 4 & Numerical Precision and Input-Output & 9 \\ 5 & Polynomials and Algebraic Numbers & 15 \\ 6 & Converting Existing \candcpp\ Programs & 16 \\ 7 & Using \core\ with \cgal\ & 19 \\ 8 & Efficiency Issues & 19 \\ 9 & \corelib\ Extensions & 23 \\ % X & Implementation Issues and Features & ?? \\ 10 & Miscellany & 23 \\ 11 & Bugs and Future Work & 24 \\ Appendix A & \core\ Classes Reference & 25 \\ Appendix B & Sample Program & 49 \\ Appendix C & Brief History & 50 \\ & References & 51 \\ \end{tabular} \end{minipage} \end{center} \cleardoublepage \section{Introduction} In programs such as found in engineering and scientific applications, one can often identify numerical variables that require more precision than is available under machine arithmetic\footnote{ In current computers, this may be identified with the IEEE 754 Standard. }. But one is also likely to find other variables that need no more than machine precision. E.g., integer variables used as array indices or for loop control. The \corelib\ is a collection of \cpp\ classes to facilitate numerical computation that desire access to a variety of such precision requirements. Indeed, the library even supports variables with irrational values (e.g., $\sqrt{2}$) and allows exact comparisons with them. Numerical non-robustness of programs is a widespread phenomenon, and is clearly related to precision issues. Two recent surveys are \cite{schirra:robustness-survey:98,yap:crc}. Non-robustness is particularly insidious in geometric computation. What distinguishes ``geometric computation'' from general ``numerical computation'' is the appearance of discrete or combinatorial structures, and the need to maintain consistency requirements between the numerical values and these structures \cite{yap:crc}. Our library was originally designed to support the {\em Exact Geometric Computation} (EGC) approach to robust geometric computation \cite{yap:exact,yap-dube:paradigm}. The EGC approach is one of the many routes that researchers have taken towards addressing non-robustness in geometric computation. Recent research in the computational geometry community has shown the effectiveness of EGC in specific algorithms such as convex hulls, Delaunay triangulation, Voronoi diagram, mesh generation, etc \cite{fortune-vanwyk:static:96,fortune-vanwyk:exact,kln:delaunay:91,bkmnsu:exact:95,burnikel:exact:thesis,shewchuk:adaptive:96}. But programmers cannot easily produce such robust programs without considerable effort. A basic goal of our project is to create a tool that makes EGC techniques accessible to \dt{all} programmers. Through the \corelib, any \candcpp\ programmer can now create robust geometric programs {\em without} any special knowledge of EGC or other robustness techniques. The \corelib, because of its unique numerical capabilities, has other applications beyond EGC. An example is in automatic theorem proving in geometry \cite{tyl:zero-test:00}. A cornerstone of our approach is to define a simple and yet natural numerical accuracy API (Application Program Interface). The \corelib\ defines four {\em accuracy levels} to meet a user's needs: \begin{description} \item[Machine Accuracy (Level 1)] This may be identified with the IEEE Floating-Point Standard 754. \item[Arbitrary Accuracy (Level 2)] Users can specify any desired accuracy in term of the number of bits used in the computation. E.g., ``200 bits'' means that the numerical operations will not cause an overflow or underflow until 200 bits are exceeded. \item[Guaranteed Accuracy (Level 3)] Users can specify the absolute or relative precision that is guaranteed to be correct in the final results. E.g., ``200 relative bits'' means that the first 200 significant bits of a computed quantity are correct. \item[Mixed Accuracy (Level 4)] Users can freely intermix the various precisions at the level of individual variables. This level is not fully defined, and only a primitive form is currently implemented. \end{description} Level 3 is the most interesting, and constitute the critical capability of EGC. Level 2 is essentially the capability found in big number package, and in computer algebra systems such as \texttt{Maple} or \texttt{Mathematica}. There is a fundamental gap between Levels 2 and 3 that may not be apparent to the casual user. One design principle in our library is that a \core\ program should be able to compile and run at any of the four accuracy levels. We then say that the program can ``simultaneously'' access the different levels. The current library development has focused mostly\footnote{ Level 1 effort simply amounts to ensuring that a Level 3 program can run at Level 1 as well. A ``Level 3 program'' is one that explicitly use classes or functions that are specific to Level 3. } on Levels 1 and 3. As a result of the simultaneous access design, \core\ programs can be debugged and run at various levels as convenient. E.g., to test the general program logic, we debug at Level 1, but to check the numerical computation, we debug at Level 3, and finally, we may choose to run this program at Level 2 for a speed/accuracy trade-off. The mechanism for delivering these accuracy levels to a program aims to be as transparent as possible. In the simplest situation, the user begins with a ``standard'' \cpp\ program, i.e., a \cpp\ program that does not refer to any \core-specific functions or classes. We call this a \dt{Level 1 program}. Then the user can invoke \corelib's numerical capabilities just by inserting the line {\tt \#include "CORE/CORE.h"} into the program, and compiling in the normal way. In general, a key design objective is to reduce the effort for the general programmer to write new robust programs, or to convert existing non-robust programs into robust ones. It should be evident that if an ``ordinary'' \cpp\ program is to access an accuracy level greater than 1, its basic number types must be re-interpreted and overloading of arithmetic operators must be used. In Level 2, the primitive types \double\ and \lng\ are re-interpreted to refer to the classes \BF\ and \Int, respectively. Current implementation encloses these values inside a number type \real. In Level 3, both \double\ and \lng\ refer to the class \expr. Think of an instance of the \expr\ class as a real number which supports exact (error-less) operations with $+,-,\times, \div$ and $\sqrt{}$, and also exact comparisons. Each instance of \expr\ maintains an \dt{approximate value} as well as a \dt{precision}. The precision is an upper bound on the error in the approximate value. Users can freely modify this precision, and the approximate value will automatically adjust itself. When we output an \expr\ instance, the current approximate value is printed. Our work is built upon the \rexpr\ Package of Yap, Dub\'e and Ouchi \cite{yap-dube:paradigm}. The \rexpr\ Package was the first system to achieve Level 3 accuracy in a general class of non-rational expressions. The most visible change in the transition to \corelib\ is our new emphasis on ease-of-use. The \core\ accuracy API was first proposed by Yap \cite{yap:brown-cgc:98}. An initial implementation was described by Karamcheti et al \cite{klpy:core:98}. At about the same time, Burnikel et al \cite{bfms:easy:99} introduced the {\tt leda\_real} Library that is very similar to Level 3 of our library. The library has been extensively tested on the Sun UltraSPARC, Intel/Linux and Windows platforms. The main compiler for development is \gnu's \gpp. % version 1.2 was tested using Sun's WorkShop Compiler {\tt CC} % and SGI's MIPSpro Compiler {\tt CC}. The base distribution for Version \versionNo\ is less than 800 KB, including source, extensions and examples. The full distribution, which includes documentation and \gmp, is less than 4MB. It can be freely downloaded from our project homepage \begin{center} \verb+http://cs.nyu.edu/exact/core.+ \end{center} This tutorial has been updated for \corelib, Version \versionNo, released on \releaseDate. \section{Getting Started} \paragraph{Installing the \corelib.} % Software you need are \texttt{gunzip}, \texttt{tar}, % \texttt{make} and a \cpp\ compiler. The \core\ distribution file is called \coredistfile, where {\tt X.Y.Z} denotes the library version. % coredistfile = core_vX.Y.Z.tgz. Thus, for the initial version \versionNo, we have {\tt X.Y.Z = \versionNo.0}. Assume that the distribution file has been downloaded into some directory \installpath. In Unix, you can extract the files as follows: \\ \hspace*{1in} {\tt \% cd} \installpath \\ \hspace*{1in} {\tt \% gzip -cd} \coredistfile {\tt\ | tar xvf -} \\ where {\tt\%} is the Unix prompt. This creates the directory {\tt core\_vX.Y} containing all the directories and files. Let \corepath\ % \corepath = $(CORE\_PATH) be the full path name of this newly created directory: thus \corepath\ expands to \installpath{\tt /core\_vX.Y}. The \corelib\ directory structure is as follows: \begin{tabbing} XX\=XXXXXXXXXXXXXXX\=XXXXXX\=XXXXXX \kill\\ \> \docdir: \> Documentation\\ \> \includedir: \> The header files\\ \> \srcdir: \> Source code for the \corelib\\ \> \libdir: \> The compiled libraries are found here\\ \> \extdir: \> Extensions for linear algebra and geometry, etc\\ \> \examplesdir: \> Demo programs using the \corelib \\ % \examplesdir\ and \progsdir\ are same! \> \tempdir: \> Temporary directory \\ \> \win: \> Director for Windows files \\ \> \gmplink: \> gmp installation directory (may be a link)\\ \end{tabbing} \noindent The link \gmplink\ is not present after unpacking, but will be created in the first three steps of the installation below. The {\tt README} file in \corepath\ describes the easy steps to compile the library, which are as follows: \\ \hspace*{1in} \verb+ % cd ${CORE_PATH} + \\ \hspace*{1in} \verb+ % make first // determine system configurations for gmp+ \\ \hspace*{1in} \verb+ % make second // make gmp libraries+ \\ \hspace*{1in} \verb+ % make third // install gmp + \\ \hspace*{1in} \verb+ % make testgmp // check if gmp is properly installed + \\ \hspace*{1in} \verb+ % make fourth // make core library, extensionns, demo programs + \\ \hspace*{1in} \verb+ % make fifth // run sample programs + \\ These steps assume that you downloaded the full distribution (with \gmp) works in a unix-like environment, including cygwin. Variant installations (e.g., for a base distribution, without \gmp) are described in the {\tt README} file. These five steps are equivalent to a simple ``make all''. The first make will determine the system configurations (platform, compilers, available files, etc). This information is needed for building the \gmp\ library, which is the object of the second make. These first two makes are the most expensive of the installation, taking between 10--30 minutes depending on the speed of your machine. But you can skip these steps in subsequent updates or recompilation of the Core Library. The third make will install the gmp library. Before the fourth make, we do a simple check to see if gmp has been properly installed (``make testgmp''). The fourth make is equivalent to three separate makes, corresponding to the following targets: {\tt corelib, corex, demo}. Making {\tt corelib} creates the core library, that is, it compiles the files in \srcdir\ resulting in the file {\tt libcore++.a} which is then placed in \libdir. Make {\tt corex} creates the Core Library extensions (\corex's), resulting in the files {\tt libcorex++\_level*.a} being placed in \libdir. Note that we currently create levels 1, 2 and 3 of the \corex. Make {\tt demo} will compile all the sample programs in \examplesdir. The fifth make will test all the sample programs. The screen output of all the above makes are stored in corresponding files in \tempdir. An optional ``make sixth'' will run the fifth test with a single timing number. \paragraph{Programming with the \corelib.} \label{sec-prog-core} It is simple to use the \corelib\ in your \candcpp\ programs. There are many sample programs and Makefiles under \examplesdir. These could be easily modified to compile your own programs. A simple scenario is when you already have a working \cpp\ program which needs to be converted to a CORE program. The following 2 steps may suffice: \begin{enumerate} \item Modifying your program: add one or two instructions as preamble to your program. First, use a define statement to set the \core\ accuracy level: \begin{verbatim} #define CORE_LEVEL // this line can be omitted when // using the default value 3. \end{verbatim} Here {\tt } can be 1, 2, 3 or 4. Next, include the \corelib\ header file {\tt CORE.h} (found in \includedir) \begin{verbatim} #include "CORE/CORE.h" \end{verbatim} To avoid potential name conflict, all header files are stored under \includedir/CORE\footnote{ Before \corelib\ 1.6, header files were in \includedir. For backward compatibility, you still can use \texttt{\#include "CORE.h"} } This include line should appear {\em before} your code which utilizes Core Library arithmetic, but {\em after} any needed the standard header files, e.g. \verb++. Note that \texttt{CORE.h} already includes the following: \begin{verbatim} , , , , , , , , , , . \end{verbatim} \item Quick start to compiling and running your own programs. When compiling, make sure that \includedir\ and \includegmpdir\ are among the include paths (specified by the {\tt -I} compiler flag) for compiling the source. When linking, you must specify the libraries from \core\ and \gmp\ and the standard math library {\tt m}, using the {\tt -l} flag. You also need to use the {\tt -L} flag to place \libdir\ and \gmplibdir\ among the library paths. E.g., to compile the program \texttt{foo.cpp}, type: \\ \hspace*{0.2in} {\small\tt \% g++ -c -I\includedir\ -I\includegmpdir\ foo.cpp -o foo.o} \\ \hspace*{0.2in} {\small\tt \% g++ -o foo -L\libdir\ -L\gmplibdir\ -lcore++ -lgmp -lm } \\ in this order. \end{enumerate} The easy way to use the Core Library is to take advantage of the Core Library directory structure. This can be seen in how we compile all the demo programs. First, create your own directory under \examplesdir\ and put your program \texttt{foo.cpp} there. Then copy one of the Makefiles in \examplesdir. E.g., \examplesdir{\tt /generic/Makefile}. You can modify this make file to suit your needs. To compile \texttt{foo.cpp}, just modify the Makefile by adding the following line as a new target: \begin{verbatim} foo: foo.o \end{verbatim} To compile your program, you simple type ``make foo'' in this directory. % See the \texttt{README} file for instructions if you use % dynamic libraries. The examples in this tutorial are found in \examplesdir\texttt{/tutorial/}. \paragraph{Namespace CORE.} %Starting with CORE version 1.5, The library uses its own namespace called {\tt CORE}. Therefore classes and functions of {\tt CORE} are accessible by explicitly prefixing them by {\tt CORE::}. E.g., {\tt CORE::Expr}. You can also use the global statement~: \begin{progb} { \> \tt using namespace CORE; } \end{progb} In fact, this is automatically added by the include file {\tt CORE.h} unless the compilation flag \\ {\tt CORE\_NO\_AUTOMATIC\_NAMESPACE} is defined. \paragraph{Basic Numerical Input-Output.} Input and output of literal numbers come in three basic formats: scientific format (as in {\tt 1234e-2}), positional format (as in {\tt 12.34}), or rational format (as in {\tt 1234/100}). Scientific and positional can be mixed (as in {\tt 1.234e-1}) and will be collectively known as the ``approximate number format''. It is recognized by the presence of an ``e'' or a radical point. In contrast, the rational format is known as ``exact number format'', and is indicated by the presence of a ``/''. For I/O purposes, a plain integer $1234$ is regarded as a special case of the rational format. Input and output of exact numbers is pretty straightforward, but I/O of approximate numbers can be subtle. For output of approximate numbers, users can choose either scientific or positional format, by calling the methods {\tt setScientificFormat()} or {\tt setPositionalFormat()}, respectively. The output precision is manipulated using the standard \cpp\ stream manipulator {\tt setprecision(int)}. The initial default is equivalent to \begin{verbatim} setprecision(6); setPositionalFormat(); \end{verbatim} Note that the term ``precision'' in \cpp\ streams is not consistent with our use of the term (see Section 4). In our terminology, precision are measured in ``bits'', while input or output representation are in ``decimal digits''. In contrast, precision in \cpp\ streams refers to decimal digits. \begin{center} \begin{tabular}{c} \begin{progb}{ \>\tt \expr\ e1 = 12.34; // constructor from C++ literals \\ \>\tt \expr\ e = "1234.567890"; // constructor from string \\ \>\>\>\tt // The precision for reading inputs is controlled by \definput \\ \>\>\>\tt // This value is initialized to be 16 (digits). \\ \>\tt cout << e << endl; \\ \>\>\>\tt // prints 1234.57 as the output precision defaults to 6. \\ \>\tt cout << setprecision(10) << e << endl; // prints 1234.567890 \\ \>\tt cout << setprecision(11) << e << endl; // prints 1234.5678900 \\ \>\tt setScientificFormat(); \\ \>\tt cout << setprecision(6) << e << endl; // prints 1.23457e+4 }\end{progb} \end{tabular} Program 1 \end{center} Program 1 uses \expr\ for illustrating the main issues with input and output of numerical values. But all CORE number classes will accept string inputs as well. Of course, in Level 3, \expr\ will be our main number type. For input of approximate numbers, two issues arise. As seen in Program 1, expression constructors accept two kinds of literal number inputs: either standard \cpp\ number literals (e.g., {\tt 12.34}, without any quotes) or strings (e.g., {\tt "1234.567890"}). You should understand that the former is inherently inexact: E.g., {\tt 12.34} has no exact machine double representation, and you are relying on the compiler to convert this into machine precision. Integers numbers with too many digits (more than $16$ digits) cannot be represented by \cpp\ literals. So users should use string inputs to ensure full control over input precision, to be described next. Yet another issue is the base of the underlying natural numbers, in any of the three formats. Usually, we assume base $10$ (decimal representation). However, for file I/O (see below) of large numbers, it is important to allow non-decimal representations. I/O streams understand expressions (\expr). The output precision in both scientific and positional formats is equal to the number of digits which is printed, provided there are that many correct digits to be printed. This digit count does not include the decimal point, the ``\texttt{e}'' indicator or the exponent value in scientific format. But the single $0$ before a decimal point is counted. In two situations, we may print less than the maximum possible: (a) when the approximate value of the expression does not have that many digits of precision, and (b) when the exact output does not need that many digits. In any case, all the output digits are correct except that the last digit may be off by $\pm 1$. Note that 19.999 or 20.001 are considered correct outputs for the value 20, according to our convention. But 19.998 or 20.002 would not qualify. Of course, the approximate value of the expression can be improved to as many significant digits as we want -- we simply have to force a re-evaluation to the desired precision before output. Three simple facts come into play when reading an approximate number format into internal representation: (1) We normally prefer to use floating point in our internal representation, for efficiency. (2) Not all approximate number formats can be exactly represented by a floating point representation when there is a change of base. (3) Approximate number format can always be represented exactly by a big rational. We use the value of the global variable \definput\ to determine the precision for reading literal input numbers. This variable can be set by calling the function\\ \verb+setDefaultInputDigits(+\extlong\verb+)+. Here, the class \extlong\ is basically a wrapper around the machine \lng\ type which supports special values such as $+\infty$, denoted by \coreInfty. If the value of \definput\ is $+\infty$, then the literal number is internally represented without error, as a rational number if necessary. If \definput\ is a finite integer $m$, then we convert the input string to a \BF\ whose value has absolute error at most $10^{-m}$, which in base $10$ means the mantissa has $m$ digits. The initial default value of \definput\ is $16$. \paragraph{A Simple Example.} \label{sec-example-sqrt} Consider a simple program to compare the following two expressions, numerically: $$\sqrt{x}+\sqrt{y} : \sqrt{x+y+2\sqrt{xy}}.$$ Of course, these expressions are algebraically identical, and hence the comparison should result in equality regardless of the values of $x$ and $y$. Running the following program in level 1 will yield incorrect results, while level 3 is always correct. \begin{center} \begin{tabular}{c} \begin{progb}{ \> \tt \#ifndef CORE\_LEVEL\\ \> \tt \# define CORE\_LEVEL 3\\ \> \tt \#endif\\ \> \tt \#include "CORE/CORE.h" // this must come after the standard headers\\ \> \tt int main() \{\\ \>\> \tt setDefaultInputDigits(CORE\_INFTY);\\ \>\> \tt double x = "12345/6789"; \ \ \ \ \ \ // rational format\\ \>\> \tt double y = "1234567890.0987654321"; \ \ \ \ \ // approximate format\\ \\ \>\> \tt double e = sqrt(x) + sqrt(y);\\ \>\> \tt double f = sqrt(x + y + 2 * sqrt(x*y));\\ \\ \>\> \tt std::cout << "e == f ? " << ((e == f) ? \\ \>\>\>\tt "yes (CORRECT!)" :\\ \>\>\>\tt "no (ERROR!)" ) << std::endl;\\ \> \} }\end{progb} \end{tabular} Program 2 \end{center} \ignore{ In Karamcheti et al \cite{klpy:core:98}, a simple experiment of this kind was described. A straightforward program which intersects a pair of lines and } \paragraph{Terminology.} We use the capitalized ``CORE'' as a shorthand for ``Core Library'' (e.g., a CORE program). Note that ``Core'' is not an abbreviation; we chose this name to suggest its role as the ``numerical core'' for robust geometric computations. %It also reminds us that ``cores'' are usually small, not bloated. \section{Expressions} The most interesting part of the \corelib\ is its notion of expressions, embodied in the class \expr. This is built on top of the class \real, which provides a uniform interface to the following subtypes of real numbers: \\ \hspace*{1in} \int, \lng, \float, \double, \Int, \Rat, \BF. \\ Instances of the class \expr\ can be thought of as algebraic expressions built up from instances of \real\ and also real algebraic numbers, via the operators $ +, -, \times, \div$ and $\sqrt{\phantom{\cdot}}$. Among the subtypes of \real, the class \BF, has a unique and key role in our system, as the provider of approximate values. It has an additional property not found in the other \real\ subtypes, namely, each \BF\ keeps track of an error bound, as explained next. The simplest use of our library is to avoid explicit references to these classes (\expr, \real, \BF). Instead use standard \cpp\ number types (\int,\lng,\float,\double) and run the program in level 3. Nevertheless, advanced users may find it useful to directly program with our number types. Appendix A serves as a reference for these classes. \paragraph{Level 2 and Level 3 numbers.} There are two inter-related concepts in the \corelib: {\em precision} and {\em error}. One may view them as two sides of the same coin -- a half-empty cup versus a half-full cup. Within our library, they are used in a technical sense with very different meanings. Let $f$ be an instance of the class \BF, and $e$ be an instance of the class \expr. We call $f$ a ``Level 2 number'' and $e$ a ``Level 3 number''. Basically, we can compute with Level 2 numbers\footnote{ % Level 2 numbers ought to refer to any instance of the class \real, if only they all track an error bound as in the case of the \BF\ subtype. Future implementations may have this property. % } to any desired error bound. But unlike Level 3 numbers, Level 2 numbers cannot guarantee error-less results. The instance $f$ has a \dt{nominal value} $\val_f$ (a real number) as well as an \dt{error bound} $\err_f$. One should interpret $\err_f$ as an upper bound on the difference between $\val_f$ and some ``actual value''. The instance $f$ does not know the ``actual value'', so one should just view $f$ as the interval $\val_f \pm \err_f$. But a user of Level 2 numbers may be able to keep track of this ``actual value'' and thus use the interval properly. Indeed, Level 3 numbers uses Level 2 numbers in this way. The idea of Level 3 numbers is novel, and was first introduced in our \rexpr\ package \cite{yap-dube:paradigm}. The expression $e$ also has a \dt{value} $\val_e$ which is exact\footnote{ And real, for that matter. }. Unfortunately, the value $\val_e$ is in the mathematical realm ($\RR$) and not directly accessible. Hence we associate with $e$ two other quantities: a \dt{precision bound} $\preci_e$ and an \dt{approximation} $\appr_e$. The library guarantees that the approximation error $|\appr_e - \val_e|$ is within the bound $\preci_e$. The nature of $\preci_e$ will be explained in the next section. What is important is that $\preci_e$ can be freely set by the user, but the approximation $\appr_e$ is automatically computed by the system. In particular, if we increase the precision $\preci_e$, then the approximation $\appr_e$ will be automatically updated if necessary. In contrast to $\preci_e$, the error bound $\err_f$ should not be freely changed by the user. This is because the error is determined by the way that $f$ was derived, and must satisfy certain constraints (basically it is the constraints of interval arithmetic). For instance, if $f=f_1+f_2$ then the error bound in $f$ is essentially\footnote{ In operations such as division or square roots, exact results may not be possible even if the operands have no error. In this case, we rely on some global parameter to bound the error in the result. } determined by the error bounds in $f_1$ and $f_2$. Thus, we say that error bounds are % {\em \'a posteriori values} {\em a posteriori values} while precision bounds are % {\em \'a priori values.} {\em a priori values.} \paragraph{Error-less Comparisons.} While we can generate arbitrarily accurate approximations to a Level 3 number, this does not in itself allow us to do exact comparisons. When we compare two numbers that happen to be equal, generating increasingly accurate approximations can only increase our confidence that they are equal, but never tell us that they are really equal. Thus, there is a fundamental gap between Level 2 and Level 3 numbers. To be able to tell when two Level 3 numbers are equal, we need some elementary theory of algebraic root bounds \cite{yap:algebra-bk}. This is the basis of the Exact Geometric Computation (EGC) approach to non-robustness. \section{Numerical Precision and Input-Output} Numerical input and output may be subtle, but they should never be ambiguous in our system. A user should know how input numbers are read, but also know how to interpret the output of numbers. For instance, confusion may arise from the fact that a value may be {\em exactly} represented internally, even though its printout is generally an approximation. Thus, the exact representation of $\sqrt{2}$ is available internally in some form, but no printout of its approximate numerical value can tell you that it is really $\sqrt{2}$. For this, you need to do a comparison test. NOTE: Precision is always given in base $10$ or base $2$. Generally, we use base $2$ for internal precision, and use base $10$ for I/O precision. \core\ has various global variables such as \defabs\ and \definput\ that controls precision in one way or other. Our naming convention for such variables tells you which base is used: precision variables in base $10$ have the substring \texttt{Digit}, while precision variables in base $2$ have the substring \texttt{Prec}. \paragraph{The Class of Extended Longs.} For programming, we introduce an utility class called \extlong\ (extended long) which is useful for expressing various bounds. In our system, they are used not only for specifying precision bounds, but also root bounds as well. Informally, \extlong\ can be viewed as a wrapper around machine \lng\ and which supports the special values of $+\infty, -\infty$ and NaN (``Not-a-Number''). These values are named \posInfty, \negInfty\ and \NaN, respectively. For convenience, \coreInfty\ is defined to be \posInfty. The four arithmetic operations on extended longs will never lead to exceptions such as overflows or divide-by-zero\footnote{ % To delay the onset of overflows, it may be useful to extend \extlong\ to implement a form of level arithmetic. E.g., when a value overflows machine \lng, we can keep track of $\log_2$ of its magnitude, etc. % } or undefined values. This is because such operations can be detected and given the above special values. A user may use and assign to \extlong's just as they would to machine \lng's. \paragraph{Relative and Absolute Precision.} Given a real number $ X $, and integers $a$ and $r$, we say that a real number $ \widetilde{X} $ is an {\em approximation} of $X$ to {\em (composite) precision} $ [r, a] $, denoted \[ \widetilde{X} \simeq X \left[ r, a \right], \] provided either \[ \left| \widetilde{X} - X \right| \le 2^{-r}\left| X \right| \qquad \mbox{or} \qquad \left| \widetilde{X} - X \right| \le 2^{-a}. \] Intuitively, $r$ and $a$ bound the number of ``bits'' of relative and absolute error (respectively) when $\widetilde{X}$ is used to approximate $X$. Note that we use\footnote{ Jerry Schwarz, ``A C++ library for infinite precision floating point'' (Proc.~USENIX C++ Conference, pp.271--281, 1988) uses the alternative ``and'' semantics. } the ``or'' semantics (either the absolute ``or'' relative error has the indicated bound). In the above notation, we view the combination ``$X[r,a]$'' as the given data (although $X$ is really a black-box, not an explicit number representation) from which our system is able to generate an approximation $\widetilde{X}$. For any given data $X[r,a]$, we are either in the ``absolute regime'' (if $2^{-a}\ge 2^{-r}|X|$) or in the ``relative regime'' (if $2^{-a}\le 2^{-r}|X|$). To force a relative precision of $ r $, we can specify $a = \infty $. Thus $ X[r, \infty]$ denotes any $\widetilde{X}$ which satisfies $\left| \widetilde{X} - X \right| \le 2^{-r}\left| X \right|$. Likewise, if $ \widetilde{X} \simeq X[\infty, a] $ then $ \widetilde{X} $ is an approximation of $ X $ to the absolute precision $a$, $|\widetilde{X} - X| \le 2^{-a}$. In implementation, $r$ and $a$ are \extlong\ values. We use two global variables to specify the global composite precision: \begin{equation}\label{eq:defrel} [\defrel,\defabs]. \end{equation} It has the default value $[60,\coreInfty]$. The user can change these values at run time by calling the functions: \begin{verbatim} long setDefaultRelPrecision(extLong r); // returns previous value long setDefaultAbsPrecision(extLong a); // returns previous value void setDefaultPrecision(extLong r, extLong a); \end{verbatim} How does the default precision in \ref{eq:defrel} control your computation? Say you perform arithmetic operations such as \texttt{z = x/y;} The system will ensure that the computed value of \texttt{z} satisfies the relation \texttt{z}$\sim x/y[\defrel,\defabs]$. Sometimes, we want to control this precision for individual variables. If {\tt e} is an \expr, the user can invoke {\tt e.approx(rel, abs)} where {\tt rel, abs} are extended longs representing the desired composite precision. The returned value is a \real\ instance that satisfies this requested precision. If {\tt approx} is called without any arguments, it will use the global values $[\defrel,\defabs]$. In Section 2 (``Getting Started''), we gave the basics for numerical input and output. In particular, we have 3 formats: positional (e.g., {\tt 3.14159}), scientific (e.g., {\tt 314159 e-5}), or rational (e.g., {\tt 314159/100000}). These formats can be read as a \cpp\ literal or as a string. But there are important differences related to precision. \paragraph{Precision of Numerical Input.} Consider the following input of numerical values: \begin{verbatim} Expr e = 0.123; // position format in machine literal Expr f = "0.123"; // positional format in string Expr g = 123e-3; // scientific format in machine literal Expr h = "123e-3"; // scientific format in string Expr i = 12.3e-2; // mixed format in machine literal Expr j = "12.3e-2"; // mixed format in string \end{verbatim} The input for expressions \texttt{e}, \texttt{g} and \texttt{i} are \cpp\ number literals, and you may expect some error when converted into the internal representation. But the relative error of the internal representation is at most $2^{-53}$, assuming the IEEE standard. In contrast, the values of the expressions \texttt{f},\texttt{h} and \texttt{j} are controlled by the global variable \definput. If \definput\ has the value \coreInfty\ then \texttt{f},\texttt{h} and \texttt{ j} will have the exact rational value $123/1000$. Otherwise, they will be represented by \BF\ numbers whose absolute error is at most $10^{- \tt m}$ where {\tt m = }\definput. Instead of using constructors, we can also read input numbers from streams. E.g., \begin{verbatim} Expr k; cin >> k; \end{verbatim} In this case, the input number literals are regarded as strings, and so the value of the variable \texttt{k} is controlled by \definput. \paragraph{Precision of Numerical Output.} Stream output of expressions is controlled by the precision variable stored in the stream {\tt cout}. Output will never print inaccurate digits, but the last printed digit may be off by $\pm 1$. Thus, an output of $1.999$ may be valid when the exact value is $2$, $1.998$, $1.9988$ or $1.9998$. But this output is invalid when the exact value is $1.99$ (since the last digit in $1.999$ is misleading) or $2.01$. Similarly, an output of $1.234$ is invalid when the exact value is $1.2$ or $1.23$. \paragraph{Output Number Formats.} We have two formats for approximate numbers: scientific and positional. But even when positional format is specified, under certain circumstances, this may be automatically overridden, and the scientific format used. For instance, if the output precision is $3$ and the number is $0.0001$ then a positional output would be $0.00$. In this case, we will output in scientific format as {\tt 1.00e-4} instead. Again, if the number is an integer $1234$, then we will output in scientific format as {\tt 1.23e+3}. In both cases, we see why the positional output (restricted to 3 digits) is inadequate and the scientific format (also restricted to 3 digits) is more accurate. See Appendix A.1.6 for details. One issue in numerical output is how to tell the users whether there is any error in an output or not. For instance, if you print the value of \texttt{Expr("1.0")}, you may see a plain \texttt{1.} (and not \texttt{1.0}). It is our way of saying that this value is exact. But if you print the value of \texttt{Expr(1.0)}, you may be surprised to see \texttt{1.0000}. Why the difference? Because in the former case, the internal representation is a \Rat\ while in the latter case is a machine \double. The latter is inherently imprecise and so we print as many digits as the current output precision allows us (in this case 5 digits). But in printing a \Rat\ we do not add terminal $0$'s. \paragraph{Interaction of I/O parameters.} It should be clear from the preceding that the parameters \defrel, \defabs, \definput, and (stream) output precision interact with each other in determining I/O behavior: \begin{center} \begin{tabular}{c} \begin{progb}{ \> \tt setScientificFormat(); \\ \> \tt setDefaultInputDigits(2); \ \ \ \ \ \ \ \ \ \ \ \ // defInputDigits = 2 \\ \> \tt Expr X = "1234.567890"; \\ \> \tt cout << setprecision(6); \ \ \ \ \ \ \ \ \ \ \ \ \ // output precision = 6 \\ \> \tt cout << X << endl; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ // prints .123457e+4 \\ \> \tt cout << setprecision(10) << X << endl; // prints .1234567871e+4 \\ \> \tt cout << setprecision(100) << X << endl; // prints .123456787109375000e+4 }\end{progb} \end{tabular} Program 3 \end{center} Note that since the input precision is set to $2$, the internal value of $X$ is an approximation to $1234.567890$ with an error at most $10^{-2}$. Thus the second output of $X$ printed some ``wrong digits''. In particular, the output $1234.567871$ contains $8$ correct digits. However, notice that our semantic guarantees only 6 correct digits -- so this output has given us 2 ``bonus digits''. In general, it is difficult to predict how many bonus digits we may get. Our convention for expressions is that all leaves are error-free and thus the output may appear strange (although it is not wrong). In fact, if we set the output precision to $100$, we see that expression $X$ is assigned the exact value of $1234.56787109375000$ (we know this because this output was terminated prematurely before reaching 100 digits). To force exact input, you must set \definput\ to $+\infty$: \begin{center} \begin{tabular}{c} \begin{progb}{ \> \tt setScientificFormat(); \\ \> \tt setDefaultInputDigits(\coreInfty); \\ \> \tt Expr X = "1234.567890"; // exact input \\ \> \tt cout << setprecision(6) << X << endl; \ \ // prints .123457e+4 \\ \> \tt cout << setprecision(10) << X << endl; \ // prints .1234567890e+4 \\ \> \tt cout << setprecision(100) << X << endl; // prints .1234567889999999999e+4 \\ \> \tt X.approx(CORE\_INFTY, 111); // enough for 33 digits. \\ \> \tt cout << setprecision(33) << X << endl; \\ \> \tt // prints 33 digits: .123456789000000000000000000000000e+4 }\end{progb} \end{tabular} Program 4 \end{center} % new for Core 1.4: \paragraph{Output Stream Precision.} Besides the output precision parameters for \BF, the above examples illustrate yet another parameter that controls output: namely the output precision parameter that is associated with output streams such as \texttt{cout}. This parameter as set using the standard \texttt{setprecision(int)} method of output streams. Core provides another way to do this, which is currently not entirely consistent with \texttt{setprecision(int)} method. % % TO MAKE IT CONSISTENT, WE ONLY NEED TO % modify "setprecision(int)" to update \defOutputDig\. % Namely, you can call the method \texttt{setDefaultOutputDigits(long p)} method. This method will perform the equivalent of \texttt{setprecision(p)}, but in addition updates the global parameter \defOutputDig\ to \texttt{p}. It returns the previous value of \defOutputDig. The initial default value of \defOutputDig\ is $10$. % \defOutputDig\ is normally set equal to defBFOutputPrec. \paragraph{Output for Exact and Inexact \BF\ Values.} A \BF\ is represented by a triple of integers $(man, exp, err)$ where $man$ is the mantissa, $exp$ the exponent and $err$ the error. This represents an interval $(man \pm err)\times B^{exp}$ where $B=2^{-14}$ is the base. When $err=0$, we say the \BF\ value is \dt{exact} and otherwise \dt{inexact}. For efficiency, we normalize error so that $0\le err\le B$. Since we do not want to show erroneous digits in the output, the presence of error ($err>0$) is important for limiting the number of \BF\ output digits. To illustrate this, suppose $B=2$ instead of $2^{14}$ and our \BF\ is $x = (man, exp, err)=(10, -5, 0)$, written here with decimal integers. Then \texttt{cout << setprecision(6) << $x$} will show $0.3125$. In general, we expect such a floating point number to have an error $B^{exp}=2^{-5}=0.03125$. Then $x = 0.3125 \pm 0.03125$. This suggests that we should not output beyond the first decimal place. To ensure this behavior, we can simply set the error component to $1$. The method to call is $x$.{\tt makeInexact()}, and as a result $x$ becomes $(man, exp, err)=(10, -5, 1)$. Now, \texttt{cout << setprecision(6) << $x$} will output only $0.3$. There is a counterpart $x$.{\tt makeExact()} that makes $err=0$. The Section on Efficiency Issues has related information on this. \paragraph{Connection to Real Input/Output.} Expression constructor from strings and stream input of expressions are derived from the \real\ constructor from strings. See Appendix A.2.1 and A.2.5 for more details. On the other hand, stream output of expressions is derived from the output of \BF\ values. See Appendix A.1.6 for this. \paragraph{String and File I/O.} Instead of input/output from/to a stream, we can also input/output from/to a string. The methods are called \texttt{toString} and \texttt{fromString}. These methods are available for the number classes \BF, \Int, and \Rat. For \real\ and \expr\ we only have the method \texttt{toString}. In place of \texttt{fromString}, you can directly assign (=) a string to \real\ and \expr\ variables. The directory \examplesdir\ contains examples of both string and file I/O. The need to read very large numbers from files, and to write them into files, is important for certain computations. Moreover, base for representing these numbers in files should be flexible enough to support standard bases for big integers (base 2, 10 and 16). Such a format is specified in \corepath\texttt{/progs/fileIO}. In particular, this format assumes that files are ascii based, for flexibility and human readability. Four basic formats are defined: \begin{center} Integer, Float, Normalized Float (NFloat) and Rational. \end{center} The following methods are available: \begin{center} \begin{tabular}{c} \begin{progb}{ \\ \> \tt void BigInt::read\_from\_file(istream is, long maxLen = 0) \\ \> \tt void BigInt::write\_to\_file(ostream os, int base = 10, long lineLen = 70) \\ \> \tt void BigFloat::read\_from\_file(istream is, long maxLen = 0) \\ \> \tt void BigFloat::write\_to\_file(ostream os, int base = 10, long lineLen = 70) \\ \> \tt void BigRat::read\_from\_file(istream is, long maxLen = 0) \\ \> \tt void BigRat::write\_to\_file(ostream os, int base = 10, long lineLen = 70) }\end{progb} \end{tabular} \end{center} There are two bases in the representation of a \BF, the base of the mantissa and the base for raising the exponent. We call these the ``mantissa base'' and the ``exponent base''. We view \Int\ as having only a mantissa base. In the above arguments, \texttt{base} is the mantissa base. The exponent base is defaulted to the internal base representation used by our \BF\ class (which is $2^{14}$). Also {\tt maxLen} indicates the number of bits (not ``digits'' of the input file base) to be read from the input file. The default value of {\tt maxLen = 0} means we read all the available bits. The {\tt lineLen} tells us how many digits should be written in each line of the mantissa. Note that when we read into a \BF\, and the base is 10, then this may incur an approximation but the error is guaranteed to be smaller than half a unit in the last digit. \paragraph{Conversion to Machine Double.} This is strictly speaking not a numerical I/O issue, but one of inter-conversion among number types. Such details are described under individual number classes (Appendix A). However, the conversion of our internal numbers into machine double values is an important topic that merits a place here. All our number classes has a \texttt{doubleValue()} method to convert its value to one of the two nearest machine representable double value. For instance, if \texttt{e} is an expression, we can call \texttt{e.doubleValue()} a machine double value. We do not guaranteed rounding to nearest but that this value is one of the two closest machine doubles (either ceiling or floor). See \progsdir\texttt{testSqrt.cpp} for some discussion of the conversion errors. It is also useful to convert an exact value into an interval defined by two machine doubles. The method \texttt{Expr::doubleInterval()} does this. It is important to realize that all these conversions to machine doubles may overflow or underflow. It is the user's to check for this possibility. The function \texttt{int finite(double)} can be used for this check: it returns a zero if its argument does not represent a finite double value (i.e., the argument is either NaN or infinity). \section{Polynomials and Algebraic Numbers} \label{sec-algebraic} Beginning in Version 1.6, we introduce arbitrary real algebraic numbers into expressions. For example, suppose we want to define the golden ratio $\phi= 1.618033988749894\ldots$. It can be defined as the unique positive root of the polynomial $P(X)= X^2 - X - 1$. We have a templated (univariate) polynomial class named {\tt Polynomial} where {\tt NT} is a suitable number type to serve as the type of the coefficients in the polynomial. We allow {\tt NT} to be \Int, \expr, \BF, \Rat, \lng\ or \int. Some \texttt{Polynomial} methods may not be meaningful or obvious for certain choices of {\tt NT}. For instance, many polynomial operations such as polynomial GCD depend on the concept of divisibility in {\tt NT}. But the notion of divisibility for \BF\ values may not be so obvious (but see Appendix A under \BF). For \Rat, we may take the position that divisibility is the trivial relation (every nonzero value can divide other values). But this will not be our definition. For \lng\ and \int, clearly coefficients may overflow. We regard \Int\ as the ``canonical'' number type for polynomial coefficients because all polynomial methods will be fairly clear in this case. Hence, our polynomial examples will usually take \texttt{NT}=\Int. First consider how to input polynomials. There is an easy way to input such a polynomial, just as the string \texttt{"x\^{}2 - x - 1"}. Currently, the coefficients from string input are assumed to be \Int. A slower way (which may be more appropriate for large polynomials) is to construct an array of its coefficients. \begin{center} \begin{tabular}{c} \begin{progb}{ \> \tt typedef BigInt NT; \\ \> \tt typedef Polynomial PolyNT; \\ \> \tt NT coeffs[] = \{-1, -1, 1\}; // coeffs[i] is the coefficient of $X^i$ \\ \> \tt PolyNT P(2, coeffs); \ \ \ \ \ // P = $X^2 - X - 1$ \\ \> \tt PolyNT Q = "x\^{}2-x-1"; \ \ \ \ // Q = $X^2 - X - 1$ }\end{progb} \end{tabular} \end{center} We use the polynomial {\tt P} to define an \expr\ whose value is $\phi$. There are two ways to identify $\phi$ as the intended root of {\tt P}: we can say $\phi$ is the $i$-th smallest root of {\tt P} (where $i=2$) or we can give a \BF\ interval {\tt I = [1, 2]} that contains $\phi$ as the unique root of {\tt P}. We may call the arguments $i=2$ or {\tt I}$=[1.0,2.0]$ the \dt{root indicators} for the polynomial {\tt P}. The other root of {\tt P} is $\phi' = 1-\phi$, and it has the root indicators $i=1$ or {\tt I = [-1.0, 0.0]}. \begin{center} \begin{tabular}{c} \begin{progb}{ \> \tt Expr phi1 = rootOf(P, 2); \ \ // phi1 is the 2nd smallest root of P \\ \> \tt BFInterval I(-1.0, 0.0); \ \ \ // I is the interval [-1, 0] \\ \> \tt Expr phi2 = rootOf(P, I); \ \ // phi2 is the unique negative root of P \\ \> \tt Expr Phi2 = rootOf(P, -1, 0); // Alternative }\end{progb} \end{tabular} \end{center} To test that {\tt phi1} and {\tt phi2} have the correct values, we can use the fact that $\phi+\phi' = 1$. This is done in the next code fragment. Alternatively, we can use the fact that $\phi$ and $\phi'$ are still quadratic numbers, and we could have obtained these values by our original {\tt sqrt} operators, e.g., $\phi= (1+\sqrt{5})/2$. However, we offer a convenient alternative way to get square roots, by using the radical operator. In general, {\tt radical(n, m)} gives the {\tt m}-th root of the number {\tt n}. Compared to the Version 1.6 the current version can handle any positive number type (\Int, \expr, \BF, etc.) for $n$. \begin{center} \begin{tabular}{c} \begin{progb}{ \> \tt if (phi1 + phi2 == 1) cout << "CORRECT!" << endl; \\ \> \tt else cout << "ERROR!" << endl; \\ \> \tt Expr goldenRatio = (1 + radical(5,2))/2: // another way to specify phi \\ \> \tt if (phi1 == goldenRatio) cout << "CORRECT!" << endl; \\ \> \tt else cout << "ERROR!" << endl; }\end{progb} \end{tabular} Program 5 \end{center} Recall that the constructible reals are those real numbers that can be obtained from the rational operations and the square-root operation. The new constructors {\tt rootOf} and {\tt radical} can give rise to numbers which are not constructible reals. It is possible to construct invalid \expr\ when we specify an inappropriate root indicator: when {\tt i} is larger than the number of real roots in the polynomial {\tt P}, or when {\tt I} contains no real roots or contains more than one real root of {\tt P}. We can generalize this by allowing root indicators that are negative integers: if {\tt i} is negative, we interpret this to refer to the ($-${\tt i})-th largest real root. E.g., if {\tt i} is $-2$, then we want the 2nd largest real root. Moreover, we allow {\tt i} to be $0$, and this refers to the smallest {\em positive} root. When the root indicator is completely omitted, it defaults to this special case. To support these methods, we define the Sturm class that implements Sturm techniques and Newton iterations. For more details, see Appendix A.4 (Polynomials) and Appendix A.5 (Sturm). \paragraph{Beyond univariate polynomials.} In Version 1.7, we introduce bivariate polynomials as well as algebraic curves. We provided basic functionality for doing arithmetic on curves as well as graphical display functions (based on openGL) are available. These may be found under \progsdir\texttt{/curves}. \section{Converting Existing \candcpp\ Programs} \label{sec-convert} Most of the following rules are aimed at making a Level 1 program compile and run at Level 3. So, this section might also be entitled ``How to make your \candcpp\ program robust''. \begin{enumerate} \item There is a \dt{fundamental rule} for writing programs that intend to call the \corelib: all arithmetic operations and comparisons should assume error-free results. In other words, imagine that you are really operating on members of the mathematical domain $\RR$ of real numbers, and operations such as $+, -, \times, \div, \sqrt{}$ return exact (error-free) results. Unfortunately, programs in conventional programming language that have been made ``numerically robust'' often apply tricks that violate this rule. Chief among these tricks is \dt{epsilon-tweaking}. Basically this means that all comparisons to zero are replaced by comparison to some small, program-dependent constant (``epsilon''). There may be many such ``epsilons'' in the program. This is a violation of our fundamental rule. Perhaps the simplest way to take care of this is to set these epsilons to $0$ when in Level 3. There is only one main concern here. When comparing against such epsilons, most programmers do not distinguish between ``$\le$'' and ``$<$''. Often, they exclusively use ``$<$'' or ``$>$'' in comparisons against an epsilon. E.g., ``$|x|< \varepsilon$'' is taken as equivalent to $x=0$. If you now set $\varepsilon$ to $0$ in level 3, it is clear that you will never succeed in this test. Note that in \candcpp\ the usual function for absolute value is \texttt{fabs(x)}. This function will also work correctly in Level 3. \item In your code that follows the preamble \begin{verbatim} #define CORE_LEVEL 3 #include "CORE/CORE.h" \end{verbatim} \noindent you must remember that the built-in machine types \double\ and \lng\ will be replaced by (i.e., promoted to) the class \expr. An analogous promotion occurs at Level 2. If you do not want such promotions to occur, be sure to use {\tt machine\_double} and {\tt machine\_long} instead of \double\ and \lng, respectively. If you are including a standard library, it is important to ensure that such promotions are not applied to your library. An example is the standard \cpp\ library \texttt{}, when you need to perform file I/O in a \core\ program. Therefore such libraries should be placed before the inclusion of \texttt{CORE.h}. \item All objects implicitly (e.g.\ automatically promoted from \double) or explicitly declared to be of type \expr\ {\em must} be initialized appropriately. In most cases, this is not a problem since a default \expr\ constructor is defined. \expr\ objects which are dynamically allocated using {\tt malloc()} will not be initialized properly. You should use the {\tt new} operator of \cpp\ instead.\\ \begin{progb} { \> \tt double *pe, *pf;\\ \> \\ \> \tt // The following is incorrect at Levels 2 and 3:\\ \> \tt pe = (double *)malloc(sizeof(double));\\ \> \tt cout << *pe << endl;\\ \> \tt // prints: Segmentation fault\\ \> \tt // because the object *pe was not initialized properly \\ \> \\ \> \tt // This is the correct way:\\ \> \tt pf = new double();\\ \> \tt cout << *pf << endl;\\ \> \tt // prints "0" (the default value) }\end{progb} \item The system's built-in printf and scanf functions cannot be used to output/input the \expr\ objects directly. You need to use \cpp\ stream I/O instead. \begin{progb}{ \> \tt double e = sqrt(double(2)); \\ \> \tt cout << e << endl; // this outputs 1.4142... depending on current \\ \>\>\>\tt // output precision and default precision for evaluation \\ \> \tt cin >> e; // reads from the standard input. }\end{progb} Since we can construct \expr\ objects from strings, you can use \texttt{scanf} to read a string value which is then assigned to the \expr\ object. Unfortunately, current implementation does not support the use of \texttt{printf}. \begin{progb}{ \> \tt char s[255]; \\ \> \tt scanf("\%s", s); \\ \> \tt double e = s; }\end{progb} \item Variables of type \int\ or \float\ are never promoted to \expr\ objects. For example, \begin{progb}{ \> \tt // set Level 3\\ \> \tt int i = 2;\\ \> \tt double d = sqrt(i); \\ \> \tt double dd = sqrt(2); }\end{progb} \noindent The two {\tt sqrt} operations here actually refer to the standard {\tt C} function defined in math.h, and not our exact {\tt sqrt} found in the \expr\ class. Hence {\tt d} and {\tt dd} both hold only a fixed approximation to $\sqrt{2}$. The exact value can not be recovered. Here is a fix: \begin{progb} { \> \tt // set Level 3\\ \> \tt int i = 2;\\ \> \tt double e = i; \ \ \ \ \ \ \ \ \ \ \ \ \ // promote i to an \expr\ object\\ \> \tt double d = sqrt(e); \ \ \ \ \ \ \ // the exact sqrt() is called.\\ \> \tt double dd = sqrt(Expr(2)); // the exact sqrt() is called. }\end{progb} Users may work around this problem by defining the following macro~: \begin{progb} { \> \tt \#define sqrt(x) sqrt(Expr(x)) }\end{progb} \core\ does not define this since it may be risky for some programs. \item In Level 3, constant literals (e.g., 1.3) or constant arithmetic expressions (e.g., 1/3) are not promoted. Hence they may not give exact values. This can cause some surprises: \begin{center} \begin{tabular}{c} \begin{progb} { \> \tt double a = 1.0/3; \ \ // the value of a is an approximation to 1/3\\ \> \tt double b = 1.3; \ \ \ \ // the value of b is also approximate\\ \> \tt // To input the exact value of 1/3, do this instead: \\ \> \tt double c = BigRat(1, 3); // sure way to get exact value of 1/3\\ \> \tt double d = "1/3"; \ \ // sure way to get exact value of 1/3\\ \> \tt double e = "1.3"; \ \ // the global \definput\ should be\\ \>\>\tt \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ // $+\infty$ in order for e to be exact. }\end{progb} \end{tabular} Program 6 \end{center} \item Note that since all the \double\ and \lng\ variables would be promoted to \expr\ class during the \candcpp\ preprocessing, certain \candcpp\ semantics does not work in Level 3 anymore. For example, a typical \candcpp\ idiom is the following: \begin{progb} { \> \tt double e;\\ \> \tt if (e) \{ \ldots\ \} }\end{progb} \noindent The usual semantics of this code says that if the value of {\tt e} is not zero, then do \ldots . Since {\tt e} is now an \expr\ object, you should write instead: %% it does not make sense to test whether it is %% zero or not. What you really want to test is whether the value represented %% by e is non-zero.\\ \begin{progb} { \> \tt double e;\\ \> \tt if (e != 0) \{ \ldots\ \} }\end{progb} \ignore{ We can view this as another example of violating the fundamental rule about treating all numbers as exact -- make sure the number API you use is befitting ``real numbers''. } \item Use of standard mathematical functions can be handled in two ways. Note that such functions are typically those found in \texttt{math.h}. Among these functions, only \texttt{sqrt()} is fully supported in Level 3. The other functions such as \texttt{sin()}, \texttt{cos()}, \texttt{exp()}, \texttt{log()}, etc, are not available in Level 3. If your program uses these functions, you can invoke the functions of \texttt{math.h} by explicitly converting any Level 3 number to machine double as argument: \begin{progb} { \> \tt double e = sqrt(2); \\ \> \tt double s = sin(e.doubleValue()); // this invokes sin() in math.h }\end{progb} Thus we invoke the \texttt{Expr::doubleValue()} method to get a machine double value before calling the sine function. All our number types have an equivalent \texttt{doubleValue()} methods. The second way to call these mathematical functions is to use our hypergeometric package which computes these functions to any desired absolute precision. These functions are found under \progsdir/\texttt{hypergeom}. \end{enumerate} \section{Using CORE and CGAL} \label{using-with-cgal} The \cgal\ library (Computational Geometry Algorithm Library, \texttt{www.cgal.org}) provides a rich set of geometric primitives and algorithms. These primitives and algorithms are all parametrized (templated) to receive a variety of number types. In particular, you can use \core\ number types. We recommend using Level 4, and that you directly plug \texttt{CORE::Expr} as template parameter of any CGAL kernel~: \begin{progb} { \> \tt \#include // From CGAL\\ \> \tt \#include "CGAL\_Expr.h" // From CORE\\ \> \\ \> \tt typedef CGAL::Cartesian Kernel;\\ \> \tt ... }\end{progb} \noindent \core\ provides some additional functions in the file \texttt{inc/CGAL\_Expr.h}, which are required by \cgal, so you should include this file in your program. This file sets the {\tt Level} to 4 and includes \texttt{CORE.h}. Some example programs may be found under \examplesdir\texttt{/cgal}. \corelib\ is also distributed under \cgal\ by {\tt Geometry Factory}, the company that distributes commercial licenses for \cgal\ components. \section{Efficiency Issues} A Level 3 \core\ program can be much less efficient than the corresponding Level 1 program. This applies to efficiency in terms of time as well as space. First, Level 3 arithmetic and comparison can be arbitrarily slower than the corresponding Level 1 operations. This is often caused by root bounds which may be far from optimal. Second, \expr\ objects can be arbitrarily larger in size than the corresponding machine number representation. This inefficiency is partly inherent, the overhead of achieving robustness in your code. But sometimes, part of this overhead not inherent, but caused by the way your code is structured. Like any library, \corelib\ gives you the freedom to write arbitrarily inefficient programs. In programming languages too, you can also write inefficient code, except that modern optimizing compilers can detect common patterns of suboptimal code and automatically fix it. This is one of our research goals for \corelib. But until now, automatic optimization has not been our primary focus. This forces users to exercise more care. The following are hints and tools in \corelib\ that may speed up your code. Level 3 is assumed in the following. \paragraph{Ways to Speed Up your code.} \begin{itemize} \item Share subexpressions. This requires developing an awareness of how expressions are built up, and their dependency structure. Thus, in comparing $E_1=\sqrt{x}+\sqrt{y}$ with $E_2=\sqrt{x + y + 2\sqrt{xy}}$ (they are equal for all $x, y$), you could share the $\sqrt{x}$ and $\sqrt{y}$ in $E_1$ and $E_2$ as follows: \begin{progb} { \> \tt double x, y, sqrtx, sqrty; \\ \> \tt cin >> x; cin >> y; // read from std input\\ \> \tt sqrtx = sqrt(x); sqrty = sqrt(y);\\ \> \tt double E1 = sqrtx + sqrty; \\ \> \tt double E2 = sqrt(x + y + 2*sqrtx * sqrt y); \\ \> \tt if (E1 == E2) cout << "CORRECT!" << endl; \\ \> \tt else cout << "ERROR!" << endl; }\end{progb} See \texttt{prog12.cpp} in in \corepath\texttt{/progs/tutorial} some timings for shared and non-shared versions of this example. \item Avoid divisions in your expressions if possible. Note that input numbers that are not integers are rational numbers, and they implicitly invoke division. But a special class of rational numbers, the $k$-ary numbers (typically, $k=2$ or $10$) can be quite effectively handled using some new techniques based on the so-called ``$k$-ary root bounds''. \core\ Version 1.5 has implemented such binary root bounds ($k=2$). \item Be aware that a high algebraic degree can be expensive. But it is just as important to realize that high algebraic degree by itself is not automatically a problem. You can add a hundred positive square roots of integers, and this algebraic number may have degree up to $2^100$: \begin{verbatim} Expr s = 0; for (int i=1; i<=100; i++) s += sqrt(Expr(i)); \end{verbatim} You can easily evaluate this number \texttt{s}, for example. But you will encounter trouble when trying to compare to such numbers that happen to be identical. \item Sometimes, use of expressions are unnecessary. For instance, consider\footnote{ We are grateful for this example from Professor Siu-Weng Cheng. In his example, the points $p_i$ are 3-dimensional points on the surface of a unit sphere, which has been computed. So the coordinates of $p_i$ are complex expressions involving square roots. Since we are sure to have a true equality comparison in this application, the resulting code was extremely slow using the known root bounds, circa year 2000. } a piece of code which iterates over members of a circular list of points until it reaches the starting member. If the circular list is $(p_1, p_2,\ldots, p_n)$, and you start at some point $q=p_i$ in this list, you would normally think nothing of checking if $q = p_j$ to check if the entire list has been traversed. But this can be very inefficient. In this case, you should simply compare indexes (check if $i=j$), as this does not involve expressions. \item Avoid unbounded depth expressions. A well-known formula \cite{orourke:bk} for the signed area of a simple polygon $P$ is to add up the signed areas of each triangle in any triangulation of $P$. If $P$ has $n$ points, you would end up with an expression of depth $\Omega(n)$. If $n$ is large, you will end up with stack overflow. Even if there is no overflow, comparing this expression to zero (to get its sign) may be too slow. This example arises in an actual\footnote{ % SHOULD CITE HIS PAPER! We are grateful to Professor Martin Held for this example. } software called FIST (``Fast Industrial-Strength Triangulation'). FIST is routinely tested on a database of over 5000 test polygons, some of which have up to 32,000 points. FIST uses the above formula for signed area, and this is too slow for Core Library (version 1.5) on 32,000 points (but 16,000 points can be handled). Although it is possible to avoid computing the signed area when the input polygon is simple, the signed area heuristic is critical for achieving the ``industrial strength'' properties of FIST. That is, the signed area approach allows FIST to produce reasonable triangulations even for ``dirty data'' (such as non-simple polygons). One solution in this case is to compute the signed area approximately. In fact, machine precision approximation is sufficient here. If more precision is needed, we can use Level 2 numbers (\BF). \item Sometimes, \BF\ can be an adequate substitute for expressions. For instance, if you are computing very high precision approximations of a number, or maintaining isolation intervals of a number you should use \BF\ for this purpose. For examples, see our implementation of Sturm sequences in the distribution. Here are some useful tips. First, it is important to know that \BF\ carries an error bound, and you should probably set this error to zero in such applications. Otherwise, this error propagates and you loose more precision than you might think. For this purpose, the following methods are useful to know: If $x$ is a \BF\ variable, you can find out the error bits in $x$ by calling $x.{\tt err()}$. You can test if the error in $x$ is $0$ by calling $x$.{\tt isExact()}, and if you want to set this error to zero, call $x$.{\tt makeExact()}. Sometimes, you need upper or lower bounds on the interval represented by an inexact \BF\ value. In this case, you can call \texttt{makeCeilExact()} or \texttt{makeFloorExact()}. On the other hand, the inverse method $x$.{\tt makeInexact()} will set the error to 1. This is useful for preventing garbage digits from being printed. For more information, see the file \texttt{BF\_output.cpp} in the tutorial directory. Such error bits are positively harmful for self-correcting algorithms such as Newton iteration -- they may even prevent Newton iteration from converging. Note that the expression $x/2$ may not return an exact \BF\ value even if $x$ is exact. If you want exact result, you must call the method $x.{\tt div2()}$. This is useful when you use the \BF\ values for interval refinement. To get your initial \BF\ value, one often computes an expression $e$ and then call $e$.{\tt getBigFloat()} to get its current \BF\ approximation. See Appendix A.1.7 for more information. \item A huge rational expression can always be replaced by an expression with just one node. This reduction is always carried out if a global Boolean variable called \texttt{rationalReduceFlag} is set to true. You can set this flag by calling \texttt{setRationalReduceFlag(bool)}, which returns the previous value of the flag. For instance, when this flag is true, the time to run ``make test'' for CORE 1.5 programs takes 1 minute 46.4 seconds; when this flag is false, the corresponding time is 35.9 seconds. Hence we do not automatically turn on this flag. On the other hand, setting this flag to true can convert an infeasible computation into a feasible one. Prior to CORE 1.6, the pentagon test (\texttt{progs/pentagon/pentagon.cpp}) is an infeasible computation unless we use the escape precision mechanism (see below). But with this flag set to true, this test is instantaneous. Another more significant example is Martin Held's FIST program -- without this flag, his program will not run with 3D data sets, crashing because of stack size problems. \ignore{ We implement above by introducing a variable ratFlag in each node. We have: ratFlag < 0 means irrational, ratFlag=0 means uninitialized, and ratFlag > 0 means rational. Currently, ratFlag is an upper bound on the size of the expression, i.e. ratFlag(node)=ratFlag(children)+1. This would be useful when we introduce transcendentals... } \end{itemize} \paragraph{The Problem of Inexact Inputs.} A fundamental assumption in EGC is that inputs are exact. Even when the application does not care for exactness, we must treat the input as ``nominally exact''. This assumption may fail for some Level 1 programs. Handling such conversions will depend on the application, so it is best to illustrate this. An example is the FIST software above. Although the basic FIST software is for triangulating a 2-dimensional polygon, it is also able to triangulate a 3-dimensional polygon $P$: FIST will first find the normal of $P$ and then project $P$ along this normal to the $xy$-plane. The problem is thus reduced to triangulating a 2-dimensional polygon. In practice, the vertices of $P$ are unlikely to lie in a plane. Hence, the ``normal'' of $P$ is undefined. Instead, FIST computes the average normal for each triple of successive vertices of $P$. % For instance, when $P$ is % a pentagon, this results in a normal whose coordinates are expressions % with over $100$ nodes; the projected coordinates of $P$ involve much % expressions with up to $119$ nodes. The algorithm will further sort the coordinates of the projected points in order to remove duplicate points. This sorting turns out to be extremely expensive in the presence of duplicates (since in this case, the root bounds of the huge expressions determine the actual complexity). In fact, FIST could not handle this data under CORE 1.5. It turns out that if we apply the simple heuristic (within CORE) of reducing all rational expressions into a single node, the above data could be processed by FIST without any change in their code, albeit very slowly. This heuristic is available from CORE 1.6 onwards. As an industrial strength software, FIST must introduce such heuristics to handle inexact data. To greatly improve the speed of FIST it probably best to change the logic of its code. For instance, we suggest converting the average normal into an approximate floating point representation. If we further want to preserve the principle that ``exact inputs should produce exact solutions'', then we can further make FIST to first check that $P$ is actually planar. If so, the normal can be determined from any three non-collinear vertices and hence completely avoid large expressions. Otherwise, it can use the approximate floating point representation. \paragraph{Precision Escape Mechanism.} It is useful to have an escape mechanism to intervene when a program does not return because of high precision. This is controlled by the following two global variables with default values: \begin{progb} { \> \tt extLong EscapePrec = CORE\_INFTY; \\ \> \tt long EscapePrecFlag = 0; \\ }\end{progb} When {\tt EscapePrec = CORE\_INFTY}, the escape mechanism is not in effect. But when {\tt EscapePrec} has a finite value like $10,000$, then we evaluate the sign of a number, we will not evaluate its value to an absolute precision that is more than past $10,000$ bits. Instead, the {\tt EscapePrecFlag} will be set to a negative number and we will \dt{assume} that the sign is really zero. Users can check the value of this flag. This mechanism is applied only in the addition and subtraction nodes of an expression. An example of this usage is found \corepath{\tt /progs/nestedSqrt}. When this mechanism is invoked, the result is no longer guaranteed. In practice, there is a high likelihood that the \dt{assumed} zero is really a zero. That is because root bounds are likely to be overly pessimistic. \paragraph{Floating Point Filter.} It is well-established by recent research that floating point filters are extremely effective in avoiding costly big number computations. We implemented the floating point filter of Burnikel, Funke and Schirra (BFS). Note that our implementation, to achieve portability, does not depend on the IEEE floating point exceptions mechanism. This filter can be turned off or turned on (the default) by calling the function \texttt{setFpFilterFlag(bool)}. \paragraph{Progressive and Non-progressive Evaluation.} Users can dynamically toggle a flag to instruct the system to turn off progressive evaluation by calling {\tt setIncrementalEvalFlag(false)}. This feature may speed up comparisons that are likely to have equality outcomes. In applications such as theorem proving (see \cite{tyl:zero-test:00}), this may be the case. However, it does not automatically lead to better performance even when the comparison result is an equality. The reason is that when we request a certain number of bits of precision, the system return a higher precision than necessary. Hence progressive evaluation may be able to achieve the desired root bound even though a lower precision is requested, while going straight to the root bound may cause significant overshoot in precision. To turn back to progressive evaluation, call the same function with a {\tt true} argument. \section{\corelib\ Extensions} We plan to provide useful \corelib\ extensions (\corex\ for short). In the current distribution, we included two simple \corex's, for linear algebra and for geometry, which the user may extend to suit their needs. The header files for these \corex's are found in the files {\tt linearAlgebra.h}, {\tt geometry2d.h} and {\tt geometry3d.h} under the \includedir. To use any of these \corex's, just insert the appropriate include statements: e.g., \begin{center} {\tt \#include "CORE/linearAlgebra.h"} \end{center} Note that {\tt geometry3d.h} and {\tt geometry2d.h} already includes {\tt linearAlgebra.h}. The source for the extensions are found under \extdir. The {\tt linearAlgebra} extension defines two classes: {\tt Matrix} for general $m \times n$ matrices, and {\tt Vector} for general $n$-dimension vectors. They support basic matrix and vector operations. Gaussian elimination with pivoting is implemented here. {\tt Geometry3d} defines classes such as 3-dimensional {\tt Point}, {\tt Line} and {\tt Plane} based on the linear algebra API, while {\tt geometry2d} defines the analogous 2-dimensional objects. The makefile at the top level automatically builds three versions of the \corex\ libraries, named {\tt libcorex++\_level1.a}, {\tt libcorex++\_level2.a} and {\tt libcorex++\_level3.a}. If you use the \corex\ classes in your own program, it is important to link with the correct library depending on the accuracy level you choose for your program. See examples under \examplesdir\ which use both versions of the \corex\ library (in particular, \examplesdir {\tt /geom2d}, \examplesdir {\tt /geom3d}, and \examplesdir {\tt /determinant}). \section{Miscellany} \paragraph{Invalid Inputs.} Core will detect the construction of invalid inputs: this include NaN or Infinity for machine floats and doubles, divide by zero and square root of negative numbers. The normal behaviour is to print an error message and abort. But you can set the \texttt{AbortFlag} to false if you do not want to automatically abort. In this case, you can check if the \texttt{InvalidFlag} is negative. It is your responsibility to reset this \texttt{InvalidFlag} to a non-negative value. \paragraph{Debugging.} You can output the innards of an expression by calling the method \texttt{Expr::dump()}. But these may not be comprehensible except for the experts. You can print error or warning messages by calling \texttt{core\_error()}, and these messages will be written into a file \texttt{Core\_diagnostics}. \paragraph{Variant Libraries.} It is often useful to store variants of the library simultaneously. For instance, besides the normal library {\tt libcore++.a}, we may want to use a variant library called {\tt libcore++Debug.a} which has information for the debugger, or some other variant which implement some new techniques. In our {\tt Makefile}s, we use a variable {\tt VAR} whose value {\tt \$\{VAR\}} is normally set to the empty string. This variable is defined in the file \corepath{\tt /make.config}. To produce a debugging version of the library, set this variable to the string "{\tt Debug}". Then, in the \srcdir, type ``{\tt make}'' to automatically create the library {\tt libcore++\$\{VAR\}.a} which will be put in \libdir\ as usual. Finally, to use the debugging version of the library, call \gpp\ with the library option {\tt -lcore++\$\{VAR\}} instead of {\tt -lcore++}. \section{Bugs and Future Work} \label{sec-problems} The ability of a single program to access all of four accuracy levels has not been fully implemented. Currently, support for Levels 2 and 4 is fairly basic. Absolute precision in Level 3 is not optimized: the system always determines the signs of expressions, which is sometimes unnecessary. It would be useful to extend \expr\ to (1) allow interval values in leaves and (2) construct real roots of polynomials whose coefficients are expressions (i.e., diamond operator). % and approximate values are always in \BF. We started to address many of the I/O issues raised in previous versions: number formats (scientific, positional, rational), the ability to read and write from files, especially in hex. But there is room for improvement. Bivariate polynomials and plane algebraic curves were introduced in Version 1.7, and are expected to be developed over the next versions. \ignore{ Input and Output can be further improved. (1) There are 2 number formats for inputs and outputs: scientific and positional. One should allow a third format, for rational number input and output (e.g., $1/3$ should be available instead of $0.333\ldots$). (2) One should be able to read and write outputs in hex notation, thus avoid the expense of converting between binary and decimal representations. This is useful for computation with transcendental functions which can be sped up by table lookup of high precision constants. (3) It would be nice to be able to force ``exact'' output when possible (essentially, allow output precision to be $\infty$). Irrational values will be printed with some form of indication (e.g. trailing dots to indicate irrational value: $1.41421356...$) but rational values will be printed in rational form. This means our system will need to detect when a value is actually rational. (4) We should be able to input and output \expr\ and \real\ objects using some character string format. } Future plans include better floating point filters, % (including avoiding any root bound computation until these fail), special determinant subsystem, optimized Level 2, optimized implementation of absolute precision bounds, complex algebraic numbers, incremental arithmetic, more efficient root bounds, expression optimization (including common subexpression detection), expression compilation for partial evaluation, transcendental functions, templated versions of Linear algebra and geometry extensions, graphical facilities, enriched \corex's. We would like to hear your suggestions, experience and bug reports at \mbox{\tt exact@cs.nyu.edu}.\\ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % APPENDIX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \input{appendix.tex} % Classes reference \input{appendix_b.tex} % Example \input{appendix_c.tex} % Brief History %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage {\small \bibliographystyle{abbrv} \bibliography{tutorial} } \end{document} core++-1.7/doc/papers/0040755000175000001440000000000010147210064014026 5ustar joachimuserscore++-1.7/doc/papers/brown.ps.gz0100644000175000001440000015057007443425527016166 0ustar joachimusers9brown.ps[w$Ǒ% Y5*UO!"@(@2?{GPEU@f"3.۶_wo/WEgw:';t~<}ߝ|uvq8?9ڟ|}w~xuڿ:{®W'o~MϮ:/^ݽ8^~Ia5ꓗwWX޾is:{nU,^W1V_nwW'_ s$\/OoϿ`/|o'.u/ɗݝ|><ޟ>ܜ=Ğ}p?Ot͗Ww7?ﶪo͛/Ik8\eXwg=\ ?ݼ<ڝ~WKDlaN ެ{NÇ{^MƳyں$]\_}{)=p C O޿99{pR*`_pywvsĀ7+b;n>&n.g(4_֛M! a'Eߞ=~D/nMfOoob{=|xvN2=va]nӻI»췚k;ۯ''_olqtrv >g{Ob>|<ͷw'6/_ݝ|^ۏ7wgv+6bl|c`...m/ʞ]M xmcL cÓݽwR`0u?.?؃35oOj>z}牿z.bٝ|)?xo7?~0oMw72o. i~c9\H_s߿/H͇!ů9ǒ<|oybu#}A=Vt\w!'>'>'Rq:6J$zp?x l}*:8dy9[/򋻓طd:OlcxN_N+w'v:MrÇEq]^PJN]Fʻݽe.p.sҟ$QWpG샸lu\íߛa{}5bZ{\Cگ^Jq`L4ɍlRYW] 3=utV>e/|mE-pƻƷ>_M3'1I`{/773l] Cl?=N0.{w Ďѷ!ٲbGk`$V C:* 2vIsz&Gc2l}څ,;q[<.'?R~O6RV:R}Xޢb/!:<F*œ,>VTSNAZv={GW' |dzތhͿc~cbX%֝=K(1Vח"g ֣) ELKv]L}pK[Z\y6A>Z2փYEs,탃]Ϻ8Ld]ck.P-,]bc6y,6zu/>8:C C밌q){ξRŮ7uei{3`3ȫ"PP`÷)G hncW1&MRSxٖw}]l0K{QN|m<7ݚ?LKl#"<_;V4ij >\mN!TVдfҕYybe칿q^Li#{iG>А|d:V0͉#g}g7#)po;{]^Ʌ+i̕\q_q|6|"tRuv's˓:YL#G ig R/l汯vM0Ctl 8,l\0[ܬvQ\', +&Ԛgv`G?l/DY1P}ӂ{-μfzʺjw]j_m=h'Z*M 9v- ;v82rx10BCIǃ+ĢYG b5f*b`LBՍx=neٳ6ې&6c9G`%>V^_X ޥẘ[i3TyTlB]ݷ&^x C¾j HMc= ?NgbKYTx߅|Հ5j4Fm'l dHl"w3mG&#fO ƖΨD=ѾDl[܁ WGkCB&6 )Ce*&ؚ<^د,o lUmk1Zص)ٙmK3΄f} ŋ5Ƕc8NZGzTZӤm5udGCa3wf◘g"gA{aPɡQNM,kĮˏ~y>ĩ5 Wgب[o]nd /C6 TvE^7ٙ3 | f$L8+m6>ۢ5ma߷?yBa7V-͕1mLrїuˠؘ$lNl S+LX[jyE1ћ2 pF>ۗ2YxffU)ao4 tTM l>v6I )(AvδiFFP[~jv\XZtvB8ۨi^gK[IO`Im!Ɨ'u})GO3áZV"C)Ƹ2Ulqhvf_SޕŅa   QCl,zmAi|+x#5>0E5 UpLkXioEۦ&D Ԗ2pb^ ]]XrߥC},Jˍh% [zZfӎa-7sGdX @_#lٷB=5TIXl "ʌsia7#o,51.csg+Nӊ6tmc (nsl;i*zdj gBJ_eoW)JKAj }X2B`x0̬vuc>Y^ǖ®bPѾdt4/Yk$L2`) '0zx$vCeYӔ-m`xwf!r?Fm]w3BS+ 0L[.Ռߜ`t'E1<@KYiuU&4y:)[Qc&5 L1JatF FEb^*{,IpQiC)*! vZp-|Z ׳ٝ\e5]jWa 5ꉱӞ5 ȟdق?,,鍌:Tc'*rBny&078<:,ax)$nLo[C:?ZD̰iP&ŠP0^γ>k#M6WG2Mm{оNܾz==Qͧ)3P&نeyQ7̲vC),JEI7"w~~4RAKVɶ+~A`[gKScZt3 Eɴ8ø *190قَR*qj;)e|pAM97A{FqwP&fhdt eM6T&9ɊWv10(6a{apȸ޵IfR nj.GS.җ8  12 ;1 ƒyŒuH`o pSX*\6fPnP}$ى] m[ 03!!dXD/?ݙ q;" G%"oxfQ,C`c YoԱ:e!Ur>hY;D5'%<)3ZE%{G[B%t -;LކBe\1Sc2(dmd@Cw5!!Ԛrq3#') zv]zH!olaqa@]2}1jM h FNa+;v0P ~ uOUEY=&y33֎BFTgyt_dvہJK)D|hWrЬKDsނOAT,#1ы%)C4.̖5THuhNdh)rS K)0frgD;?W c73QpBceAE]`QXt97.ٙ6ھ@\.yݙZT/l.P35mvs!;Xdf K/̻03& aAY+}1njtEi=FUiۦJZ&'WQ1C ى Ѫ&4_=2Qa q{:19^Sy_ QƇ-" @]V O!PhRc.!(NцLPSǠ-'E!A";bGC i9) 0Lj01*2c3 3]09]DT(B|k%db,4c3c/escX;#VB,WA"s-ʃ-[X&3/@Pd/nd ~Gr]$q7؄e Sl#`'&hBқ*w 6mqiVr9:= iڸj_Yq22i/ V!&? Pۄ$T `*Z KvM2?B%w6h 6K _Tgg+<D{vf7acљ͑lM38@d4ЦYkT=CdKBX3E$Ηrgq x cjrB@q ~&xލQL).Z>A?zxQZ ҨC$dK؞iQ䨣t-fku2ksEйIҒ>? >* 8%W2mIcMoWSL;("LHhg1S2F_ I6CO/=i!(ՌS@0}ډެ-ĚlH".r+V O>RA#3XBTIτ5a}eE~Uukdxah*/kN8 \YΩ4 !**2)*gg8Cm[O,<Δ>hi@!-Bno쥩XI)|1q3N2FEFȂu% Hx:r$"0WJI ʛШؿ <C"NJ!p S޲(3C8QgK>G(( q}DTVb(Ӵݵq']/TDG[zVN,'ffnh$l0kx k,*?EPFD[hB ׵NkgtwYJG6e9hUVjL$22^taM,eP1hBWj=2:ߥY \/ f)ZQĨvՏJ93CaKԨ|;G"~U*'LndЩ+:Mʶv bh&.ۑFyT r%797*Km{ݴ$pXMN\0/X4m*0s켬[ bv\3S$} 97tU(S ]qY\0hھXi1&˱mtQ" ?J)XU͚9v1jpzOKBL]<>W]FU=*-\R㞦JMglRB.^(e7]wi z`CJ"LCD5!W݆=DjĀ +cl!T ZPf+Q:[^gZvY:-yX)2AsFS;,{mFF =@sSf@a!>ngMՊ<}SJfT]@27h [ S E I/`ّ#~Qv^CUİ*"~゚_p24/p"}˔PPf1'!3I4^$ 9p"ʅ$:)0<JY."1uE W]_60; C4t\ȐKh ̆SX0 Imb.%o,=Im%a eN-& fX["&߿7KۘaS<;BB'xLYS~3V{lO7&uD@?obDŧ=@[Ӂ| q>#4X:lOZlm,NDEw.{$0D'Ȥ&c'<BY ҨFڏ!<#dXr>äo4J"[l 'L 3*)(rԍC UAO_9ѣ}"#'ohfi.+Dd6&f5L`1Pނ;ͧBc`0IߘKWyۣ(>Eu'^EmM*uSp)pȢu^$2I?kҸcՔzY7hGƇ6"'h@k"Wwsn!dZdmo~Wl;dv]Q$[3M[3ЊEwS#$Z&C $keY[f]:ts y@=x) XL:md)/r 3 Nv.P._{%)Pg2:<̛F% n,i:]-Q\1X.GgaxԘAG'A8M ;bA K~g xutgaȻO00]\;I{9&'3iquBΖ6E1#J{c]&i*\t*zKE!X.T4mլ77M!Q՝6$@rMI*tA U$guf;{s+A᭧8x43[Y%iO5[٠hhҐ!q"g=J j_w&hZA b=ifܶYlNs= ~ZVh~{IFiXVfc8jdA\:$E8svQZae8ic"3x2yP3aF'[ Xb"I͠IIdЗL Lbbrlsy+9Yxldaqj f< 5g"PdPGus r T ( M ɱ3N_n^'  }vr2I(}`Ge"(k4ix(Ӡ FU ƭ违;A޿ X bN, t`T=3V ®_B\OxʸIqj&ECЫKΒ9+ O_/}e*^X-̼lf7` ȣ9@5b wGW9b3cS$H%ġnݥeRZC;y+ֿꢡnJbC5X9nSTteeQT79 J`˴ 3a kt&_5bCDDw]&*AwJ2%!YpoZ/nX)ְZy(s4h!G[ml1k;N @H-p+4yk݇KxfubރfA2:䄖|rg".m**Պ΍t8^+`,0Ne KrG0\͋1Zbp " ҟQ %fQɷR8k %z!tJS3a;^ fX衛 d&.0mH@~^Cц&kEՐ#-̈́Wx"c="ӮW= Њ.X8;鴡,S ƙ4Ö[c>Jh5f.6-9Fn3Uu:ؑGBdpbBT(nҮލPA;;kGL oma&9ܢ<#;FPdk wWՃK#aH[3wܳzBJIu8K}2I-:ҒHQ0v*Hq#Y(۩bavFfBdvLA G3:?0{I|FFC)xY'*=Bӹ$%!d'"NaZ4(T|\QY: ,*8؝oI /*-ʴ*3YaAK 4"=bֱoCjm"2SoQC=%`"G}b "..yƩRsS* FK([:pj@eڼ(Q7Tn I1ZtT2TDZC `Y3)lيB'gzC?#T2vAl-PiZ^*Y+e\i S":1Haą@Z[uE N.3\;y?QZBZ󞱖R 83tYd5Cðz6.auy|wo9V/K^UIFis-`Q6XX1achT4p}0D#pC; t6`ZEGPa*Ĩ3бX-0<9@_h"% `)6/"gz>nUR$+5$fT[r?6},z?Xߕ& k0 Y&(ݘTL8#8jg; T"0L] (V8] ,LĴ'q:G"* ^5CT a mgdvYܜ~TQ+=%*1GM:{‚C#"{dH G1l8\][rpՋ\3ꉝMNCOdC~l\8 3U=2W}A Ռʑ@U㞧22v S}/jk%"!'lsnΞ镐dC+yB);#LN>lFtcCqJF#.P;:V@u)'@lzh^RnC=eժn#7:o]D2H)(R꛱͜X}hB#f=PK (X4NqfSP<ҘɅaao.њIi:%i2cΈkFt\2p"ORV3zIl=:7^+Q+EwN[/ %6F{)1ޖtkMxXGԐҍyQw}P0fGi< ֮qΓ:1)5 yC  Цw>vi[I%kAswJrmF.f{ZFT\SFZ whj?.ʆ)ھ&qS$G8Cf̈s0AOʒ6fWxZ`L U Z ɡo ̔L5QjboL`:Z9b@`&$Vi{q&[臛L6ҲK^ؼM%Ð0 =%wISڈ+;0lGwF~+qƣ.:_pbϴEx.Ҫ.U]80:ZJ3Hq@(Vat6pwV8j11fr9̌'ߔ[ZDQ$CoUͪ'HuBnr :1ⷞm(t6~ hhFiswRP kt'ќߙf́m- y<;-_|wnu 鍄r!V ~Hfg2e;ai<0!PҨ-N/SvR(56&7ς e4,:5.&l"7QWv'W4xG/J ji1 Mb?oGr jNKSHpJD;j4ޞ0"cb=<'7ʌDִMJ8WIY6W6]˨MX>bz#|Qk|M(QIAp㖼ڑg3ܝJt2bpõAG`Eѳ™1qu5oTMPA ܎)]N^IS^Ѵ0V<`wj()b^S'19x.zgk9hUZ)ALx%b/T jf56.e>.CuC ̏h{" B*cz9BX4p }\(@7kt8-ճ/*UcEb6ШS qZZ+vګ.kgc0UcGἻLEU0t 4^X6s&km_tȲaIR)@vd?py"urt0X1喝% Lm5i@Fjr0#y'F:u'[hmS19 lhL91H^g$`Yh 񀧦c.m]J &BR@2HF¦h_1Ho<^K6@S׈vX85c(CO .<5H=?  e`dEٱ%$Oہ̈́zVOX@P}r^CoROsA( -rPtLwm5918Wv~cI)(9FJh"!1>'%s1*9ǿ-HZL7 spN(r]Y@X\#Qು<#LMV2rk*8P5I% j{7uzԠ xB] n}s_GHJ^di7(TyIz^N@OrwzIK^Cu%٫m1>Y);:Dܗ$ɻL7Yny{T3zpi6PЫ*H L+ccb@uc@7Fu1'AD"siU9gEv@2+jVa7_*"lo!SSI.WtH@#lfᣙྰ ZɦbdX&;=\)W7;Xm|_3!$>N]3qB 튵 N@ܧ*U״axQD%+]":"VFвKxpw+Ff5SUYFА<[A$f, aU'"u$+'hܟ;\dGo MBYJFk`f7~!v @J1@4 P.04hM*G;IZ5 dEWEy(JiWafcs ֌IGRB ;m]@!9qI22m)ْP'UA" 51Zw.@Ė}Ta!WrEZg(ހ|x&" _=o'e8ݨ3Yv&1-f.O!'niA+QI H9\A 8JGƑ[k⠅ ¦=k0`;0Ox B8BׇZ iUK灮SvZy"7г`"UQ&<0{Pq|\9xA$#:XXdS?R*dO+3´vMdj0k zdH>$Γ${0m:D`$~ß;=7'~Fܼߘb(M|Z5+dNwb =D3ڤF~NWؔ )KTT6HJ脾 #i/:vl 2|849+bOnD.P-dQu'p\2ǠonF.(,/~3@!Jv.Km^70w;mURB)ט&19;vk32S>5'Ck3%)`*{3:7t;ow/Сr=hph飔$}~ ~Fg?EyWQjFhnxܶru"B\/oi~27o`-'8癈l "=]ZAޜU8G5+jLU30 vb/^8p'jC@ǴI ҡ2ibPh;X^ɼ#e2$C8k /8QGnb4yU_02ٮ>>nf4$j~ۅڊO;jE ^_4l&!БM"0S]BSQ#m- ho&껝 3O]0zPܱY̤<65(0 3E>k,٢wsdQ4zHıS0sGE^'cRgx2T=p&6'W>(wk X!8_|uQ` ȖUF}?hvSѶX.ҁ7|IY\m9(`} a/gcʙjBd2\S}ZY)v%DTĐTē`şPȟ3JÞυZ=27ɏ4.ټ ٖ"œlyy8(M V{bȡ5.L-}鏆P!ӫ}3} !;j| IZ?HSW4ziWx!15>Exokl ItgOS5!ɏeB/!j[J͝ۿLQ0- ]ܘXCno;z\LkEjd}.ƏIR<(Y#jq gh'Bb)qM<2s%F:9:AB(׺XYr$3GCc諜=%J}C'dpYl6mY<}ƿaA<4$s*:u@hV*%d_ۂ,,@rQlt4ڄ .JL҉ e4/86SZ_]sj(YOTE5`"Hv}Ԯ_[mȈz .$vvA;D ВgN Lњ{rDg`Um@Knԅ:r?#k"7\c?fe9Z-kLa50 ;M ]",*Am^?  j 4O,fl  /OȜmlF:ӎu@Q^4iQ9Gp+Lotu=f]]bG  T+Ԩi*&̻$^rɶ޶kHzryuIqh P! ΨFi$z(c͒&akߏ^15I iuf7mC|"Մ?ѽI2pZl`MY9kyw).< "v̄yHR^2өb^Gϼ/I ҳ0%y]F%º )3VQ>n"[ 0S-\֤c0U.@(JKڷnzv&#*Ȝjh|cvM&ua U_xGؓZ{~Jq$}AF¥P10_ a[rE]+bI(_PcaZV>6X=AHSqU?6~.vޞ=87O=Ob5 ͹P)3e$cfa h՜=6?bZ Jao”u҂\5í:jOGZV.g]XƼ#[rϩc)VP5#!S/G=nL@9!p 6-vujAt107mޞs`_T?M7fA/Ko*i;QlzI] )NO`7|dE`Pu}%SkPF;TmԼ/"`/fuU+JT L_vbP"+spKd}#;IvIP34"yn ;ZLDvgt+y O4iV }$+j'=w,"+RUc 5$;JpE zG_LF>sQ6y򣿎 7Z%`hnH\+.$R ٝeXXhU-؉W* p,{z}}|䕥I}=rԑyOa鉍O.pH5Ѝc7SҐ BQ(>VlxL~MqU"é:-j V\^(¦Hb:5;3(!/]8QqN1G+E~xzb?TI5Ol6VvseTBS鈲C;I(mL4k 8GS(6{T^מZs}˹vn||$x{N'*(kd d*V,҈ւM"Ͳ~ZUvy߁B>[l&WK{ ;<<=6Ot/“J; sZ{wDM30VVVR$W&($gTݥXtlݘhcCI; L a <,VZroa- Qp$[i_(ѩ:ԇ5Ϊu)\vv(_.>wT_'vO 0T^=T ̓e9Skv{QeR:Tj؀g10Z 7FL``f< ʷ:e){݄(YMiҝTExMͿѯTG#/}:4xĵ 1#sщkZhW\؃z4Di]GzM]R1&8|q [MJ}\N=Qӛޑ%|ƴDz54 ͗:74Wjf޸Bҩim-Uʳ؏-9a/3F@~vrڂYf:&EC4vVb[hEO A[H&eNj.Hhm uyk1?_{8aI r lF~d?!^0S>^0ᘱig/Һ 2K^+ +v!oG4әim/]âPo^~I`qnsg˩0v 'x\Ȓ<"}kZ֎ đ͢wv8IԢp!"E FWET9J] 48c;q {*C"+{o<c"l_7dPKIϖycU&GE*6ϔXsICFr:"I .Zox;\l OX#Ym.16Hٹk0.νœ;QE0 rƩD";% '#[XN+c{O`-a081!7S}ӆ9xEM ;>-rϋ `BEYܧNg>D$œ)"- U@UwlǴ]gN!uw~kZO͔ Zuhl2C)EOnx7aX2d> 5 q  bˊ na<>na2$9y"Hd8YaGY\h7>On Vunռú+rf"16/v 1Ӕ"uMoCaEti7m';#W u_)K5Eրm_w>xJs8#bK-# yOXo eN6&Z95 鹃-BaɆ!K-jݜ]^zxLNoX%?x6m=&+^:΍Ywl!t ^Xu#dݫnBޢ 2IIߖE3:?unsmt55Sfg*+aH')bwwU\ 0 v˜!E=0*vTt;DMEI6G2-yu!v o[A2Bm­%v`TdDKKWUiu"uŦLh )R/Ɖ_*K>v;N3%Pj)fCcy X"XcQ`{7ejH8J դ- (*8 T (c+;,aEu͌t"d>vR#Lue/Yd[] \b]ZըV̧\r7{,{RY ӎ٠VІkcccba>2{ +4b.?29H٣;Gw.j3Wu7D+da77'1eIEEq 8#22',> AaD@9ähIjri<  - U"5nƮs^Q/l@g4"&˒3O$!Oe -;bJѸj LUTj]UiE|O{U.7o_!yLj)6rc$yNzH'RLDtCE6su"X2 *lywC;vs{ܐ(7LDAI1'R(̓6r / IGeP  :%{y$= p&ǸJ%2VpӆX8s-0׾U~5WJʗ,m%>Q'U߆uJEր0'ʅdjHocrJU\1jzbmcnz_wy3d)ڲ[ L_mnځ;zҝcbTjAfL#xulFMilbϤ s6%6#ÉCZZ6 ǑѲ*'FąQ~F퉵pCS؈X:"GD6x%ɣCN̸Е L^aKH(tl쮕6?v3e]uR5z43#v67agI ɽ(LLcI tGoc"ďEq=ث #Rga ܙt̟` y8(,R3r=rA3+;z]ya 6;} { RGUZT:}rpEcUN( ?,T m 2CUCX.kbzf:Z@(f;kղd yגS.9Tޡp{ώ;61/2v'ێĜ>_BEV !wl+<#I'ҺnF2R3zFZu$-Z` Tӊ6n]-hD:+ob3iV?E* ,zԮAR=wFmjbfx37D[[r^ V'p.OiÄ `/ snj.=A 涴+qP:6LV9ը6!51& |*>6TlT+n""ˢ2gQL*M[A8_yу #)$~@Z&p'SEé'UL.&N-Qna81c7M< 0] $/"(Dn7C/>VQ#3 xI}#mUb#Bx.$nf+sl#p1jT]b湲*`Q7zttfH* 鐂6[t{ [J`Y1[H%`tм`D=&,,C/4(䟳wMTebTt&,njGK4.l!SpVr3X3IvD-c7S&~l f۞xpM6sk[3$̿{ e&bh: uoj ȣ(7ad.xoc19堎xG5sP(2!ǹP{Eəp|7cp(H'EZS2QFQ8,n&l !֗\xQJ_[C{_'BG=-@𢙀g|Bkg{ڰzT">A6 f-9^1kooB *[SK߷AΩF{LЮp5Śҙ=@ G1C־yrS n&C9 (B$#Gf:aHIQf?2*.ƈkUC ZS:xbӨ"g%t8J|W7%nEhX5MGZؠV[!?zD 'O?&sˌDF3Cm9zKU5q33z>ketq`ȝ-\*6qq0R>C 22HG[TTOxwr-VJo|d#8@:9tmW5[arWFS=:O4oj;{5`݈"أ9N-yKW+ы3Qf L>90~zBG䘊 ӲiE+,_jy+2kC;*hs+SoFFz[sF JlmHT}8X,B FaBi ݏ ;P:ꄰRQ_AL[X>-ct‘OԼj}-,[Hb/dzQ a ef?ـ' r$c66]NzpGWG͕WhJĎ~#߉V)EոZ`Udln>;`ޫ/86zX{]M6!XAU38Ȃi6b8*v,A1`W60ҫdsKHG$Ջߚ]{T¡lvR!JP;a@J9hrag1RR<15hvB"=e_Rz!2t$ l=ѓz}b{]3R5Xaza uǬ~ڝҮTP5N~wŶ,UokPK D>7 8V!`?!dW֫g1czѻ%#Ƭ !D &= +].9&غ*'|hx~UuQ%LIb]{fai;X y-ԍ2"!TN3mAǚ_<~Uv&ٓ)S$y4*+u$G܈2'5]hԭj<çUOK£/*&5CŞZR9Zr2isf QOO{C&lяAsˎ9QEEVqrl|+Uq"|1Ka )\X({`n(T \Y6G&Ȏ. 7 #l;o:b^5<$2 l1jN*AK9AxӅZ_.2;[ad Ic{Tz(u5ֽ‘Q.Rl:MПAlYj+&jW3aI.RRt --;K^ğc,Cf>=B*_rĐ U>Ds9fЧb!*VՌ1sWvt_Ic4 q5?sQcݔډ l)UP"8*8UpvEb#l%C~v$&q\^W ;+KّI2nuf1<磠AZ@R5F< ^h@B$wuBo&|cO> д$T:T-fabn3s+&V9$ü"ZqΥ6 5μ>̿+9ߟ|H"Kh0&;7ByxYvTN51$Il_IY>دr0-Oz)oL~TKT >*@em*÷MgPhɌ,3QBj6_r f%Qf͈!BIJtзtтYyua3ha&<K0qm'3fih<$ R]Zcڧ|ǒA5dWbИs3WL|ցthlK̤ N}Ί,^.\pFzO6VfYNT$\FFT"Y>L{5g!}|_+]ݯH#ItP "Ta8 `c[ƹP#z6Dt>م@lǦ&+ѝ5<%_W*:+3F_ɹ]i-X2zo"w=-] Y,WU%q٣́1R)҃NMsj IL#? o=QIRmWI2߈4s/j*FG1+Ka%j"z /#y,n(#G5tRnf+9ZUUL=/")R[xÈ$U'j1AnVg 4=@h.dSpuг|=5joq877$;O CiB N(@W D.d@FR E;9 \xCUkUN @4:tjn6U#]tFs X9_ؒ ~5kҺA;l&]PT+cnCWjqngkΕB?"E;;(WgnS{:LRr0 `ABΟT(t1_1/]b+,J;jZ(.Gt:FoJDQ43Xv2`BYvDLX*M8~#qmòKnIrp`TlxG2nۂq8.ur^SS ب=UN^ `ԍ`C#WElF v.^I~ˀ[0br"6*n̔6;lvt.`]qwLoK}K DR@+ľ,r;3˶?\T+'ZZh"B|hPY)\yw2?8U,-?w)۱=AAP|k@8We'&:GnD4 t޺+#G3]ȶaL4H>><="#ZASj{r-^4"Q,.#}c!j1d(MmĜ1HZp lEnT?,ЭBΓ.3>ᐝl6d;&5mudpFʞO!˼ y6I;cyJvPYج rrMj,Ē; 1mD)3B~Hpo5!eU% JAx7o ܴϦS:.S]DhQe3^XzN}FkhuѱM*B{ f"p;a bZۏ@-+G(%u@e tf뮦EZU0:L$%*@51" u94:v2I}hh;\V+`g$Xi LSfqw̸PsiJǒ(]Ǚ9X !I*H: =g7)ܪƴ6TItbk16װ [̱FB+n"b*Z.@58Pfbv{`8^dਉ%8jRHYeZ؎ؑcBlΎ( 4 !8 &ɎOf3Gߒbz$z?IZ";Mذp2x_{le^ntY[=)tޣ33#&k&hdW/5)YiTHL掜;C֤RUs 8-a^)LFBOYd+p7׺.lA{88_@ט4kgǛgبbf)[Թ4BX|N0M9x0QX4F8U JyB2u8vnۀ1")Sf}\zKp/uտ}E^oۆ`̨MxbWJ']CI,;o DPvBNY]83LV2|ka:T;d1ȓDLpvsGpf4_1!3oĎ `ԝjݱqhm(MX'Ux$"wu޽ v۽`+z28IQ I-ae8l % gCI?7Wya4dnĔZi/iN;$#1Ax%d^§Tĸઉ҄>(fS}qn=G)P*ih̢fȤKbIŤH NY.,doH@-A6# ~ 9{S}9NN0-B,tGg,8wtc5(ͭf d\nco#~=љ1E\[y^t#o4<@h0Tmb%Ϸ?#cSEBqQaWn%p0.s&zЎq7q& LKDZHSUmS͠H K_uJ5VjLlJn>J;NM APĚ/dH9V2=Ŝx0|I23§QZhvJm;IJU/Q'jk=5K^jOjw&KV]KWx/Sx턷TRSL4+M:˟` "Og;]"SYqqܕMV`{ ޫ0?heN[d\noY ЦvV;%+V@uKBT ns‹qW%vddu!b;MJ*%NSBT_Y%`v!>XDS'{bmo@. {txJօ:TOhXcGB1NO|v /,.XOTY"r*sk/FR*)1-D2cDݮC!`4}[P>wN>V}@m֤x.k`%3b t&aHٞM/Wk[٬# UONpёюAK*ƉfH-Q:ޡ;Iw~utU&\8Ho %^XNlƢ) zt΢OI2Gc^8L<嶪:ʰ8ϙELmw$ĭ̀duYnj)c&|{94J\c"|%*x+ V*I5U56ȝdJ`;4wKVQߨ=gjѪ_*EUD+KcW<>&.>ptTXCc{ی6EXM+0G-R\؈UI23*I~ 2h֞l+oDbm.|/a?*լ^GeQE<"g@AHud+n"R]IIjJ=7 h/$~bl$DYTdE̓ɘ✛3(<ŏ뼌_Ր]nJ-ҭLm3ZEnBL&MVAT(>KnɆ UgW 5=D}xt_${>$ ;F!7ĒTqb"frxn'3hQ-;=X3Uw^i8KDٔ"Pn={ݒ"ˁ\{&pl"~8|ӱǻ|λ(_l; SaM䒵=vi~݀YIwV8 }!6Y$gU %#Q*jq$JRu}ԀճX}!+#":$QմؓCӮKl37+$ϯv{9;`۳6Xr 0c8&CO-t|fb3l22߶HOzE/s8~V~N5q:O'A8"Ҟ4A+P~{/q6Qڤ7țB{M eh!T1.&d t> Ԁ'O 9c :؞W{|f m$YdqS8ԥd։xt8Gh)тd cC)XK0]PH1{Tg:ͱjP6d HQPU7iEA&w(;>eNhh33h{\}fQEHBZb!?|mLk  xzYa~NĹa2$ʧDf! z;16֡Ԧhq$6uY ~`N>60{%PRG`f; g83XV5|β;*yy4(9[2y>")FC baJ{'S6[jɪ'<3@m{Gd AN0k1N gTyhp) d߅XI KT'\bGv{^}QGTO=ةK.ʈqF8 ;MǙWxR-IiD&U *Tw.k}!"/q)﷥]8'Y׬6&+"i 7Zԋ ~rA1bĸrR:wQ:]^Mj93<1hܶP۬d٤6ds$ ͯ $S.{Q E1PGQ-2x.t=k2BȺ Ȅ_@uKn[Y,剙,FzD{B^EI[hx:v2RFtڪzRMJ|Ao9HNAR}RQ"v<.]1<88nTT3.tQ(0 Aτ;360i<쓾.nq'" 8U[$"RVa8h;;u!6}ܫu=mV/1j-9;@k4w-hw{̴{h ?z 097UD\iTevsNgu(4ggLrӴ a[p.clh\q[S{IZɸ)PlPuZv/R h%[FJF>zo(%s1l ThB:rYSǜY }?`٩YYJu?&xARLNkn`aWM"ʊ.{gGG#1l,DVi~:rA0dRd08#11WDh*#C 3ER;y_R,a\> q[Z{&Ap$V($ %"K$PL>ӯX%q)O܇ΓpݶضfEk/QqVHhv$Ule >N#(} ^;ۮ8,*aQt@JUQ֠bw5db/g*~? PT'{®Y3X|[IDҥ{vA285-t7 ӺxsLpmF ߆#`6 yϐ+rQpp}bmuj j'Hht͆ |TtOlԊWގR]%ܓ1fq;仭>A/B9=MtЏpٲ XHu+gwmx`2x-XV[5<6W;ZKP&>ר&zY.g$UتE8aW6ɯs+2̾A"7[Ȩ!a+Ҁi-')ВTj'>'5Fi"p[ح~q[emetbc>>Y`gв*DG;AJJvi(7E!tQfǠaLi2x_C9AmJbO6:Ta*u苾_/قEgw7wWx:~|Ξ,_ׯw7w'&??MǓ7@U~ve'+O7wNa8Imrv<~{Ѿ{Nޜyx?;ŋu uSt</_͋xw?}uki8?yqg_W9??^/Oݟ~k"6UKy:^/_Uv u'}ONwgo/ޞ>Hexszwi_3޽}цy}a{aYs=cߟ3W_></lig|)ك?'jmWM6Nwxf46cw/bkWmlp_N悇U^;_/^6 eo.7/]}q{9&ON~<^ᛳaO^`^Kv}zYK$ ʆ5}חE)`p}%'{x-9DpA=jfÃrxv{p 4Φ`c#l*ʫܞƂ?{ tR<"QlwXǻ d x~c\NE^yaӜ9 OK:MW6[{7oE>={oo䭗fRݫ&oN@/O8.ޟV?ߚ  2?{|KzÍ#,5?du[z^n e"l+m 8?=_]4in Bs ͊s3(w'6Ёewb k#xN1~hS>v'm) 臃vyj׾c1g?@θ\68 (|9n}f9)?q켸+gڶ'T_|m Kj׶K~ʔ,UhOR]r*VYO(vRBi_v`i#_64am ?:b~8Q͞dс#Fpkt݄1s,ܝ!6Y@t}sι>3m:wy?PM mwTRf>m .Za?Y,|p7RlK]؜B`pؔ?^*Exv]hs~ALk%P8R OWV3{yjFѥ &/~x={f;\qp?.*NX (gOv4,8#7Pg\-kV8^6I*eܜ}YA?|9IuCgo?|:iz/e&6.fv&0u0Kf^IouC^.&8*|Oe;^̬}/,ƤE6"స27 ?mu?Ƃp =Ѵ~5%/ְw53t}xQ?] O:ޖ wmh#0U}Kuε?F7S]>G {]+M9:vpkfШ^zvB!7 vhwp'7I;ǭm6m.1g޴pOe~]قs'aALGm}}mjWiYp)oV_Hﯮ=qű꫾eAΌX'臃]a&k^jvnܼ8@Ye"{|Ck~?8~Sߥ*](|4]•[{ZRv#8[h_%WrE0oxZi+fiy ˕/9x(,a!X&lV5i>a{y@J>|3}sg*Up3puorfEI]K1p!xsBx!^P5i{{ZnWwg_={\-Q>p&-^dfry6_Ivn`<_cHa|(yɫ~y?2 q{wڪǫݼP^Bt0`~{٣w.zTjAu|󞙉c8uƋ Uz"/wO,s?<(sqz }nB37ݪ.,In /^l? [ziy3rs39K{ q&w}}al`Gn+_(3]Mϻ9F.=̥Ϳqק_1ob5%~:{>SҖ38_u)c3{?WN[~ط>d;0fϸ6Έ{7\_5zpOde+"tzy U٭9k9vqb晽XŚŽGT´g4-g3U.G/|ޟ)gny6?= 97.dwWئpLR0 |{>||0}DOq:Yb4SZfy7ϩy'oQ v~{-GHBH}7?0&LJ+}խ ˟s7\&Zǧ/czfw-?Ga3eL Q1Qƺ|h۬w`RyoD"׉SR?kB|9?^ACv8hvavaf#p˻0ݑS_Si=Kp5-[盕 Kn ̍L_&"(h355?u|Xlyx3)fXd·mCyk7Y?q:#=sac90;q9~sN*' aƒ)\$aؾn xcCiU>JPq}ro?'vfdrh{0Go_%]s[mԴmL:ҋԚ OCX֎{Ƥ'_V߉!gy/d <[gq>,DFj#DW[4>0pXGPVwl!˰j=w:B&/2ܘCEj̧ O쟇'kᜐAZ Oy}'|vIk'r2s<3ZO}I黛3>>gVb>We+χ2 fg'zE]>־}\UY_uG1j Ta=f} U00'P`wH޽ݘ/b#KGo@طBk@<5%Q"u޼%M~5qW{)> JVTKJ*IaoMz_SϪvm4~|}.Oq|í;2_~<-w9'xP!a7rq wٱTDq !]敽tĬծ(8@܃bGܹDroյ y"9@F@Ƽ,___[@/מ*^aGbx*{`DPKS~fY8y9s"Fk?W?g>1m/7/Hĩ}A/3iMphC:p&|gb[0[G[[]1}VVYɭ[ʐg7 ;x7L1"c rѤ6&s{xz )ߖMw.9\hg2xG4;8@_fme5=7Wp~v .=a%O; \0[r|j9pׯI=YR/`GI=ɨC| Wcr=xbg(Z}| '!CDȃ߾xs~f9@~{+3oÛ7sf}/| 7/5vQj-CJK֏QR7]ń!Ldѻÿ<o4{?dƖd), "ǗꉂMq3uV5Up=,{{=$~F$#rJ䊽{!;d6O 9JkaCu:@|2))ޭI(Bֳ }4dn?2G֪2d~9ߤ?"Q8iO`đ%Y}?^n~hk8:/7 [ewuņ3zx\o&Ë#֗G ;V4QZ p 9Gt6Qt!y2|jD^&;Od/6!k+c`'yG,f#n9bW{_CG]ƮxQ{cܟ(!'fq> ܲ* q-~"t?kOW[:#L\1a#|"Q>{ =*q`W_hBlE-*w%1Ƕքޚ9{˿-R A*!K.p[8=.2>h.T߲7rnt}N7g3ۑ{_՟e˚@ Y_ru+cV1+v|nt*P ѽB!˦܀y܀+|G[꧇MDWuua^m#\ٻk~ z<(&}T-sk dجۊT4u0/=÷t曵eTLV; / e_vj^"R\KH8N,Qme>1JF|qzC:fr^D!bQJ_+[?*<}j/XndY6z.o8g-W~ VnɭH'Β)f'cP| 1Uv8 su%{Erdr}+ǜ \j,5$ tw_SGp ʬ Sn!V3<0 S[.%{ār?bqAΏs~,ǰNyl>[{/?#/0}Y"T'I>r0&z^CiQ ^:=B%)>IWX"п"R>2voCՏŸ+3=~?Ձ:̼&I|nrJ֪|\kD.,?ëG.i;DwNHA#}^w?W'u E sw\ ؓgA'~a-HV>T)'Uo2${R3 qbI:#Pdt)eMeFյhB}Җ-g˵94Xr6W9FNoENPٜ<;`8EwWv#$ixr t 3n᷶0̵fKL` 00dzt5%'/6ͅ }ڣ5&,8|G&Ht4+F&OŖl b?L`Isv`ڿZ)g-[8r5Sk:FP HNheݽɷƺBqQ4cu6$΍IzƕO0VrÃ'b98_dַhtU!JfZsWy!'Б$\ +i%UYs7- u /SR<ȹ{/_jsavf|;zϡOsǽ넫gG,Ih(mdOGH f+ ߌ~^1K^+1FPȼcpx]Ci^GȀ]s{n~p -@Tcore++-1.7/doc/papers/core.ps.gz0100644000175000001440000125730207443425527015771 0ustar joachimusers%!PS-Adobe-2.0 %%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com) %%Title: p.dvi %%Pages: 9 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: Helvetica Helvetica-Bold Helvetica-Oblique %%EndComments %DVIPSCommandLine: dvips p -o %DVIPSParameters: dpi=600, compressed %DVIPSSource: TeX output 1999.03.11:1553 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} {adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] }if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[ (Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", % version = "0.6", % date = "22 June 1996", % filename = "8r.enc", % email = "kb@@mail.tug.org", % address = "135 Center Hill Rd. // Plymouth, MA 02360", % codetable = "ISO/ASCII", % checksum = "119 662 4424", % docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX." % @} % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: special.pro %! TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 40258431 52099146 1000 600 600 (p.dvi) @start %DVIPSBitmapFont: Fa cmtt8 8 29 /Fa 29 127 df<123E127FEAFF80A5EA7F00123E0909738823>46 DI51 D56 DI<123E127FEAFF80A5EA7F00123EC7FCAB123E127F EAFF80A5EA7F00123E091D739C23>I<3803FF80000F13E04813F8487F80EB80FFEC3F80 381F001FC7FC140F14FF137F0003B5FC120F5A387FF00F130012FCA25A141F7E6C133F38 7F81FF90B512FC6C14FE7E000713C73901FE01FC1F1D7D9C23>97 DIIII<147F903801FFC0010713E05B5BEB3FCF140F90 383E07C091C7FCA4007FB51280B612C0A36C1480D8003EC7FCB3383FFFFE487FA36C5B1B 297EA823>III<133813FEA5133890C7FCA6EA7F FC487EA3127FEA003EB3387FFFFEB6FCA36C13FE182A7AA923>I108 D<397E1F01F039FF7FC7FC9038 FFEFFE14FF6C80390FE1FE1FEBC1FC01C07FEB80F8A2EB00F0AE3A7FE3FE3FE026FFF3FF 13F0A3267FE3FE13E0241D819C23>I<38FF81FCEBC7FF01DF138090B512C0A23907FE0F E0EBF807EBF00313E0A313C0AD39FFFE1FFF5CA380201D7F9C23>I<133F3801FFE0487F 487F487F381FC0FE383F807F383E001F007E1480007C130F00FC14C0481307A66C130FA2 007C1480007E131F6CEB3F006D5A381FE1FE6CB45A6C5B6C5B6C5BD8003FC7FC1A1D7C9C 23>I<38FF81FCEBC7FF01DF13C090B512E015F03907FE0FF8EBF8039038F001FCEBE000 A249137EA2153EA5157E7F15FC7F14019038F803F89038FE0FF090B5FC15E001DF138001 CF1300EBC3F801C0C7FCAAEAFFFEA51F2C7F9C23>I<397FF00FE039FFF87FF8ECFFFC13 FB6CB5FCC613F8ECC078EC800091C7FC5BA25BA35BAA387FFFFCB57EA36C5B1E1D7E9C23 >114 D<3801FF9C000F13FE5A127FA2EAFF0000FC137E48133EA26C131C6C1300EA7FF0 383FFF80000F13E06C13F838007FFCEB01FEEB007F0070133F00F8131F7E143F7E38FF80 FFEBFFFE14FC14F814F000701380181D7B9C23>I<137013F8A7007FB51280B612C0A36C 1480D800F8C7FCACEC01C0EC03E0A3EBFC07140F9038FE1FC0EB7FFF158090383FFE00EB 0FFCEB07F01B257EA423>I<39FF807FC001C013E0A400071303B01407140FEBE03F90B6 FC7EA2C613F3EB3FC1201D7F9C23>I<39FFF03FFCA5390F8007C000071480A2EBC00F00 031400A26D5A0001131EA2EBF03E0000133CA2EBF87CEB7878A2EB7CF8EB3CF0A2133F6D 5AA36D5A6D5A1E1D7E9C23>I<397FF00FFE39FFF81FFFA3397FF00FFE001FC712F86C14 F0A57F390783E1E0EB87F1A3EB8FF90003EB79C013CFA2EBDF7BA2EBDE3B00011480EBFE 3FA2EBFC1FA23900F80F00201D7F9C23>I<397FF07FF039FFF8FFF8A3397FF07FF03903 E03E003801F03C3800F87CEB78F8EB7CF0EB3FE0131F6D5A5C1307497E497E133DEB3CF0 EB7878EBF07C0001133C497E3803C01F397FF03FF839FFF87FFCA3397FF03FF81E1D7E9C 23>I<39FFF03FFCA539078007C0158013C00003130F1500EA01E05CEBF01E1200A26D5A 1378A26D5AA3EB1E7014F0130EEB0FE0A213075CA35CA2130F91C7FCA2EA3E1FEA7F1E13 3EEA7CFC127F5B6C5A6C5AEA0F801E2C7E9C23>I<3803C038380FF07C381FF8FCEA3FFF 4813F8B512F038FC7FE038F83FC038700F0016097AA823>126 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fb cmcsc10 8 3 /Fb 3 109 df101 DI108 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fc cmti8 8 56 /Fc 56 122 df12 D39 D44 D<387FFFC0A2B5FCA26C130012057A901A>I<121C127F12FFA412FE12380808788716>I< 14031407140F141E143E147E14FEEB03FCEB1F7CEB7CFC1360EB00F8A21301A214F0A213 03A214E0A21307A214C0A2130FA21480A2131FA21400A25BA2133EA2137EA2137CA213FC B512F8A2182C79AB24>49 D<147F903801FFC0903807C1F090380F00F8011E137C133801 78133E13F3EBE380D801E1133F13C1120313810183137F0007EB007E5B1306010E13FE49 13FC3903F801F83901E003F0C7EA07E0EC0FC0EC1F80EC3F0014FC495AEB07E0EB0F8001 3EC7FC5BEA01F04848131C4848133C49133848C7FC001E14784814F0383FC001397FFE03 E00078B512C0EA703FD8F00F130038E003FEEB00F8202D7AAB24>II<1538157815F8A3140115F0A3EC03E0A3 EC07C0A2EC0F80A3EC1F00A2143E143C147C147814F85C495AA2495A90380783801487EB 0F0F131E131CEB381F0170130013E012013803803F3807003E120EEA1FF8387FFF7E39F0 07FC1839C000FFF8C7EA7FE0ECFC005CA313015CA313035CA26D5A1D397DAB24>I<0118 1306011F137EECFFFC15F04913E0158090383BFC000138C7FC13781370A313F05BA33801 E3F8EBCFFEEBFC0F01F013803903E007C013C01380C7EA03E01407A5140F003C14C0127E A2141F00FE148012F800E0EB3F00147E0070137C5C387801F0383803E0381E0F80D80FFE C7FCEA03F81F2D79AB24>II<3A01C3E001C09038CFF0 033A03FFF80780ED0F00485C9038F8383E390FE01C7C9038C00FFC48486C5A001EC7FC00 3E5C003C495A5A0070495A00F01307485CC7120F4AC7FCA2143EA25CA214FC5C13015C13 03A2495AA2130F5CA2131F5CA2133FA291C8FC5BA2137EA21338222D77AB24>II<143FECFFC0903803E1E090380F80F090381F0078133E017E137C5B5B1201 A2485AA215FC12075BA2140115F813C01403A2EC07F00003130FEBE01F0001133F3900F0 77E0EB7FE7EB1F879038000FC0A2EC1F80A21500143E0038137E007E137C00FE5B495A48 485A48485A38700F80D8781EC7FCEA3FF8EA0FE01E2D79AB24>I<13F0EA01F812031207 A3EA03F0EA01C0C7FCAD121C127F5AA45A12380D1D789C16>I<16E01501821503A21507 150FA2151FA2153B157B157315E382EC01C114031581EC0701A2140EA2141C143C143802 707F15005C13015C49B5FCA249C7FCA2130E131E131C4980167E5B13F0485AA21203D80F F014FFD8FFFC011F13F0A22C2F7CAE35>65 D67 D<011FB512FCEEFF80903A00FE000FC0EE03E04AEB01F0EE00F80101157C 173C4A143E171E0103151FA25CA21307A25CA2130FA24A143FA2131F173E4A147EA2013F 157C17FC91C8FC17F849EC01F0A2017EEC03E0A201FEEC07C0EE0F8049EC1F00163E0001 5D5E49495AED07C00003023FC7FCB612FC15E0302D7BAC36>I<011FB612FEA2903900FE 0001EE007E4A143EA20101151E171C5CA21303A25C16E001071301170002E05B1503130F 15074A485A91B5FC5BECC01F4A6CC7FCA2133FA2DA000E13E0A2491401030013C0017E14 03178001FE14071700495C161E12015E49147CED01FC0003EC0FF8B7FC5E2F2D7CAC30> I<011FB612F8A2903900FE000716014A13001778130117705CA21303A25C16E001071301 170002E05B1503130F15074A485A91B5FC5BECC01F4A6CC7FCA2133FA2EC000EA25B92C8 FC137EA213FEA25BA21201A25BA21203B512F0A22D2D7CAC2E>I<03FF1318020FEBC038 91393F00F07802F8EB38F8D903F0131CD907C0EB0FF0EB1F8049C71207137E49EC03E048 5A485AA2484815C0485AA2485A178048CAFCA25A127EA312FE5AA292B512E0A2923801FE 006F5A15015EA3007C14035E127E123E001E1407001F5D6C6C130F6C6C133F6C6C13793A 00F803F1C090383FFF80D907FCC8FC2D2F75AD37>I<903B1FFFF81FFFF8A2D900FEC7EA FE00A24A5CA2010114015F5CA2010314035F5CA2010714075F5CA2010F140F5F5C91B6FC 5B9139C0001F805CA2013F143F94C7FC91C7FCA2495C167E137EA201FE14FE5E5BA20001 14015E5BA200031403B500C0B512C0A2352D7BAC35>I<90381FFFF8A2903800FE00A25C A21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C7FCA25BA213 7EA213FEA25BA21201A25BA21203B512C0A21D2D7CAC1B>I<91387FFFE0A2913800FE00 A25DA214015DA314035DA314075DA3140F5DA3141F5DA3143F92C7FCA35CA2147EA2003C 13FE127E00FE5BA2495AEAFC0300F05B48485A38700FC0D8781FC8FCEA1FFCEA07F0232E 7AAC25>I<90381FFFFEA2D900FEC7FCA25CA21301A25CA21303A25CA21307A25CA2130F A25CA2131FA25CA2133FA291C7121CA249143C1638017E1478167001FE14F0A249EB01E0 A200011403ED07C049130FED3F80000314FFB7FC1600262D7BAC2D>76 DI<4AB4FC020F13C09138 3E03F09138F8007CD903E07FD907807F011FC77E013E15804914074915C0485AEE03E048 5A485AA2485A121F90C8FC5AA2003E1507127EA348ED0FC0A3EE1F80A217005E163E167E 167C16FC4B5A007C5D4B5A6C4A5A4B5A6C4AC7FC6C6C133E6D13F83903E003F03901F80F C026007FFFC8FCEB0FF02B2F75AD37>79 D<011FB512FCEEFF80903A00FE000FE0EE03F0 4AEB00F8A20101157CA25C177E130317FC5CA20107EC01F8A24AEB03F017E0010FEC07C0 EE0F804AEB3F00ED01FC91B512F04991C7FC0280C8FCA3133F91C9FCA35B137EA313FE5B A312015BA21203B512C0A22F2D7CAC30>I<4AB4FC020F13C091383E03F09138F800FCD9 03E0133E49487F011FC7FC013EEC0F804914074915C012014915E04848140312075B120F 485AA248C8FC1607123E127EA348ED0FC0A3EE1F80A21700485D163E167E6C157C16FC4B 5A007C01F05B903903FC03E03A3E070E07C0903906060F80271F0E071FC7FC390F0C033E 018C13F8D803EC5B3901FE0FC03A007FFF0018EB0FF7D90007133816301670ED80F0ED81 E015C3EDFFC0A25E93C7FC6E5AEC00F82B3B75AD37>I<011FB512E016FC903900FE003F EE0FC04AEB07E016030101EC01F0A24A14F8A21303EE03F05CA20107EC07E017C04AEB0F 80EE1F00010F143E16FC9138C007F091B512805B9138C00FE091388003F06F7E133F6F7E 91C7FCA2491301A2017E5CA201FE1303A2495C17080001163C17384914E0EEF078000316 70B5D8C00113E09238007FC0C9EA1F002E2E7BAC34>I<91380FF00C91383FFC1C9138F8 0F3C903903C007BC9039078003FC90390F0001F8131E491300A24914F0A313F816E0A216 007F7F6D7EEB7FF8ECFF806D13E06D13F801077F01017FEB001FEC01FF6E7E8181A28112 1CA35D003C141EA25DA2007E5C5D007F495A6D485A26F1F01FC7FC38E07FFC38C00FF026 2F7BAD28>I<000FB712F0A23A1FE00FE00701001401001E02C013E0481500141F123800 78EC8001A20070013F14C012F0481400A25CC791C7FC147EA214FEA25CA21301A25CA213 03A25CA21307A25CA2130FA25CA2131FA25CA2133F003FB57EA22C2D74AC33>I87 D97 D<13F8121FA21201A25B A21203A25BA21207A25BA2120FEBC7C0EB9FF0EBF878381FF03CEBE03EEBC01EEB801FEA 3F00A2123EA2007E133FA2127CA2147F00FC137E5AA214FCA214F8130114F0EB03E0EA78 0714C0383C0F80381E3E00EA0FF8EA03E0182F78AD21>II<153EEC07FEA2EC007EA2157CA215FCA215F8A21401A215F0A21403EB07C39038 1FF3E0EB7C3BEBF81FEA01F03903E00FC0EA07C0120FEA1F801580EA3F00141F5A007E14 00A25C12FE48133EA2EC7E18153848137CA214FCD878011378397C03F870A2393C0F78E0 381E1E3D390FF81FC03903E00F001F2F79AD24>III<14F8EB 03FE90380F873890381F03F8137EEB7C0113F81201EA03F015F0EA07E01403120F01C013 E0A21407121F018013C0A2140FA21580141F120F143FEC7F006C6C5AEA03C33801FFBF38 007E3E1300147EA2147CA214FC00385BEAFC015C495A48485A38F01F80D87FFEC7FCEA1F F01D2C7C9D21>I<131FEA03FFA2EA003FA2133EA2137EA2137CA213FCA25BA21201147E 9038F3FF809038F787C03903FE03E013FC13F8A2EA07F013E0A213C0000F130715C01380 A2001F130F15801300141F481406150E003E133F143E007E141EEC7E1C007C137CEC3C38 12FC157048EB1FE00070EB07801F2F7BAD24>I<130E131FEB3F80A2EB1F00130E90C7FC A9EA03E0EA0FF0EA1E78EA1C7C12381278127013FCEAF0F812E012E1EAC1F0120112035B 12075BA2120F13831387121F13075BEA3F0E123EEA1E1C133C1338EA0FF0EA03C0112E7A AC16>I<131FEA03FFA2EA003FA2133EA2137EA2137CA213FCA25BA21201EC01E09038F0 07F0EC1E380003EB3878EC71F8EBE0E1EBE1C13807E381EC00E049130013CEEA0FFC13F0 A213FF381F9FC0EB87E0EB03F01301003F14301570123EA2007E14F015E0007C13E014E1 00FC14C0903800F38048EB7F000070131E1D2F7BAD21>107 D<137CEA0FFCA21200A213 F8A21201A213F0A21203A213E0A21207A213C0A2120FA21380A2121FA21300A25AA2123E A2127EA2127CA2EAFC30137012F8A213F013E012F012F113C012FBEA7F80EA1E000E2F7A AD12>I<3B07801FC007F03B1FE07FF01FFC3B3DF1E0F8783E3B38F3C078F01E3B78FF00 7DC01FD870FEEB7F80A2D8F1FC1400D8E1F8137EA249137C00C302FC5B0003163E495BA2 00070101147E177C01C05B17FC000F0103ECF83018700180EBE00117F0001F010715F004 0313E0010001C013E0EFE1C048010F1301EFE380003E91398000FF00001C6DC7123C341F 7A9D3A>I<3907801FC0391FE07FF0393DF1E0F83938F3C0783978FF007CEA70FEA2EAF1 FCEAE1F8A25B00C314FC00035C5BA2000713015D13C01403000FECE0C015E1EB800715C1 001F14C3020F13800100138391380787005A158E003EEB03FC001CEB00F0221F7A9D28> II<90383C01F09038FF07FC3901E79E 1E9038C7BC0F000301F81380903887F00702E013C038078FC0130F1480A2D8061F130F12 001400A249131F1680133EA2017EEB3F00A2017C133E157E01FC137C5DEBFE015D486C48 5AEC0F80D9F3FEC7FCEBF0F8000390C8FCA25BA21207A25BA2120FA2EAFFFCA2222B7F9D 24>I<3807803E391FE0FF80393CF3C1C03938F781E03878FF07EA70FE13FC12F139E1F8 038091C7FC5B12C312035BA21207A25BA2120FA25BA2121FA290C8FCA25AA2123E121C1B 1F7A9D1E>114 DI<131C133EA2137EA2 137CA213FCA25BA21201A2B512E0A23803F000A25BA21207A25BA2120FA25BA2121FA290 C7FCA24813C01301123E130314801307003C1300130E131E6C5AEA0FF0EA07C0132B7AA9 18>I I<3903C001C0390FF003E0391E7807F0EA1C7C1238007813030070130113FCD8F0F813E0 12E000E1130038C1F001000114C0120313E014030007148013C0A2EC0700120F1380140E A25C12076D5A00035B6D5AC6B45A013FC7FC1C1F7A9D21>II<90383E01F09038FF87F83903C7DE 1E380783DC903803F87EEA0E01001E13F0EA1C03003C14380038EBE000A2EA300700005B A3130F5CA3011F1318153814001238D87C3F137012FC15E0EB7F0139F0FF03C03970E787 80393FC3FE00381F00F81F1F7C9D21>II E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fd cmr8 8 80 /Fd 80 128 df<9138FF807E01079038E1FF80903A1F807FC3C0D93E00EB87E049EBFF07 4913FE485A00039138FC018049017CC7FCAAB712FCA22703E0007CC7FCB3A6486C13FE3A 7FFF0FFFF0A22B2F7FAE29>11 D<14FF010713E090381F80F090383E003849137C4913FC 485A1203491378153092C7FCA7157CB612FCA23803E000157CB3A5486C13FE3A7FFF0FFF E0A2232F7FAE27>II<91397F800FF090 3A03FFE07FFE903A1FC079F80F903B3E001FE003804990393FC007C04990387F800F4848 1400A24848017EEB0780033EEB030094C7FCA7EF07C0B9FCA23B03E0003E000F1707B3A5 486C017FEB0FE03C7FFF07FFF0FFFEA2372F7FAE3B>I<13E0EA01F01203A2EA07E0EA0F C0EA1F00121E5A5A12E012400C0C72AD23>19 D38 D<123C127EB4FCA21380A2127F123D1201A3 12031300A25A1206120E5A5A5A126009157AAD14>I<13031307130E131C1338137013F0 EA01E013C01203EA0780A2EA0F00A2121EA35AA45AA512F8A25AAB7EA21278A57EA47EA3 7EA2EA0780A2EA03C0120113E0EA00F013701338131C130E1307130310437AB11B>I<12 C07E12707E7E7E120FEA0780120313C0EA01E0A2EA00F0A21378A3133CA4131EA5131FA2 130FAB131FA2131EA5133CA41378A313F0A2EA01E0A2EA03C013801207EA0F00120E5A5A 5A5A5A10437CB11B>I43 D<123C127EB4FCA21380A2127F123D1201A312031300A25A1206120E5A5A5A126009157A 8714>II<123C127E12FFA4127E123C08087A8714>I<15C01401 14031580A214071500A25C140EA2141E141CA2143C143814781470A214F05CA213015CA2 13035C130791C7FCA25B130EA2131E131CA2133C1338A21378137013F05BA212015BA212 035BA2120790C8FC5A120EA2121E121CA2123C1238A212781270A212F05AA21A437CB123 >II<130C133C137CEA03FC12FFEAFC7C1200B3B113FE387F FFFEA2172C7AAB23>III<140EA2141E143EA2 147E14FEA2EB01BE1303143E1306130E130C131813381330136013E013C0EA0180120313 001206120E120C5A123812305A12E0B612FCA2C7EA3E00A9147F90381FFFFCA21E2D7EAC 23>I<000CEB0180380FC01F90B512005C5C14F014C0D80C7EC7FC90C8FCA8EB1FC0EB7F F8380DE07C380F801F01001380000E130F000CEB07C0C713E0A2140315F0A4127812FCA4 48EB07E012E0006014C00070130F6C14806CEB1F006C133E380780F83801FFE038007F80 1C2D7DAB23>II<1230123C003FB512F8 A215F05A15E039700001C000601480140348EB0700140E140CC7121C5C143014705C495A A2495AA249C7FCA25B130E131EA2133EA3133C137CA413FCA913781D2E7CAC23>I II<123C127E12FFA4127E123C1200AD123C127E12FF A4127E123C081D7A9C14>I<4A7E4A7EA34A7EA24A7EA3EC1BF81419A2EC30FCA2EC70FE EC607EA24A7EA349486C7EA2010380EC000FA201066D7EA3496D7EA2011FB57EA2903818 0001496D7EA349147EA201E0147F4980A20001ED1F801203000716C0D80FF0EC3FE0D8FF FC0103B5FCA2302F7EAE35>65 DIIIIIIII<90387FFFF0A201001300147EB3 AD123812FEA314FE5C1278387001F86C485A381E07E03807FF80D801FCC7FC1C2E7DAC24 >IIIIIII82 D<90383F80303901FFF0703807C07C390F000EF0001E130748 13034813011400127000F01470A315307EA26C1400127E127FEA3FE013FE381FFFE06C13 FC6C13FF00011480D8003F13E013039038003FF0EC07F81401140015FC157C12C0153CA3 7EA215787E6C14706C14F06CEB01E039F78003C039E3F00F0038E07FFE38C00FF01E2F7C AD27>I<007FB712F8A29039000FC003007C150000701638A200601618A200E0161CA248 160CA5C71500B3A94A7E011FB512E0A22E2D7EAC33>IIII<3B7FFFE003FFF8A2000390C713806C48EC7E000000157C01 7F14786D14706E5B6D6C5B6D6C485A15036D6C48C7FC903803F80601015BECFC1C6D6C5A EC7F305DEC3FE06E5A140F816E7E81140DEC1DFCEC38FEEC307F14609138E03F8049486C 7EEC800FD903007F496D7E010E6D7E130C011C6D7E496D7E49147E167F01F0EC3F800003 16C0D80FF8EC7FE0D8FFFE0103B5FCA2302D7EAC35>II<003FB612C0A29038F0001F0180EB3F80 003EC7EA7F00123C003814FE4A5A5A4A5A4A5A12604A5A4A5AA2C7485A4AC7FCA214FE49 5AA2495A5C1307495AA2495A495A166049C7FC13FEA2485A484814E0A2485A484814C015 01485A48481303150748C7121F00FE14FFB7FCA2232D7CAC2B>II93 D<13FF000713C0380F01F0381C00F8003F137C80A2143F001E7FC7FCA4EB07FF137F3801 FE1FEA07F0EA1FC0EA3F80EA7F00127E00FE14065AA3143F7E007E137F007FEBEF8C391F 83C7FC390FFF03F83901FC01E01F207D9E23>97 DII<15F8141FA214011400ACEB0FE0EB7FF83801F81E38 03E0073807C003380F8001EA1F00481300123E127EA25AA9127C127EA2003E13017EEB80 03000F13073903E00EFC3A01F03CFFC038007FF090391FC0F800222F7EAD27>III<013F13F89038FFC3FE 3903E1FF1E3807807C000F140C391F003E00A2003E7FA76C133EA26C6C5A00071378380F E1F0380CFFC0D81C3FC7FC90C8FCA3121E121F380FFFF814FF6C14C04814F0391E0007F8 48130048147C12F848143CA46C147C007C14F86CEB01F06CEB03E03907E01F803901FFFE 0038003FF01F2D7E9D23>III<130FEB1F80EB3FC0A4EB1F80EB0F0090C7FCA8EB07C013FFA2130F1307B3AD 1230127838FC0F80A21400485AEA783EEA3FF8EA07E0123C83AD16>III<2607C07FEB07F0 3BFFC3FFC03FFC903AC783F0783F3C0FCE01F8E01F803B07DC00F9C00F01F8D9FF8013C0 4990387F000749137EA249137CB2486C01FEEB0FE03CFFFE0FFFE0FFFEA2371E7E9D3C> I<3807C0FE39FFC3FF809038C703E0390FDE01F0EA07F8496C7EA25BA25BB2486C487E3A FFFE1FFFC0A2221E7E9D27>II<3807C0FE39FFC7FF 809038CF03E0390FDC01F03907F800FC49137E49133E49133FED1F80A3ED0FC0A8151F16 80A2ED3F00A26D137E6D137C5D9038FC01F09038CE07E09038C7FF80D9C1FCC7FC01C0C8 FCA9487EEAFFFEA2222B7E9D27>I<90380FE01890387FF8383801F81C3903E00E783807 C007390F8003F8001F1301EA3F00A2007E1300A212FE5AA8127EA36C13017EEB8003380F C0073803E00E3801F03C38007FF0EB1FC090C7FCA94A7E91381FFFC0A2222B7E9D25>I< 380781F838FF87FEEB8E3FEA0F9CEA07B813B0EBF01EEBE000A45BB0487EB5FCA2181E7E 9D1C>I<3801FE183807FFB8381E01F8EA3C00481378481338A21418A27E7EB41300EA7F F06CB4FC6C13C06C13F0000113F838001FFC130138C0007E143EA26C131EA27EA26C133C A26C137838FF01F038E3FFC000C0130017207E9E1C>I<1360A413E0A312011203A21207 121FB512F0A23803E000AF1418A714383801F03014703800F860EB3FE0EB0F80152A7FA8 1B>II<3AFFFC01FFC0A23A0FE0007E000007 147C15380003143015706C6C1360A26C6C5BA390387C0180A26D48C7FCA2EB3F07EB1F06 A2EB0F8CA214DCEB07D8A2EB03F0A36D5AA26D5A221E7F9C25>I<3BFFFC3FFE07FFA23B 0FE003F001F801C09038E000F00007010114E0812603E00314C0A2913807F8012701F006 781380A29039F80E7C030000D90C3C1300A290397C181E06A2151F6D486C5AA2168C9039 1F600798A216D890390FC003F0A36D486C5AA36DC75A301E7F9C33>I<3AFFFC07FF80A2 3A0FF003FC000003EB01F0000114C06D485A000091C7FCEB7C06EB3E0E6D5A14B8EB0FB0 EB07E013036D7E497E1307EB067C497EEB1C1F01387FEB700F496C7E6E7ED803C07F0007 6D7E391FE003FC3AFFF007FFC0A2221D7F9C25>I<3AFFFC01FFC0A23A0FE0007E000007 147C1538000314306D137000011460A26C6C5BA2EBFC01017C5BEB7E03013E90C7FCA2EB 1F06A2148EEB0F8CA2EB07D8A2EB03F0A36D5AA26D5AA2495AA2130391C8FC1278EAFC06 A25B131CEA7838EA7070EA3FE0EA0F80222B7F9C25>I<003FB51280A2EB003F003C1400 0038137E00305BEA700100605B495A495A130F00005B495A49C7FC5B137E9038FC0180EA 01F8120313F03807E003EA0FC0001F1400138048485A007E5B00FE133FB6FCA2191D7E9C 1F>II<001C13E0387F03F8A200FF13FCA2007F13F8A2381C00E0 16087AAD23>127 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fe cmsy8 8 1 /Fe 1 3 df<006015C000E014016C14030078EC07806CEC0F006C141E6C5C6C6C5B6C6C 5B6C6C485A6C6C485A90387807806D48C7FCEB1E1E6D5AEB07F86D5A6D5A497E497EEB0F 3CEB1E1E497E496C7E496C7E48486C7E48486C7E4848137848C77E001E80488048EC0780 48EC03C048140100601400222376A137>2 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ff cmsy9 9 1 /Ff 1 4 df<130E131FA639700E01C000F8EB03E000FE130F00FF131F397F8E3FC0391F EEFF003803FFF8C613E0EB3F80A2EBFFE0000313F8381FEEFF397F8E3FC039FF0E1FE000 FE130F00F813030070EB01C0D8001FC7FCA6130E1B207BA226>3 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fg cmr9 9 4 /Fg 4 62 df<156015F0B3A4007FB812C0B912E0A26C17C0C800F0C8FCB3A4156033327C AB3C>43 D<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E120C121C 5A5A126009177A8715>I<123C127E12FFA4127E123C1200B0123C127E12FE12FFA3127F 123F1203A412071206A3120E120C121C1238123012701260082F7A9F15>59 D<007FB812C0B912E0A26C17C0CCFCAC007FB812C0B912E0A26C17C033147C9C3C>61 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fh cmmi9 9 5 /Fh 5 114 df<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E120C 121C5A5A126009177A8715>59 D109 DI<011F131F90397FC07FE090 39E3E1E0F09039C3E380783A01C1F7007CD981FE133CD983FC133E00035BEB03F0163FEA 0707120600025B1200010F147F167E5CA2011F14FE16FC5CA2013FEB01F8A291380003F0 16E0491307ED0FC002801380ED1F009038FFC03E9038FEE0F89038FC7FE0EC1F80000190 C8FCA25BA21203A25BA21207A25BB57EA3283083A027>112 D<903801F803903807FE07 90381F071F90387C03BF9038F801BED801F013FE00031300485A4913FC120F485A1401D8 3F0013F8A3481303007E14F0A300FE13074814E0A3140F15C0127C141F143F003CEB7F80 003E13FF381E01DF380F07BF3907FE3F00EA00F813005C147EA314FE5CA21301A25C9038 7FFFE090B5FCA220307EA022>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fi cmtt9 9 10 /Fi 10 118 df98 D100 DI<153F90391FC0FF80D97FF313C048B612E05A4814EF390FF0 7F873A1FC01FC3C0EDC000EB800F48486C7EA66C6C485AEBC01FA2390FF07F8090B5C7FC 5C485BEB7FF0EB1FC090C9FCA27F6CB5FC15E015F84814FE4880EB8001007EC7EA3F8000 7C140F00FC15C0481407A46C140F007C1580007F143F6C6CEB7F009038F807FF6CB55A00 0714F86C5CC614C0D90FFCC7FC23337EA027>103 D<130F497E497EA46D5A6DC7FC90C8 FCA7383FFF80487FA37EEA000FB3A4007FB512F0B6FC15F815F07E1D2F7BAE27>105 D<387FFF80B57EA37EEA000FB3B2007FB512F8B612FCA36C14F81E2E7CAD27>108 D<387FE07F39FFF1FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B5BA25BB03A7F FF83FFE0B500C713F0A36C018313E024207F9F27>110 DI<133C137EA8007FB512F0B612F8A36C14F0D8007EC7FCAE 1518157EA415FE6D13FC1483ECFFF86D13F06D13E0010313C0010013001F297EA827> 116 D<397FE01FF8486C487EA3007F131F00031300B21401A21403EBFC0F6CB612E016F0 7EEB3FFE90390FF87FE024207F9F27>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fj cmmi8 8 4 /Fj 4 114 df<27078007F0137E3C1FE01FFC03FF803C18F0781F0783E03B3878E00F1E 01263079C001B87F26707F8013B00060010013F001FE14E000E015C0485A491480008102 1F130300015F491400A200034A13076049133E170F0007027EEC8080188149017C131F18 01000F02FCEB3F03053E130049495C180E001F0101EC1E0C183C010049EB0FF0000E6D48 EB03E0391F7E9D3E>109 D<3907C007E0391FE03FF83918F8783E393879E01E39307B80 1F38707F00126013FEEAE0FC12C05B00815C0001143E5BA20003147E157C5B15FC0007EC F8081618EBC00115F0000F1538913803E0300180147016E0001F010113C015E390C7EAFF 00000E143E251F7E9D2B>I<90387C01F89038FE07FE3901CF8E0F3A03879C0780D907B8 13C0000713F000069038E003E0EB0FC0000E1380120CA2D8081F130712001400A249130F 16C0133EA2017EEB1F80A2017C14005D01FC133E5D15FC6D485A3901FF03E09038FB87C0 D9F1FFC7FCEBF0FC000390C8FCA25BA21207A25BA2120FA2EAFFFCA2232B829D24>112 D<903807E03090381FF87090387C1CF0EBF80D3801F00F3903E007E0EA07C0000F130338 1F800715C0EA3F00A248130F007E1480A300FE131F481400A35C143E5A147E007C13FE5C 1301EA3E07EA1F0E380FFCF8EA03F0C7FC13015CA313035CA21307A2EBFFFEA21C2B7D9D 20>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fk cmtt8 7 7 /Fk 7 121 df<90381FC38090387FF7C048B5FC5AEA07F0380FC03F381F801FA2383F00 0F123E007E1307127CA200FCEB038091C7FC5AA87EA2007CEB0380EC07C0127E123E003F 130FEA1F80EC1F80380FC03F3907F07F003803FFFE6C5B38007FF0EB1FC01A267EA41F> 67 D<137F3801FFC0000713E04813F8EA1FC1383F00FC007E137C147E5A143EB512FEA3 14FC00F8C7FC7EA2007E131C007F133E383F807E381FE0FE380FFFFC6C13F8000113F038 007F8017197D981F>101 D108 D<387C7C1F39FFFE7F8090B512C06C14E0381FCFF3EB87E1EB07C1A2 001E1381AD397F87E1F839FFCFF3FCA2397F87E1F81E1980981F>I<137E3803FFC04813 E04813F0381FC3F8383F00FC007E137E007C133EA248131FA66C133F007C133EA2007E13 7E6C13FC381FC3F8380FFFF06C13E06C13C038007E0018197D981F>111 D<387F87F038FFDFFCEBFFFE6CEBFF803907FC1FC0EBF00F9038E007E0A29038C003F0A2 1401A5140313E0EC07E013F09038F80FC09038FC3F8090B512005CEBDFFCEBC7E001C0C7 FCA9EA7FFC487EA26C5A1C2680981F>I<397FE1FF80EAFFF3A2EA7FE13907C0F000EA03 E13801E3E0EBF3C06CB45A137F6DC7FC133E131E133F497E13F7EBF3C03801E1E000037F 13C038078078397FE1FF80D8FFF313C0A2D87FE113801A197E981F>120 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fl cmsy7 7 1 /Fl 1 49 df<13E0EA01F0EA03F8A3EA07F0A313E0A2120F13C0A3EA1F80A21300A25A12 3EA35AA3127812F8A25A12100D1E7D9F13>48 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fm cmmi7 7 2 /Fm 2 107 df<130E131F5BA2133E131C90C7FCA7EA03E0487EEA0C78EA187C1230A212 605B12C0A2EA01F0A3485AA2485AA2EBC180EA0F81A2381F0300A213066C5A131CEA07F0 6C5A11287DA617>105 D<1407EC0F80141FA21500140E91C7FCA7EB03E0EB07F8EB0C3C 1318EB303E136013C0A248485AA2C7FCA25CA4495AA4495AA4495AA4495AA21238D87C1F C7FC12FC133E485AEA70F8EA7FE0EA1F80193380A61B>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fn cmmi10 10 25 /Fn 25 123 df<121C127FEAFF80A5EA7F00121C0909798817>58 D<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A5A5A 12600A19798817>I I<126012FCB4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007F C0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE 01FF9338007F80EF1FC0A2EF7F80933801FF00EE07FCEE1FF0EE7FC04B48C7FCED07FCED 1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CAFCEA 07FCEA3FF0EA7FC048CBFC12FC1270323279AD41>62 D<1760177017F01601A21603A216 07160FA24C7EA216331673166316C3A2ED0183A2ED0303150683150C160115181530A215 60A215C014011580DA03007FA202061300140E140C5C021FB5FC5CA20260C7FC5C83495A 8349C8FC1306A25BA25B13385B01F01680487E000716FFB56C013F13FF5EA2383C7DBB3E >65 D<0103B77E4916F018FC903B0007F80003FE4BEB00FFF07F80020FED3FC0181F4B15 E0A2141FA25DA2143F19C04B143F1980027F157F190092C812FE4D5A4A4A5AEF0FF04AEC 1FC005FFC7FC49B612FC5F02FCC7B4FCEF3FC00103ED0FE0717E5C717E1307844A1401A2 130F17035CA2131F4D5A5C4D5A133F4D5A4A4A5A4D5A017F4BC7FC4C5A91C7EA07FC49EC 3FF0B812C094C8FC16F83B397DB83F>I<0103B6FC5B5E90260007FCC8FC5D5D140FA25D A2141FA25DA2143FA25DA2147FA292C9FCA25CA25CA21301A25CA21303A25CA213071840 4A15C0A2010F150118804A1403A2011F16005F4A1406170E013F151E171C4A143C177C01 7F5D160391C7120F49EC7FF0B8FCA25F32397DB839>76 D<4BB4FC031F13F09238FE01FC 913903F0007EDA07C0EB1F80DA1F80EB0FC0023EC7EA07E002FCEC03F0495A4948EC01F8 495A4948EC00FC495A49C912FE49167E13FE49167F1201485AA2485AA2120F5B001F17FF A2485AA34848ED01FEA400FFEE03FC90C9FCA2EF07F8A2EF0FF0A218E0171F18C0EF3F80 6C167F180017FE4C5A6C6C5D1603001F4B5A6D4A5A000FED1F806C6C4AC7FC6D147E0003 EC01F8D801FC495AD8007EEB0FC090263F807FC8FC903807FFF801001380383D7CBA3F> 79 D<0103B7FC4916E018F8903B0007F80007FC4BEB00FE187F020FED3F80F01FC05DA2 021F16E0A25DA2143FF03FC05DA2027FED7F80A292C8130018FE4A4A5A604AEC07F04D5A 0101ED3FC04CB4C7FC91B612FC17E0D903FCCAFCA25CA21307A25CA2130FA25CA2131FA2 5CA2133FA25CA2137FA291CBFC497EB6FCA33B397DB835>I<1578EC01FEEC07C6EC0F86 1507EC1E03143E147C1507ECF806A2EB01F00103130EECE00C1307A2ECC01C010F131815 3890381F80301570156090383F00E015C01401017F1380EB7E03EC07001406EBFE0E495A 5C143000011370495AEBF9C0EBFB8001FFC7FC5B5B485AA25BA4485A120F121DEA39F012 7100E1140C0080143C0000147015E090387801C0EC078090383C1E00EB1FF8EB07E0203C 7FBA23>96 D<147E903803FF8090390FC1C38090391F00EFC0017E137F49133F485A4848 EB1F8012075B000F143F48481400A2485A5D007F147E90C7FCA215FE485C5AA214015D48 150CA21403EDF01C16181407007C1538007E010F1330003E131F027B13706C01E113E03A 0F83C0F9C03A03FF007F80D800FCEB1F0026267DA42C>I<133FEA1FFFA3C67E137EA313 FE5BA312015BA312035BA31207EBE0FCEBE3FF9038E707C0390FFE03E09038F801F001F0 13F8EBE000485A15FC5BA2123F90C7FCA214015A127EA2140312FE4814F8A2140715F05A EC0FE0A215C0EC1F80143F00781400007C137E5C383C01F86C485A380F07C06CB4C7FCEA 01FC1E3B7CB924>II<14E0EB03F8A21307A314F0EB01C090C7FCAB13F8EA03FEEA070F 000E1380121C121812381230EA701F1260133F00E0130012C05BEA007EA213FE5B1201A2 5B12035BA20007131813E01438000F133013C01470EB806014E014C01381EB8380380787 00EA03FEEA00F815397EB71D>105 D<150FED3F80A2157FA31600151C92C7FCABEC0F80 EC3FE0ECF0F0903801C0F849487E14005B130E130C131CEB1801133801305BA2EB0003A2 5DA21407A25DA2140FA25DA2141FA25DA2143FA292C7FCA25CA2147EA214FEA25CA21301 001E5B123F387F83F0A238FF87E0495A00FE5BD87C1FC8FCEA707EEA3FF8EA0FC0214981 B722>I 109 DI<90390F8003F090391FE00FFC90 3939F03C1F903A70F8700F80903AE0FDE007C09038C0FF80030013E00001491303018015 F05CEA038113015CA2D800031407A25CA20107140FA24A14E0A2010F141F17C05CEE3F80 131FEE7F004A137E16FE013F5C6E485A4B5A6E485A90397F700F80DA383FC7FC90387E1F FCEC07E001FEC9FCA25BA21201A25BA21203A25B1207B512C0A32C3583A42A>112 D<02FC13C0903803FF0190380F838390383F01C790397E00EF8049137F485A4848133F00 0715005B485A001F5C157E485AA2007F14FE90C75AA3481301485CA31403485CA314075D 140F127C141F007E495A003E137F381F01EF380F839F3903FF1F80EA00FC1300143F92C7 FCA35C147EA314FE5C130190387FFFF0A322357DA425>I<3903E001F83907F807FE390E 3C1E07391C3E381F3A183F703F800038EBE07F0030EBC0FF00705B00601500EC007E153C D8E07F90C7FCEAC07EA2120013FE5BA312015BA312035BA312075BA3120F5BA3121F5B00 07C9FC21267EA425>I<14FF010313C090380F80F090383E00380178131C153C4913FC00 01130113E0A33903F000F06D13007F3801FFE014FC14FF6C14806D13C0011F13E0130390 38003FF014071403001E1301127FA24814E0A348EB03C012F800E0EB07800070EB0F006C 133E001E13F83807FFE0000190C7FC1E267CA427>II<903907E001F090391FF807FC9039783E0E0F9039E01F1C1F D801C09038383F803A03800FF07F0100EBE0FF5A000E4A1300000C157E021F133C001C4A C7FC1218A2C7123FA292C8FCA25CA2147EA214FEA24A130CA20101141C001E1518003F5B D87F81143801835C00FF1560010714E03AFE0E7C01C0D87C1C495A2778383E0FC7FC391F F00FFC3907C003F029267EA42F>120 D<13F8D803FE1470D8070F14F8000EEB8001121C 121800381403003015F0EA701F1260013F130700E0010013E012C05BD8007E130F16C013 FE5B151F000115805BA2153F000315005BA25D157EA315FE5D1401000113033800F80790 387C1FF8EB3FF9EB0FE1EB00035DA2000E1307D83F805B007F495AA24A5A92C7FCEB003E 007C5B00705B6C485A381E07C06CB4C8FCEA01FC25367EA429>II E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fo cmsy10 10 10 /Fo 10 113 df<007FB81280B912C0A26C17803204799641>0 D<121C127FEAFF80A5EA 7F00121C0909799917>I<0060150600F8150F6C151F007E153F6C157E6C6C14FC6C6CEB 01F86C6CEB03F06C6CEB07E06C6CEB0FC06C6CEB1F80017EEB3F006D137E6D6C5A90380F C1F8903807E3F0903803F7E06DB45A6D5B6EC7FCA24A7E497F903803F7E0903807E3F090 380FC1F890381F80FC90383F007E017E7F49EB1F804848EB0FC04848EB07E04848EB03F0 4848EB01F84848EB00FC48C8127E007E153F48151F48150F00601506282874A841>II[<15F84A7E 4A7E4A7EA56E5A6E5A6E5A92C9FCAB007FB812F0B912F8A26C17F0CCFCAB15F84A7E4A7E 4A7EA56E5A6E5A6E5A>53 48 123 172 64 I15 D30 D54 D92 D112 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fp cmbx10 10 52 /Fp 52 123 df<141C143C14F8EB01F0EB03E01307EB0FC0EB1F8014005B137E13FE5B12 015B1203A2485AA2120F5B121FA25B123FA4485AA512FFB1127FA56C7EA4121F7FA2120F 7F1207A26C7EA212017F12007F137E7F7F1480EB0FC0EB07E01303EB01F0EB00F8143C14 1C165377BD25>40 D<12E07E127C7E7E7F6C7E6C7E12037F6C7E7F12007F137E137FA2EB 3F80A214C0131F14E0A2130F14F0A4EB07F8A514FCB114F8A5EB0FF0A414E0131FA214C0 133F1480A2EB7F00A2137E13FE5B12015B485A5B1207485A485A90C7FC123E5A12F05A16 537BBD25>I45 DI50 D58 D63 D65 DIIIIIIII76 DII II82 DI<003F B91280A4D9F800EBF003D87FC09238007FC049161F007EC7150FA2007C1707A200781703 A400F818E0481701A4C892C7FCB3AE010FB7FCA43B387DB742>IIII<007F B5D8F803B512F8A4C66C48C7D80FF0C7FC6D6C5D6D5E6F495A6D6D49C8FC7F6D6D137E6F 5B6DEBF8016D5D6F485A6E6C485A023F130FDA1FFF5BEE9F806E01FFC9FC805E6E5B6E5B 80826F7E153F826F7F5D4B7F92B57EA2DA01F97FDA03F17F03F07F913807E07FDA0FC07F 021F6D7E4B7E4A486C7F027E8102FE6D7F4A7F49488149486D7F0107804A6E7E49488149 486E7E013F81017F83B60107B61280A441397DB848>II<003FB712FEA4913980007F FC01FCC7EAFFF801F05B01C015F0494913E090C75A4816C0007E4A13805D007C16004B5A 157F00785D4B5A5C5EC7485B5C5E5C4A5B93C7FC5C4A5A5D14FF495B5D5B495B4B131E5B 5D4990C7FC5B5C4948143E13FF5C485B48167E4A147C484914FC5A4A13014890C7120348 150F49143F4848EB01FFB8FCA42F397BB83A>I97 D<13FFB5FCA412077EAF 4AB47E020F13F0023F13FC9138FE03FFDAF00013804AEB7FC00280EB3FE091C713F0EE1F F8A217FC160FA217FEAA17FCA3EE1FF8A217F06E133F6EEB7FE06E14C0903AFDF001FF80 903AF8FC07FE009039F03FFFF8D9E00F13E0D9C00390C7FC2F3A7EB935>I<903801FFC0 010F13FC017F13FFD9FF8013802603FE0013C048485AEA0FF8121F13F0123F6E13804848 EB7F00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6CEB07C06C6C14806C6C13 1FC69038C07E006DB45A010F13F00101138023257DA42A>II<903803FF80011F13F0017F13FC3901FF 83FE3A03FE007F804848133F484814C0001FEC1FE05B003FEC0FF0A2485A16F8150712FF A290B6FCA301E0C8FCA4127FA36C7E1678121F6C6C14F86D14F000071403D801FFEB0FE0 6C9038C07FC06DB51200010F13FC010113E025257DA42C>II<161FD907FEEBFFC090387FFFE348B6 EAEFE02607FE07138F260FF801131F48486C138F003F15CF4990387FC7C0EEC000007F81 A6003F5DA26D13FF001F5D6C6C4890C7FC3907FE07FE48B512F86D13E0261E07FEC8FC90 CAFCA2123E123F7F6C7E90B512F8EDFF8016E06C15F86C816C815A001F81393FC0000F48 C8138048157F5A163FA36C157F6C16006D5C6C6C495AD81FF0EB07FCD807FEEB3FF00001 B612C06C6C91C7FC010713F02B377DA530>I<13FFB5FCA412077EAFED7FC0913803FFF8 020F13FE91381F03FFDA3C01138014784A7E4A14C05CA25CA291C7FCB3A3B5D8FC3F13FF A4303A7DB935>II<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B> 108 D<01FED97FE0EB0FFC00FF902601FFFC90383FFF80020701FF90B512E0DA1F819039 83F03FF0DA3C00903887801F000749DACF007F00034914DE6D48D97FFC6D7E4A5CA24A5C A291C75BB3A3B5D8FC1FB50083B512F0A44C257DA451>I<01FEEB7FC000FF903803FFF8 020F13FE91381F03FFDA3C011380000713780003497E6D4814C05CA25CA291C7FCB3A3B5 D8FC3F13FFA430257DA435>I<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE0 48486D7E48486D7E48486D7EA2003F81491303007F81A300FF1680A9007F1600A3003F5D 6D1307001F5DA26C6C495A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113 C029257DA430>I<9039FF01FF80B5000F13F0023F13FC9138FE07FFDAF0011380000349 6C13C00280EB7FE091C713F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17F06E 137F6E14E06EEBFFC0DAF00313809139FC07FE0091383FFFF8020F13E0020390C7FC91C9 FCACB512FCA42F357EA435>I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8FFC0 00075B6C6C5A5CA29138807F80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA427> 114 D<90383FF0383903FFFEF8000F13FF381FC00F383F0003007E1301007C130012FC15 787E7E6D130013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C614FC131F903800 7FFE140700F0130114007E157E7E157C6C14FC6C14F8EB80019038F007F090B512C000F8 140038E01FF81F257DA426>I<130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA30003 90C7FCB21578A815F86CEB80F014816CEBC3E090383FFFC06D1380903803FE001D357EB4 25>I<01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25DA26C5C6E4813E06CD9C03E13 FF90387FFFFC011F13F00103138030257DA435>II120 DI<003FB612C0A3D9F0031380EB800749481300003E 5C003C495A007C133F5D0078495A14FF5D495B5BC6485B92C7FC495A131F5C495A017FEB 03C0EBFFF014E04813C05AEC80074813005A49EB0F80485A003F141F4848133F9038F001 FFB7FCA322257DA42A>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fq cmti10 10 31 /Fq 31 122 df<130FEB1F80133F137FEBFF00485A5BEA03F0485A485A485A003EC7FC5A 5A12E05A111064B92A>19 D<387FFFF8A2B5FCA214F0150579941E>45 D<120EEA3F80127F12FFA31300127E123C0909778819>I<0107B712FEA3903A000FF000 074B1300187C021F153CA25DA2143FA25D1838147FA292C8FCEE03804A130718004A91C7 FCA201015CA24A131E163E010314FE91B5FC5EA2903807F800167C4A1378A2130FA24A13 70A2011F14F0A24A90C8FCA2133FA25CA2137FA291CAFCA25BA25B487EB6FCA337397BB8 36>70 D<902607FFF8923807FFF0614F13E0D9000FEFF0004F5AA2021F167FF1EFC0141D DA1CFCEC01CF023C16DF9538039F800238ED071FA20278ED0E3F97C7FC0270151CA202F0 4B5AF0707E14E0037E14E0010117FE4D485A02C0EC0380A20103ED0701610280140EA201 07ED1C0305385B14006F137049160705E05B010EEC01C0A2011E913803800F61011CEC07 00A2013C020E131F4C5C1338ED1FB80178163F04F091C8FC01705CA201F04A5B187E0001 5DD807F816FEB500C09039007FFFFC151E150E4C397AB84A>77 D<902603FFF891B512E0 A281D90007923807F8006F6E5A61020F5E81DA0E7F5DA2021E6D1307033F92C7FC141C82 DA3C1F5C70130EEC380FA202786D131E0307141C147082DAF003143C70133814E0150101 016E1378030014705C8201036E13F0604A1480163F010715C1041F5B91C7FC17E149EC0F E360010E15F31607011E15FF95C8FC011C80A2013C805F1338160013785F01F8157CEA03 FC267FFFE0143CB51538A243397CB83E>II<14F8EB07FE90381F871C90383E03FE137CEBF801 120148486C5A485A120FEBC001001F5CA2EA3F801403007F5C1300A21407485C5AA2140F 5D48ECC1C0A2141F15831680143F1587007C017F1300ECFF076C485B9038038F8E391F0F 079E3907FE03FC3901F000F0222677A42A>97 D<133FEA1FFFA3C67E137EA313FE5BA312 015BA312035BA31207EBE0F8EBE7FE9038EF0F80390FFC07C013F89038F003E013E0D81F C013F0A21380A2123F1300A214075A127EA2140F12FE4814E0A2141F15C05AEC3F80A215 005C147E5C387801F8007C5B383C03E0383E07C0381E1F80D80FFEC7FCEA01F01C3B77B9 26>I<147F903803FFC090380FC1E090381F0070017E13784913383901F801F83803F003 120713E0120FD81FC013F091C7FC485AA2127F90C8FCA35A5AA45AA3153015381578007C 14F0007EEB01E0003EEB03C0EC0F806CEB3E00380F81F83803FFE0C690C7FC1D2677A426 >II<147F903803FFC090380FC1E090383F00F0017E13785B485A485A485A120F49 13F8001F14F0383F8001EC07E0EC1F80397F81FF00EBFFF891C7FC90C8FC5A5AA55AA215 30007C14381578007E14F0003EEB01E0EC03C06CEB0F806CEB3E00380781F83803FFE0C6 90C7FC1D2677A426>IIIII107 DII< D801E013FE3A07F803FF803A0E3C0F07C03A1E3E3C03E0261C1F787F39383FF00114E000 7813C000708114804A485AEAF07FEAE07EA20000140701FE5C5BA2150F00015D5B151F5E 12034990383F8380160316070007027F130049137EA2160E000F147C49141E161C5E001F EC3C7849EB1FE00007C7EA0780292679A42F>I<147F903803FFC090380FC1F090381F00 F8017E137C5B4848137E4848133E0007143F5B120F485AA2485A157F127F90C7FCA215FF 5A4814FEA2140115FC5AEC03F8A2EC07F015E0140F007C14C0007EEB1F80003EEB3F0014 7E6C13F8380F83F03803FFC0C648C7FC202677A42A>I<9039078007C090391FE03FF090 393CF0787C903938F8E03E9038787FC00170497EECFF00D9F0FE148013E05CEA01E113C1 5CA2D80003143FA25CA20107147FA24A1400A2010F5C5E5C4B5A131F5EEC80035E013F49 5A6E485A5E6E48C7FC017F133EEC70FC90387E3FF0EC0F8001FEC9FCA25BA21201A25BA2 1203A25B1207B512C0A3293580A42A>II< 3903C003F0390FF01FFC391E783C0F381C7C703A3C3EE03F8038383FC0EB7F8000781500 00701300151CD8F07E90C7FCEAE0FE5BA2120012015BA312035BA312075BA3120F5BA312 1F5BA3123F90C9FC120E212679A423>I<14FE903807FF8090380F83C090383E00E04913 F00178137001F813F00001130313F0A215E00003EB01C06DC7FC7FEBFFC06C13F814FE6C 7F6D13807F010F13C01300143F141F140F123E127E00FE1480A348EB1F0012E06C133E00 705B6C5B381E03E06CB45AD801FEC7FC1C267AA422>II<13F8D803FEEB01C0D8078FEB03E0390E0F8007121E121C 0038140F131F007815C01270013F131F00F0130000E015805BD8007E133FA201FE14005B 5D120149137EA215FE120349EBFC0EA20201131E161C15F813E0163CD9F0031338140700 01ECF07091381EF8F03A00F83C78E090393FF03FC090390FC00F00272679A42D>I<01F0 130ED803FC133FD8071EEB7F80EA0E1F121C123C0038143F49131F0070140FA25BD8F07E 140000E08013FEC6485B150E12015B151E0003141C5BA2153C000714385B5DA35DA24A5A 140300035C6D48C7FC0001130E3800F83CEB7FF8EB0FC0212679A426>I<01F01507D803 FC903903801F80D8071E903907C03FC0D80E1F130F121C123C0038021F131F49EC800F00 701607A249133FD8F07E168000E0ED000313FEC64849130718000001147E5B03FE5B0003 160E495BA2171E00070101141C01E05B173C1738A217781770020314F05F000301071301 6D486C485A000190391E7C07802800FC3C3E0FC7FC90393FF81FFE90390FE003F0322679 A437>I<903907E007C090391FF81FF89039787C383C9038F03E703A01E01EE0FE3803C0 1F018013C0D8070014FC481480000E1570023F1300001E91C7FC121CA2C75AA2147EA214 FEA25CA21301A24A1370A2010314F016E0001C5B007E1401010714C000FEEC0380010F13 07010EEB0F0039781CF81E9038387C3C393FF03FF03907C00FC027267CA427>I<13F0D8 03FCEB01C0D8071EEB03E0D80E1F1307121C123C0038140F4914C01270A249131FD8F07E 148012E013FEC648133F160012015B5D0003147E5BA215FE00075C5BA214015DA314035D 14070003130FEBF01F3901F87FE038007FF7EB1FC7EB000F5DA2141F003F5C48133F92C7 FC147E147C007E13FC387001F8EB03E06C485A383C1F80D80FFEC8FCEA03F0233679A428 >I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fr cmr5 5 4 /Fr 4 53 df<1360EA01E0120F12FF12F11201B3A3387FFF80A2111C7B9B1C>49 DIII E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fs cmr7 7 40 /Fs 40 122 df<14FF010F13C090383F01E090387C00F0EBF001EA01E01203EA07C06E5A 92C7FCA6EC0FF8B6FCA23807C000B3A2486C487E3A7FFC0FFF80A221297FA826>12 D<38380380387C07C038FE0FE000FF13F0A2EA7F07383B03B038030030A300061360A200 0E13E0000C13C038180180EA380338700700EA200214127EA721>34 D45 D<1238127C12FEA3127C123807077B8613>I<13381378EA01 F8121F12FE12E01200B3AB487EB512F8A215267BA521>49 D<13FF000313E0380E03F038 1800F848137C48137E00787F12FC6CEB1F80A4127CC7FC15005C143E147E147C5C495A49 5A5C495A010EC7FC5B5B903870018013E0EA0180390300030012065A001FB5FC5A485BB5 FCA219267DA521>I<13FF000313E0380F01F8381C007C0030137E003C133E007E133FA4 123CC7123E147E147C5C495AEB07E03801FF8091C7FC380001E06D7E147C80143F801580 A21238127C12FEA21500485B0078133E00705B6C5B381F01F03807FFC0C690C7FC19277D A521>I<1438A2147814F81301A2130313071306130C131C131813301370136013C01201 1380EA03005A120E120C121C5A12305A12E0B612E0A2C7EAF800A7497E90383FFFE0A21B 277EA621>I<140EA2141FA34A7EA3EC6FC0A2ECEFE014C7A290380183F0A390380301F8 A201067F1400A249137EA2011C137F01187FA24980013FB5FCA2903960000FC0A201E080 491307A248486D7EA200038115011207D81FC0497ED8FFF890383FFFE0A22B2A7EA931> 65 D69 D73 D76 D<90387F80203903FFF06039078078E0380E000E481307 481303007813010070130012F0A21560A27E1500127C127FEA3FE013FF6C13F06C13FC00 0313FFC61480010F13C0010013E0EC0FF014031401EC00F8A200C01478A46C1470A26C14 F06C14E06CEB01C000EFEB078039E3E01F0038C0FFFC38801FF01D2A7DA825>83 D<007FB7FCA23A7E003F003F0078150F007081006081A200E01680481501A5C791C7FCB3 A64A7E013FB5FCA229287EA72F>I87 D<00041340000E13E0381C 01C00018138038300300EA7007EA6006A2485AA338DC0DC038FE0FE000FF13F0A2EA7F07 383E03E0381C01C0141277A721>92 D<13FE3807FFC0380F03E0381C00F0003E1378003F 137C143C143E121EC7FCA3EB3FFEEA01FF3807F03EEA1FC0EA3F00127EA2481418A3147E 127EECDF38393F838FF0390FFE0FE03903F807C01D1C7E9A21>97 DIII<133F3801FFE03803E1 F0380F80F8381F007C143E123E007E131E141F127C12FCA2B6FCA200FCC7FCA4127C127E 1403123E6C1307380F800E3807C01C3803E0783800FFE0EB3F80181C7E9A1E>II<90387E03E03901FF9FF03807C3FC380F00F048EBF800001E13 78003E137CA6001E1378001F13F86C5BEBC3E0380DFF80D81C7EC7FC90C8FCA3121E380F FFF014FC6C13FF001F1480393E001FC000781307EC03E0481301A40078EB03C0007C1307 6CEB0F80390FC07E003803FFF838007FC01C277E9921>II<120EEA3F80A5EA0E00C7FCA7EA078012FFA2121F120FB3121FEAFFF8 A20D287EA713>I107 DI<260F81FC137F3BFF8FFF03FFC0903A9C0F8703E03B1FB007CC01F0 D80FE013D8903AC003F000F8A301805BAF486C486C487E3CFFF83FFE0FFF80A2311A7E99 37>I<380F81FC38FF8FFF90389C0F80391FB007C0EA0FE09038C003E0A31380AF391FC0 07F039FFF83FFEA21F1A7E9925>II<380F81FC38FF8FFF9038BC0FC0391FF0 07E0390FC003F0EB800115F8EC00FCA2157C157EA7157C15FCA2EC01F801C013F0EC03E0 9038F007C09038BC1F8090388FFF00EB83F80180C7FCA7487EEAFFF8A21F257E9925>I< 90383F80603901FFE0E03803F0703807C019380F800D381F00075A007E1303A2127C12FC A7127C127EA27E6C1307EB800F380FC01B3803E0733801FFE338007F031300A7EC07F0EC 3FFEA21F257E9923>I<380F07C038FF1FF0EB38F8EA1F71EA0F6113C1EBC0F014005BAF 487EEAFFFCA2151A7E991A>I<3803F840380FFEC0EA3C07EA7803EA7001EAF000A37E6C 1300EA7FC013FC6CB4FC6C1380000713C0C613E0130738C003F0130113007EA26C13E013 0100F813C038EE078038C7FF00EA81FC141C7E9A1A>I<13C0A41201A312031207120F12 1FB512E0A23807C000AC1430A73803E060A23801F0C03800FF80EB3F0014257FA31A>I< 390F8003E000FF133FA2001F1307000F1303B01407A20007130F9038C01BF03903E073FE 3801FFE339007F83E01F1B7E9925>I<39FFF807FEA2390FE001F001C013E0000714C013 E000031480EBF00300011400A23800F806A2EB7C0CA2EB7E1CEB3E18A26D5AA2EB0FE0A3 6D5AA26D5AA21F1A7F9823>I<3BFFF8FFF07FE0A23B1FC01FC01F80000F90390F800E00 A20007150CEC1FC02603E01B5B15E0143B2601F0315B15F0D9F86013700000156015F890 39FCC078E0017CEB7CC0137D90393F803D80153FEC001F6D91C7FCA2011E7F010E130EA2 2B1A7F982F>I<39FFF81FFCA2390FF00FE0D807E01380D803F013003801F80E00005BEB 7C386D5AEB3FE06D5A130F130780497EEB1DF8EB38FCEB707EEBE03E48487E0003EB0F80 000714C0001F14E039FFE01FFEA21F197F9823>I<39FFF807FEA2390FE001F001C013E0 000714C0EA03E01580EBF003000114006D5A0000130613FCEB7C0CA26D5AA26D5AA214F0 6D5AA26D5AA26D5AA291C7FCA213061230EA780EEAFC0C131C1318485AEA70E0EA3FC06C C8FC1F257F9823>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ft cmcsc10 10 5 /Ft 5 121 df67 D101 D111 D114 D<3B7FFF800FFFC0A2000790390003FE006C48EB01F800015D000015C0017F13036D5C6E 48C7FC90381FC0066D6C5A151C6D6C5A903803F83001015BECFCE06D6C5AEC7F80A2143F 6E7E140F4A7E4A7E1433EC63F8ECE1FCECC0FE903801807E0103137F49486C7E0106131F 4980011C6D7E496D7E0130130301708001F06D7E000181000781D81FF8491380B46C4913 F8A22D2B7DAA33>120 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fu cmtt10 10 63 /Fu 63 126 df<003C131E007F137F481480A66C1400A6007E7FA6003E133EA3003C131E 001C131C191977B32C>34 D<010F133C90381F807EA8013F13FE4A5AA4007FB612F0B712 F8A4003F15F03A007E01F800A5EBFE0301FC5BA6003FB612F0B712F8A46C15F03A01F807 E000A30003130F01F05BA86C486C5A25337DB22C>I<143814FC13011303EB07F8EB0FF0 EB1FC0EB3F80EB7F0013FE485A485A5B12075B120F5B485AA2123F90C7FCA25A127EA312 FE5AAC7E127EA3127F7EA27F121FA26C7E7F12077F12037F6C7E6C7E137FEB3F80EB1FC0 EB0FF0EB07F8EB03FC130113001438164272B92C>40 D<127012FC7E7E6C7E6C7EEA0FE0 6C7E6C7E6C7E6C7E137F7F1480131F14C0130FEB07E0A214F01303A214F81301A314FC13 00AC130114F8A3130314F0A2130714E0A2EB0FC0131F1480133F14005B13FE485A485A48 5A485AEA3FC0485A48C7FC5A5A1270164279B92C>II<147814FCAF007FB612F0B712F8A46C15F0C700FCC7FC AF147825267DAB2C>II<007FB6FCB712 80A46C150021067B9B2C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B70 8A2C>I<1507ED0F80151FA2153F16005D157E15FE5D14015D14035DA214075D140F5D14 1F5D143F92C7FC5C147E14FE5CA213015C13035C13075C130F5C131F5CA2133F91C8FC5B 137E13FE5B12015B12035B12075BA2120F5B121F5B123F90C9FC5A127E12FE5AA25A1278 21417BB92C>II<1307497EA2131FA2 133F137F13FF5A1207127FB5FC13DF139FEA7C1F1200B3AE007FB512E0B612F0A36C14E0 1C3477B32C>IIII<000FB512 FE4880A35D0180C8FCADEB83FE90389FFF8090B512E015F8819038FE03FE9038F000FF01 C07F49EB3F8090C7121F6C15C0C8120FA2ED07E0A4123C127EB4FC150F16C0A248141F00 7EEC3F80007FEC7F006C6C5B6D485A391FF80FFC6CB55A6C5C000114C06C6C90C7FCEB0F F823347CB22C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCAE121FEA3F 80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B2470A32C>58 DI<007FB612F0B712 F8A4003F15F0CAFCA8003FB612F0B712F8A46C15F025147DA22C>61 D<14FE497EA4497FA214EFA2130781A214C7A2010F7FA314C390381F83F0A590383F01F8 A490387E00FCA549137E90B512FEA34880A29038F8003FA34848EB1F80A4000715C04913 0FD87FFEEBFFFC6D5AB514FE6C15FC497E27347EB32C>65 D<007FB512E015F8B612FE6C 8016C03903F0003FED0FE0ED07F01503A2ED01F8A6ED03F0A21507ED0FE0ED1FC0EDFF80 90B612005D5D15FF16C09039F0001FE0ED07F0ED03F81501ED00FCA216FE167EA616FE16 FC1501ED03F8150FED3FF0007FB612E016C0B712806CECFE0015F027337FB22C>I<02FF 13700107EBE0F84913F9013F13FD4913FFEBFF813901FE007F4848131FD807F0130F1507 485A491303485A150148C7FCA25A007EEC00F01600A212FE5AAB7E127EA3007F15F06CEC 01F8A26C7EA26C6C13036D14F06C6C130716E0D803FC131F6C6CEB3FC03A00FF81FF806D B512006D5B010F5B6D13F00100138025357DB32C>I<007FB5FCB612C015F0816C803907 E003FEEC00FFED7F80153FED1FC0ED0FE0A2150716F0150316F81501A4ED00FCACED01F8 A3150316F0A2150716E0150FED1FC0153FED7F80EDFF00EC03FE007FB55AB65A5D15C06C 91C7FC26337EB22C>I<007FB612F0B712F8A37E3903F00001A7ED00F01600A4EC01E04A 7EA490B5FCA5EBF003A46E5A91C8FCA5163C167EA8007FB612FEB7FCA36C15FC27337EB2 2C>I<007FB612F8B712FCA37ED803F0C7FCA716781600A515F04A7EA490B5FCA5EBF001 A46E5A92C7FCAD387FFFE0B5FC805C7E26337EB22C>I<903901FC038090390FFF87C049 13EF017F13FF90B6FC4813073803FC01497E4848137F4848133F49131F121F5B003F140F 90C7FCA2127EED078092C7FCA212FE5AA8913803FFF84A13FCA27E007E6D13F89138000F C0A36C141FA27F121F6D133F120F6D137F6C7E6C6C13FF6D5A3801FF076C90B5FC6D13EF 011F13CF6DEB0780D901FCC7FC26357DB32C>I<007FB512F8B612FCA36C14F839000FC0 00B3B3A5007FB512F8B612FCA36C14F81E3379B22C>73 D<387FFFE0B57EA36C5BD803F0 C8FCB3AE16F0ED01F8A8007FB6FCB7FCA36C15F025337DB22C>76 DIII<007FB512C0B612F88115FF6C15802603F00013C0153FED0FE0ED07 F0A2150316F81501A6150316F01507A2ED0FE0ED3FC015FF90B61280160015FC5D15C001 F0C8FCB0387FFF80B57EA36C5B25337EB22C>I<387FFFFCB67E15E015F86C803907E007 FE1401EC007F6F7E151FA26F7EA64B5AA2153F4BC7FCEC01FE140790B55A5D15E0818190 38E007FCEC01FE1400157F81A8160FEE1F80A5D87FFEEB1FBFB5ECFF00815E6C486D5AC8 EA01F029347EB22C>82 D<90381FF80790B5EA0F804814CF000714FF5A381FF01F383FC0 03497E48C7FC007E147F00FE143F5A151FA46CEC0F00007E91C7FC127F7FEA3FE0EA1FFC EBFFC06C13FC0003EBFFC06C14F06C6C7F01077F9038007FFEEC07FF02001380153FED1F C0A2ED0FE0A20078140712FCA56CEC0FC0A26CEC1F806D133F01E0EB7F009038FE01FF90 B55A5D00F914F0D8F83F13C0D8700790C7FC23357CB32C>I<007FB612FCB712FEA43AFC 007E007EA70078153CC71400B3AF90383FFFFCA2497F6D5BA227337EB22C>I<387FFFFC B512FEA314FC00FCC7FCB3B3B3B512FC14FEA36C13FC17416FB92C>91 D<387FFFFCB512FEA37EC7127EB3B3B3387FFFFEB5FCA36C13FC17417DB92C>93 D<3801FFF0000713FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8 127EA3ECFFFE131F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F 14FEEB8003383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C> 97 DI<903803FFE0011F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E 4848131890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F0039 07FE03FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C>IIII II< 1307EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007F B512FCB612FEA36C14FC1F3479B32C>I<140EEC3F80A2EC7FC0A3EC3F80A2EC0E0091C7 FCA748B512804814C0A37EC7120FB3B3A2141F003C1480007E133FB414005CEB01FEEBFF FC6C5B5C001F5B000790C7FC1A467CB32C>II<387FFFE0B57EA37EEA0003B3B3A5007F B61280B712C0A36C158022337BB22C>I<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD8 7FFF13FF91B57E3A07FE1FFC3E01FCEBF83F496C487E01F013E001E013C0A301C01380B3 3B7FFC3FF87FF0027F13FFD8FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397F F01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B 5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>II<397FF01FE0 39FFF8FFF801FB13FE90B6FC6C158000019038F07FC09138801FE091380007F049EB03F8 5BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE0 9138E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B2736 7FA32C>I114 D<90387FF8700003B512F8120F5A5A387FC00F387E00034813015AA36CEB00F0007F1400 13F0383FFFC06C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00FE0078147F00 FC143F151F7EA26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F8148039701FFC 0020247AA32C>I<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1ED03C0ED07E0 A5EC800F011FEB1FC0ECE07F6DB51280160001035B6D13F89038003FE0232E7EAD2C>I< 3A7FF003FF80486C487FA3007F7F0001EB000FB3A3151FA2153F6D137F3900FE03FF90B7 FC6D15807F6D13CF902603FE07130029247FA32C>I<3A7FFF01FFFCB514FE148314016C 15FC3A03E0000F80A26D131F00011500A26D5B0000143EA26D137E017C137CA2017E13FC 013E5BA2EB3F01011F5BA21483010F5BA214C701075BA214EF01035BA214FF6D90C7FCA2 6D5A147C27247EA32C>II<3A3FFF03 FFF048018713F8A36C010313F03A00FC007E005D90387E01F8013F5BEB1F83EC87E09038 0FCFC0903807EF80EB03FF6D90C7FC5C6D5A147C14FE130180903803EF80903807CFC0EB 0FC7EC83E090381F01F0013F7FEB7E00017C137C49137E0001803A7FFF01FFFC1483B514 FE6C15FC140127247EA32C>I<3A7FFF01FFFCB5008113FE148314816C010113FC3A03E0 000F806C7E151F6D140012005D6D133E137C017E137E013E137CA2013F13FC6D5BA2EB0F 815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC80A2143EA2147E14 7CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C90C8FC6C5A6C5AEA 07E027367EA32C>I<15FF02071380141F147F91B512004913C04AC7FCEB03F85CB31307 EB1FE013FF007F5BB55A49C8FC6D7E6C7FC67F131FEB07F01303B380EB01FEECFFC06D13 FF6E1380141F14070200130021417BB92C>123 D125 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fv cmr10 10 81 /Fv 81 125 df11 DIII<001C131C007F137F39FF80FF80A26D13C0A3007F137F001C 131C00001300A40001130101801380A20003130301001300485B00061306000E130E485B 485B485B006013601A197DB92A>34 D<017C166048B416F02607C3801401260F81C01403 D900E04A5A001E01784A5A003E6D141F003C013FEC7F80007C90271BE003FFC7FC0218B5 12BF007891381FFC3E00F8011CC75A020C14FC5F4C5A16035F4C5A160F5F4CC8FC021C5B 00780118133E007C5D16FC003C01385B003E90383001F0001EEB70036C01E05B903981C0 07C03907C3800F2601FF005BD8007C49C9FC90C748EB07C0033EEB1FF04BEB3C3803FCEB F81C4B497E913A01F001E00602030103130703E0497E912607C0071480020F15011580DA 1F00018013C04A010F1300143E5C14FC5C495A13035C495A130F4A0107130149C701C013 805B013E1603490203140001FC6F5A49020113064848913800F00E0003705A49ED3C3849 ED1FF06C48ED07C03A437BBD45>37 D<121C127FEAFF80A213C0A3127F121C1200A41201 1380A2120313005A1206120E5A5A5A12600A1979B917>39 D<146014E0EB01C0EB0380EB 0700130E131E5B5BA25B485AA2485AA212075B120F90C7FCA25A121EA2123EA35AA65AB2 127CA67EA3121EA2121F7EA27F12077F1203A26C7EA26C7E1378A27F7F130E7FEB0380EB 01C0EB00E01460135278BD20>I<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378 A2137C133C133E131EA2131F7FA21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A2 5B131EA2133E133C137C1378A25BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD 20>I<15301578B3A6007FB812F8B912FCA26C17F8C80078C8FCB3A6153036367BAF41> 43 D<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A 5A5A12600A19798817>II<121C127FEAFF80A5EA7F00121C0909 798817>I<150C151E153EA2153C157CA2157815F8A215F01401A215E01403A215C01407 A21580140FA215005CA2141E143EA2143C147CA2147814F8A25C1301A25C1303A2495AA2 5C130FA291C7FC5BA2131E133EA2133C137CA2137813F8A25B1201A25B1203A25B1207A2 5B120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A12601F537BBD2A>IIIII<1538A2157815F8A214 0114031407A2140F141F141B14331473146314C313011483EB030313071306130C131C13 1813301370136013C01201EA038013005A120E120C5A123812305A12E0B712F8A3C73803 F800AB4A7E0103B512F8A325397EB82A>I<0006140CD80780133C9038F003F890B5FC5D 5D158092C7FC14FC38067FE090C9FCABEB07F8EB3FFE9038780F803907E007E090388003 F0496C7E12066E7EC87EA28181A21680A4123E127F487EA490C71300485C12E000605C12 700030495A00385C6C1303001E495A6C6C485A3907E03F800001B5C7FC38007FFCEB1FE0 213A7CB72A>II<12301238123E003FB612E0A316C0 5A168016000070C712060060140E5D151800E01438485C5D5DC712014A5A92C7FC5C140E 140C141C5CA25CA214F0495AA21303A25C1307A2130FA3495AA3133FA5137FA96DC8FC13 1E233B7BB82A>III<121C127FEA FF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A317>I<121C127FEA FF80A5EA7F00121CC7FCB2121C127F5A1380A4127F121D1201A412031300A25A1206A212 0E5A121812385A1260093479A317>I<007FB812F8B912FCA26C17F8CCFCAE007FB812F8 B912FCA26C17F836167B9F41>61 D<1538A3157CA315FEA34A7EA34A6C7EA202077FEC06 3FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC6003A202C07F1501A2 D901807F81A249C77F167FA20106810107B6FCA24981010CC7121FA2496E7EA3496E7EA3 496E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3373C7DBB3E>65 DI<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03 FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F48 48150FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A312 3F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE0 5C6D6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D 7BBA3C>III< B812F8A30001903880001F6C90C71201EE00FC177C173C171CA2170CA4170E1706A2ED01 80A21700A41503A21507151F91B5FCA3EC001F15071503A21501A692C8FCAD4813C0B612 C0A32F397DB836>III I<013FB512E0A39039001FFC00EC07F8B3B3A3123FEA7F80EAFFC0A44A5A1380D87F005B 0070131F6C5C6C495A6C49C7FC380781FC3801FFF038007F80233B7DB82B>III< B5933807FFF86E5DA20001F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7F01563A3D9C3 F815C3A2D9C1FCEC0183A3D9C0FEEC0303A2027F1406A36E6C130CA36E6C1318A26E6C13 30A36E6C1360A26E6C13C0A3913901FC0180A3913900FE0300A2ED7F06A3ED3F8CA2ED1F D8A3ED0FF0A3486C6D5A487ED80FFC6D48497EB500C00203B512F8A2ED018045397DB84C >I III82 D I<003FB812E0A3D9C003EB001F273E0001FE130348EE01F00078160000701770A3006017 30A400E01738481718A4C71600B3B0913807FF80011FB612E0A335397DB83C>IIII89 D91 D<3901800180000313033907000700000E130E485B0018 131800381338003013300070137000601360A200E013E0485BA400CE13CE39FF80FF806D 13C0A3007F137FA2393F803F80390E000E001A1974B92A>II97 DIIII<147E903803 FF8090380FC1E0EB1F8790383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801 F8C7FCB3AB487E387FFFF8A31C3B7FBA19>IIIIIII<2703F00FF0EB1FE000FFD9 3FFCEB7FF8913AF03F01E07E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE01 FE14DC49D907F8EB0FC0A2495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA34025 7EA445>I<3903F00FF000FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013FE 496D7EA25BA35BB3A3486C497EB500C1B51280A329257EA42E>II<39 03F01FE000FFEB7FF89038F1E07E9039F3801F803A07F7000FC0D803FEEB07E049EB03F0 4914F849130116FC150016FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE0 01F614C09039F7803F009038F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357E A42E>II<3807E01F00FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE9038 EC03E09038FC0080491300A45BB3A2487EB512F0A31C257EA421>II<1318A51338A31378A313F812 0112031207001FB5FCB6FCA2D801F8C7FCB215C0A93800FC011580EB7C03017E13006D5A EB0FFEEB01F81A347FB220>IIIII< B538803FFEA33A0FF8000FF06C48EB07C00003EC03806C7E16007F00001406A2017E5BA2 137F6D5BA26D6C5AA2ECC070010F1360A26D6C5AA214F101035BA2D901FBC7FCA214FF6D 5AA2147CA31438A21430A214701460A25CA2EA7C0100FE5B130391C8FC1306EAFC0EEA70 1C6C5AEA1FF0EA0FC027357EA32C>I<003FB512FCA2EB8003D83E0013F8003CEB07F000 38EB0FE012300070EB1FC0EC3F800060137F150014FE495AA2C6485A495AA2495A495A49 5AA290387F000613FEA2485A485A0007140E5B4848130C4848131CA24848133C48C7127C 48EB03FC90B5FCA21F247EA325>III E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fw cmssbx10 9 48 /Fw 48 123 df46 D49 DII I<000FB512F84880A65D01F8C8FCAAEBFBFC90B57E15E08181819038FE0FFEEBF80701F0 7F13E080D80FC01480C7FCA81218A2123C4A1300127E127F486C5A9038E03FFE6CB5FC5D 6C5C6C5C6C5C00031480C649C7FCEB1FF021367DB329>II65 D<91380FFF8091B512F8010714FF011F15C05B90B7 FC5A48168048EBFC019138E0003F480180130F4890C71207491403003FED01004991C7FC 5B127FA25BA212FFA25BAC7FA2127FA27FA2123F7F7F001F16C06D14016C6D13076C01E0 130F02FCEB7FE06C90B6FC7E7E133F6D15800107ECFE00010014F8020F13802B387BB535 >67 D<007FB512F0B7FC16E016F88216FF17809026E0007F13C0150F030313E06F13F081 EE7FF8163FA2EE1FFCA3160F17FEAE17FCA2161FA217F8163F167F17F016FF030313E015 0F037F13C090B7128017005E16F816E016806C02F8C7FC2F3479B33B>I<007FB612E0B7 12F0A616E001E0C8FCAE90B6FC1680A5160001E0C8FCAE90B612F016F8A76C15F0253479 B330>I<007FB612C0B712E0A616C001E0C8FCAE90B512FC81A55D01E0C8FCB3A46C5A23 3479B32E>I<913807FFC091B512FC010314FF010F15C0013F15F05B48B7FC5A4AC613E0 4801F0131F4801C013074849130391C71201484814004915401700485AA25BA312FF5BA7 92381FFFF8A57F127FED001FA27FA26C7EA27F6C7E806C7F6C13F06C01FE137F91B6FC7E 6C7E7F010F15E0010315800100ECFC00020713802D387CB537>III75 DIIII<007FB512F0B7FC16C08216F8A2829039E0007FFE151FED07FFA2811780A2 81A55DA217005DA2ED1FFE157F90B65A5E5E5E168003FCC7FC01E0C9FCB36C5A293479B3 35>I<007FB512E0B612FEEDFFC08216F882829038E0007FED0FFF81811780A281A45DA2 17005D4B5A157F90B65A5E5E16C093C7FC15F89038E01FFC140F816E7EA26E7F80826E7F A26F7EA26F7E151F826F7EA26F7EA26F13806F13C0A26C486D13802A3479B335>82 DI<007FB712FEB9FCA66C16FEC7D81FFCC7FCB3B3 A76E5A30347DB337>IIIII97 DII III104 DI108 DIIII<143C007F13FCEAFF83 1387138F139FA213BF1480EBFE005B13F0A25BA25BB36C5A16237CA21C>114 DIIII<007F 147F486C13FF6D5A127F01E013FE003F130313F015FC001F130713F8000F14F8EBFC0F12 0715F0EBFE1F120315E0EA01FF143F6C14C0A214BF017F1380A2EB3FFF15007FA26D5AA3 13075C1303A2495AA3495AA2495A12C038F07FC0B5FC5C91C7FC5B5B6C5AEA1FC020327E A125>121 D<003FB512F84814FCA47EC7EA3FF8EC7FF0ECFFE015C05B49138049130049 5A5C131F495A495A495A5C5A485B4890C7FC485A5B121F485A485A90B512FCB612FEA46C 14FC1F227EA124>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fx cmr10 10.95 33 /Fx 33 122 df<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113 80120313005A120E5A1218123812300B1C798919>44 D<121EEA7F80A2EAFFC0A4EA7F80 A2EA1E000A0A798919>46 D67 D73 D75 DIII 80 D83 D85 DI89 D97 D<49B4FC010F13E090383F00 F8017C131E4848131F4848137F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FC A290C9FC5AAB6C7EA3003FEC01C07F001F140316806C6C13076C6C14000003140E6C6C13 1E6C6C137890383F01F090380FFFC0D901FEC7FC222A7DA828>99 DIII104 DI107 DI<2701F801FE14FF00FF902707FFC00313E0913B1E 07E00F03F0913B7803F03C01F80007903BE001F87000FC2603F9C06D487F000101805C01 FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8F87FD9FC3F13FE A347287DA74C>I<3901F801FE00FF903807FFC091381E07E091387803F000079038E001 F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8F87F13FCA32E 287DA733>I<14FF010713E090381F81F890387E007E01F8131F4848EB0F804848EB07C0 4848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA44815FFA96C15FEA36C6CEB 01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D8007EEB7E009038 3F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC00FF90381FFF8091387C0F E09039FDE003F03A03FFC001FC6C496C7E91C7127F49EC3F805BEE1FC017E0A2EE0FF0A3 EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C001F89039FDE007F0 9039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA733>I<3901F807E0 00FFEB1FF8EC787CECE1FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35B B3A5487EB512FEA31F287EA724>114 D<90383FC0603901FFF8E03807C03F381F000F00 3E1307003C1303127C0078130112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE 6C7F6C1480000114C0D8003F13E0010313F0EB001FEC0FF800E01303A214017E1400A27E 15F07E14016C14E06CEB03C0903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824> I<131CA6133CA4137CA213FCA2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0 A912009038FE01C0A2EB7F03013F138090381F8700EB07FEEB01F81B397EB723>III I121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fy cmr12 14.4 22 /Fy 22 122 df65 D67 D70 DI76 D78 D82 D97 DII<17FF4BB5FCA4ED0007160182B3A6EC0FF8EC7FFF49B512E0903907FC 03F090391FE0007C49487F49C7120F01FE80484880485A000781484880A2485AA2485AA2 127FA35B12FFAB127FA27FA2123FA27F121FA26C6C5C00075D7F6C6C5C6C6C5C6C6C021E 7F6D6C017C13E0D91FC049EBFF8090390FF807E00103B512800100495ADA1FF091C7FC39 547CD241>II<1378EA01FE487E487FA66C90C7FC6C 5AEA007890C8FCB0EB7F80B5FCA41203C6FC137FB3B3A43801FFE0B61280A419507CCF21 >105 D<01FFD907FEEC03FFB590261FFFC0010F13E0037F01F0013F13F8912701F80FFC 9038FC07FE913D03C003FE01E001FF000390260700019038038000C6010E6D6C48C76C7E 6D48DA7F8E6E7E4A159CA24ADA3FF86E7E02605D14E04A5DA34A5DB3AD2601FFE0DAFFF0 EC7FF8B6D8C07F9026FFE03FB512F0A45C347CB363>109 D<01FFEB07FCB590383FFF80 92B512E0913901F00FF8913903C007FC000349C66C7EC6010E13016D486D7E5C14300270 6E7E146014E05CA35CB3AD2601FFE0903801FFE0B600C0B612C0A43A347CB341>II<90397F8007FCB590387FFF800281B512E0913987F00FF89139 8F8003FC000190399E0001FF6C01BC6D7FD97FF86E7E4A6E7E4A6E7E4A140F844A6E7EA2 717EA3717EA4711380AB4D1300A44D5AA24D5AA2606E140F4D5A6E5D6E4A5A6E4A5A02BC 4AC7FC029E495A028FEB07FC913987E01FF00281B512C0DA807F90C8FCED0FF892CAFCB1 3801FFE0B612C0A4394B7DB341>I<01FFEB1F80B5EB7FF0913801FFF8913803E1FC9138 0783FE0003EB0F07C6131EEB7F1C1438143091387003FC91386000F0160014E05CA45CB3 AA8048487EB612F0A427347DB32E>114 DIII121 D E %EndDVIPSBitmapFont end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 248 97 a Fy(A)39 b(Core)f(Library)f(F)-10 b(or)38 b(Robust)h(Numeric)d(and)j(Geometric)c(Computation)934 335 y Fx(V.)c(Karamc)m(heti,)f(C.)h(Li,)e(I.)i(P)m(ec)m(h)m(tc)m (hanski,)h(and)d(C.)i(Y)-8 b(ap)1074 448 y(Couran)m(t)30 b(Institute)g(of)g(Mathematical)i(Sciences)1525 561 y(New)e(Y)-8 b(ork)31 b(Univ)m(ersit)m(y)-152 1376 y Fw(Abstract)-152 1558 y Fv(Nonrobustness)f(is)g(a)g(w)n(ell-kno)n(wn)f(problem)h(in)h (man)n(y)f(areas)-152 1657 y(of)j(computational)g(science.)53 b(Un)n(til)34 b(no)n(w,)g(robustness)e(tec)n(h-)-152 1757 y(niques)g(and)f(the)h(construction)f(of)g(robust)g(algorithms)f (ha)n(v)n(e)-152 1857 y(b)r(een)21 b(the)g(pro)n(vince)e(of)i(exp)r (erts)f(in)g(this)h(\014eld)g(of)f(researc)n(h.)33 b(W)-7 b(e)-152 1956 y(describ)r(e)19 b(a)g(new)h Fu(C/C++)d Fv(library)h(\()p Ft(Core)p Fv(\))j(for)e(robust)f(n)n(umeric)-152 2056 y(and)33 b(geometric)f(computation)h(based)f(on)h(the)g (principles)g(of)-152 2156 y(Exact)24 b(Geometric)h(Computation)g (\(EGC\).)g(Through)f(our)g(li-)-152 2255 y(brary)-7 b(,)27 b(for)h(the)g(\014rst)g(time,)h(an)n(y)e(programmer)f(can)h (write)h(ro-)-152 2355 y(bust)20 b(and)g(e\016cien)n(t)f(algorithms.)33 b(The)20 b(Core)e(Library)g(is)h(based)-152 2454 y(on)36 b(a)g(no)n(v)n(el)f(n)n(umerical)g(core)g(that)i(is)f(p)r(o)n(w)n (erful)g(enough)f(to)-152 2554 y(supp)r(ort)f(EGC)g(for)g(algebraic)f (problems.)56 b(This)34 b(is)g(coupled)-152 2654 y(with)d(a)e(simple)h (deliv)n(ery)f(mec)n(hanism)h(whic)n(h)g(transparen)n(tly)-152 2753 y(extends)20 b(con)n(v)n(en)n(tional)e Fu(C/C++)f Fv(programs)h(in)n(to)h(robust)g(co)r(des.)-152 2853 y(W)-7 b(e)33 b(are)f(curren)n(tly)g(addressing)f(e\016ciency)h(issues) g(in)h(our)f(li-)-152 2953 y(brary:)h(\(a\))22 b(at)g(the)g(compiler)f (and)h(language)e(lev)n(el,)i(\(b\))h(at)f(the)-152 3052 y(lev)n(el)36 b(of)f(incorp)r(orating)f(EGC)i(tec)n(hniques,)i(as)d(w)n (ell)g(as)h(the)-152 3152 y(\(c\))h(the)f(system)f(in)n(tegration)g(of) g(b)r(oth)i(\(a\))f(and)f(\(b\).)62 b(Pilot)-152 3251 y(exp)r(erimen)n(tal)26 b(results)f(are)g(describ)r(ed.)36 b(The)26 b(basic)f(library)g(is)-152 3351 y(a)n(v)-5 b(ailable)22 b(at)h Fu(http://cs.nyu.ed)o(u/)o(ex)o(act)o(/c)o(ore)o(/) 17 b Fv(and)23 b(the)-152 3451 y Fu(C++-to-C)i Fv(compiler)i(is)g (under)h(dev)n(elopmen)n(t.)-152 3674 y Fw(1)83 b(INTRODUCTION)-152 3856 y Fv(Numerical)28 b(non-robustness)e(is)i(w)n(ell-kno)n(wn)e(in)i (man)n(y)g(areas)-152 3955 y(of)42 b(computational)f(sciences)g(and)h (engineering)f([7)o(].)80 b(Non-)-152 4055 y(robustness)35 b(in)h(this)g(pap)r(er)745 4025 y Fs(1)817 4055 y Fv(refers)f(to)g (what)h(is)f(sometimes)-152 4154 y(kno)n(wn)30 b(as)f(\\catastrophic)f (errors":)39 b(errors)28 b(that)i(cause)f(pro-)-152 4254 y(grams)21 b(to)h(en)n(ter)f(unan)n(ticipated)h(states)f(and)h(hence)g (crash.)34 b(In)-152 4354 y(applications)27 b(areas)e(suc)n(h)i(as)f (ph)n(ysical)h(sim)n(ulation)f(and)h(geo-)-152 4453 y(metric)35 b(mo)r(deling)g(and)g(design,)i(the)f(underlying)e(geometry)p -152 4511 797 4 v -65 4560 a Fr(1)-33 4585 y Fs(W)-5 b(e)22 b(are)g(only)h(in)n(terested)d(in)j(catastrophic)e(errors)h (that)h(arise)f(from)g(n)n(u-)-152 4651 y(merical)32 b(appro)n(ximations.)63 b(The)33 b(computing)f(literature)g(often)g (refers)h(to)-152 4718 y(preformance)27 b(issues)j(suc)n(h)f(as)h (scalabilit)n(y)f(of)g(algorithms)g(as)h(\\robustness)-152 4784 y(issues".)g(Suc)n(h)21 b(issues)h(are)g(also)h(outside)e(our)h (scop)r(e.)2040 1376 y Fv(gro)n(ws)41 b(increasingly)g(complicated,)46 b(and)c(non-linear)g(mo)r(d-)2040 1476 y(els)34 b(are)f(increasingly)f (used.)56 b(Both)33 b(these)h(trends)g(imply)g(an)2040 1575 y(acute)h(need)h(for)f(solving)f(non-robustness)g(in)h(a)g (systematic)2040 1675 y(and)26 b(scien)n(ti\014cally)e(sound)i(w)n(a)n (y)-7 b(.)35 b(Although)25 b(there)h(ha)n(v)n(e)e(b)r(een)2040 1774 y(man)n(y)i(researc)n(h)f(e\013orts)h(to)h(create)e(robust)h (algorithms,)g(suc)n(h)2040 1874 y(solutions)38 b(are)f(rarely)f(used)i (in)h(practice:)57 b Fq(ad)40 b(ho)l(c)h(epsilon-)2040 1974 y(twe)l(aking)47 b(rules)f(r)l(emain)g(the)g(mainstay)h(of)g(pr)l (actitioners.)2040 2073 y Fv(Without)39 b(going)d(in)n(to)i(the)g (relativ)n(e)f(merits)g(of)h(the)g(v)-5 b(arious)2040 2173 y(prop)r(osed)37 b(solutions,)i(there)e(is)h(one)f(o)n(v)n (erriding)e(reason)h(for)2040 2273 y(this)k(unfortunate)f(state)g(of)g (a\013airs:)59 b(most)39 b(previous)g(solu-)2040 2372 y(tions)c(apparen)n(tly)e(require)h(programmers)e(to)j(c)n(hange)f (their)2040 2472 y(programming)20 b(b)r(eha)n(vior,)i(sometimes)g(in)h (radical)e(w)n(a)n(ys.)33 b(It)23 b(is)2040 2571 y(one)e(thing)h(to)f (demonstrate)f(that)i(a)f(tec)n(hnique)g(that)h(can)f(pro-)2040 2671 y(duce)30 b(a)f(robust)g(algorithm)f(for)i(a)f(particular)f (problem.)42 b(But)2040 2771 y(it)34 b(ma)n(y)f(b)r(e)h(another)e (problem)h(when)h(p)r(oten)n(tial)f(users)g(need)2040 2870 y(to)27 b(\(i\))g(mo)r(dify)g(the)g(tec)n(hnique)f(for)g(their)h (particular)e(require-)2040 2970 y(men)n(ts,)41 b(or)c(\(ii\))i(extend) f(it)h(to)f(related)f(problems.)68 b(Robust)2040 3070 y(solutions,)21 b(esp)r(ecially)d(those)i(based)3183 3039 y Fs(2)3239 3070 y Fv(on)f(\\\014xed-precision)f(ge-)2040 3169 y(ometry",)33 b(are)e(particularly)g(resistan)n(t)h(to)g(\(i\))i (and)e(\(ii\).)53 b(See)2040 3269 y([33)o(])28 b(for)f(a)g(surv)n(ey)f (of)i(robustness)f(literature.)2152 3368 y(In)22 b(this)g(pap)r(er,)h (w)n(e)e(describ)r(e)h(the)g Fp(Core)j(Library)e Fv(\()p Ft(Core)2040 3468 y Fv(for)28 b(short\),)g(a)g(new)g Fu(C/C++)e Fv(library)h(for)h(robust)f(n)n(umeric)h(and)2040 3568 y(geometric)f(computation.)39 b(Our)27 b(library)g(API)i (\(\\application)2040 3667 y(programmer)20 b(in)n(terface"\))i(mo)r (del,)h(as)f(\014rst)g(prop)r(osed)g(in)g([32],)2040 3767 y(is)37 b(able)g(to)g(deliv)n(er)f(p)r(o)n(w)n(erful)g(robustness) g(tec)n(hniques)h(in)g(a)2040 3867 y(relativ)n(ely)j(transparen)n(t)f (manner.)77 b(Th)n(us,)44 b(to)d(construct)f(a)2040 3966 y(stand-alone)21 b(robust)h(algorithm,)g(the)h Ft(Core)g Fv(API)f(allo)n(ws)f(the)2040 4066 y(programmer)36 b(to)j(co)r(de)f (the)h(algorithm)f(without)h(explicitly)2040 4165 y(w)n(orrying)18 b(ab)r(out)j(robustness.)33 b(W)-7 b(e)21 b(do)g(require)e(the)i (program-)2040 4265 y(mer)28 b(to)g(design)f(his)h(or)f(her)h (algorithm)f(assuming)g(exact)h(real)2040 4365 y(arithmetic)40 b(in)f(the)h(standard)f(Euclidean)g(geometry)-7 b(.)71 b(But)2040 4464 y(this)23 b(is)g(almost)g(no)f(requiremen)n(t)h(at)f (all,)i(as)e(Euclidean)h(geom-)2040 4564 y(etry)j(is)f(the)i(default)f (mo)r(del)g(of)g(most)f(geometric)g(concepts)g(in)2040 4664 y(practice.)35 b(This)23 b(a)n(v)n(oids,)f(for)g(instance,)i(the)g (man)n(y)e(highly)h(un-)2040 4763 y(in)n(tuitiv)n(e)31 b(surprises)e(when)j(researc)n(hers)27 b(use)k(\014xed-precision)2040 4863 y(geometries.)j(The)22 b(programmer)d(ma)n(y)i(pa)n(y)g(only)h (minimal)g(at-)2040 4962 y(ten)n(tion)32 b(to)g(our)g(library)-7 b(,)32 b(only)g(making)f(sure)h(that)g(the)h(\014nal)2040 5062 y Fu(C/C++)27 b Fv(program)g(con)n(tains)h(a)h(short)f(\(e.g.,)i (2-line\))f(pream)n(ble)p 2040 5129 V 2127 5177 a Fr(2)2159 5202 y Fs(These)j(are)g(the)g(\\geometries")f(that)h(researc)n(hers)f (need)g(to)h(de\014ne)f(to)2040 5268 y(appro)n(ximate)22 b(the)g(standard)h(Euclidean)e(geometry)g(when)i(they)f(op)r(erate)g (in)2040 5335 y(\014xed-precision)e(arithmetic.)p eop %%Page: 2 2 2 1 bop -152 -69 a Fv(to)31 b(in)n(v)n(ok)n(e)e(our)h(library)-7 b(.)45 b(If)31 b(this)g(program)e(is)i(no)n(w)f(compiled)-152 31 y(with)37 b(a)e Fu(C++)f Fv(compiler)i(and)f(link)n(ed)h(with)g(our) f(library)-7 b(,)37 b(this)-152 131 y(co)r(de)k(will)g(b)r(e)h(robust.) 77 b(In)41 b(general,)i(suc)n(h)e(a)f(library)g(API)-152 230 y(allo)n(ws)g(us)g(to)h(con)n(v)n(ert)e(most)h(stand-alone)g (programs)e(in)n(to)-152 330 y(robust)27 b(programs)f(with)i(minimal)g (e\013ort.)-40 429 y(The)39 b(reader)e(familiar)h(with)h(ob)5 b(ject-orien)n(ted)37 b(program-)-152 529 y(ming)h(languages)e(ma)n(y)h (susp)r(ect)h(that)g(our)e(library)h(will)h(re-)-152 629 y(place)19 b(standard)f(n)n(um)n(b)r(er)g(t)n(yp)r(es)h(\(suc)n(h)g (as)f Fu(int)g Fv(or)f Fu(double)p Fv(\))g(b)n(y)-152 728 y(some)26 b(bigNum)n(b)r(er)f(class.)36 b(This)26 b(is)f(correct)g(as)g(far)g(as)h(it)g(go)r(es,)-152 828 y(but)i(as)f(w)n(e)h(shall)f(see,)g(something)g(fundamen)n(tally)h (deep)r(er)f(is)-152 928 y(going)j(on.)47 b(T)-7 b(o)31 b(giv)n(e)f(a)h(hin)n(t)h(of)f(this,)h(it)g(ma)n(y)e(b)r(e)h(noted)h (that)-152 1027 y(the)d(\\pream)n(bled")e(co)r(de)h(is)g(robust)g(ev)n (en)g(if)h(it)g(in)n(v)n(olv)n(es)d(non-)-152 1127 y(rational)19 b(op)r(erations)f(suc)n(h)i(as)f(square)f(ro)r(ots.)33 b(No)20 b(bigNum)n(b)r(er)-152 1226 y(pac)n(k)-5 b(age)26 b(alone)h(can)g(ensure)g(this)h(b)r(eha)n(vior.)-40 1326 y(Our)e(library)e(supp)r(orts)i(the)g Fp(Exact)31 b(Geometric)e(Com-) -152 1426 y(putation)22 b Fv(\(EGC\))g(approac)n(h)d([34)o(])j(to)f (robustness)f(\(although)-152 1525 y(a)37 b(user)g(is)g(free)g(to)g (ignore)f(EGC)h(and)g(use)g(the)g Ft(Core)h Fv(API)-152 1625 y(and)24 b(features)g(for)f(other)h(purp)r(oses\).)35 b(As)24 b(the)h(name)f(of)g(the)g(li-)-152 1725 y(brary)h(suggests,)h (the)h(heart)f(of)g(our)g(library)f(is)i(indeed)g(a)f(new)-152 1824 y(\\n)n(umerical)37 b(core".)68 b(Just)38 b(as)g(the)g(\015oating) g(p)r(oin)n(t)g(pac)n(k)-5 b(age)-152 1924 y(\(hardw)n(are\))33 b(constitutes)i(the)g(heart)f(of)g(con)n(temp)r(orary)e(sci-)-152 2023 y(en)n(ti\014c)e(computation,)h(our)e(\\n)n(umerical)f(core")h (can)g(serv)n(e)g(as)-152 2123 y(the)36 b(basis)f(for)g(EGC)h (computing.)61 b(In)35 b(the)i(EGC)e(approac)n(h)-152 2223 y(to)25 b(robustness,)g(the)g(k)n(ey)g(e\016ciency)g(principle)g (is)g Fp(precision-)-152 2322 y(sensitivit)m(y)33 b Fv(\(cf.)h([35)o(,) g(29)o(]\).)56 b(An)34 b(algorithm)e(is)i(\\precision-)-152 2422 y(sensitiv)n(e")24 b(if)h(its)f(running)g(time)h(scales)f(with)h (the)g(actual)f(pre-)-152 2522 y(cision)38 b(needed)g(for)f(eac)n(h)h (input)g(instance.)68 b(Precision)36 b(sen-)-152 2621 y(sitiv)n(e)j(tec)n(hniques)g(tak)n(e)f(man)n(y)g(forms.)70 b(One)39 b(is)g(\\\015oating-)-152 2721 y(p)r(oin)n(t)f(\014lters")e (whic)n(h)h(sev)n(eral)e(groups)h([14)o(,)h(10)o(,)h(2)o(,)f(5])g(ha)n (v)n(e)-152 2821 y(sho)n(wn)22 b(to)g(b)r(e)g(v)n(ery)f(e\013ectiv)n (e.)35 b(Indeed,)24 b(exploiting)d(precision-)-152 2920 y(sensitivit)n(y)36 b(is)g(what)g(distinguishes)g(the)g(curren)n(t)g (EGC)g(ap-)-152 3020 y(proac)n(hes)e([14)o(,)h(6,)g(5,)g(3)o(,)h(30)o (,)f(21)o(])h(from)f(earlier)e(attempts)j(to)-152 3119 y(use)45 b(\\exact)e(arithmetic".)88 b(These)44 b(early)g(attempts)h (\(e.g.,)-152 3219 y([23)o(,)37 b(36)o(]\))h(inevitably)e(fare)g(badly) h(against)f(w)n(orse-case)e(sce-)-152 3319 y(narios.)h(Man)n(y)23 b(of)i(these)f(EGC)g(tec)n(hniques)g(will)g(b)r(e)h(a)n(v)-5 b(ailable)-152 3418 y(through)27 b(our)g(library)-7 b(.)-40 3518 y(The)19 b(main)g(theme)g(in)g(our)f(curren)n(t)g(dev)n(elopmen)n (t)g(of)h Ft(Core)-152 3618 y Fv(is)31 b(co)r(de)g(e\016ciency)-7 b(.)46 b(W)-7 b(e)31 b(attac)n(k)f(this)h(at)g(the)g(lev)n(el)g(of)g (EGC-)-152 3717 y(based)f(tec)n(hniques)g(\(e.g.,)h(\015oating)f(p)r (oin)n(t)g(\014lters\))h(as)e(w)n(ell)i(as)-152 3817 y(at)i(the)f(lev)n(el)g(of)g(compiler)g(optimization.)51 b(The)32 b(latter)g(aims)-152 3916 y(at)25 b(applying)f(aggressiv)n(e)e (optimization)i(tec)n(hniques)g(to)h(auto-)-152 4016 y(matically)19 b(pro)r(duce)g(robust)f(co)r(de)i(whose)e(sp)r(eed)h(on) g(\\most)g(in-)-152 4116 y(puts")g(is)g(within)g(a)g(small)g(constan)n (t)f(factor)g(of)h(that)g(ac)n(hiev)-5 b(able)-152 4215 y(b)n(y)33 b(hand-co)r(ded)g(optimizations.)54 b(As)33 b(w)n(e)g(will)h(see)f(\(Section)-152 4315 y(4\),)22 b(this)e(optimization)g(researc)n(h)d(in)n(v)n(olv)n(es)h(a)i(ric)n(h)f (in)n(terpla)n(y)g(of)-152 4415 y(EGC)24 b(tec)n(hniques)g(and)g (compiler)g(optimizations)f(\(esp)r(ecially)-152 4514 y(in)37 b(the)f(con)n(text)g(of)g(an)g(ob)5 b(ject-orien)n(ted)34 b(language)h(suc)n(h)h(as)-152 4614 y Fu(C++)p Fv(\).)-40 4713 y(The)31 b(Core)f(Library)g(sources,)g(with)h(all)g(the)g (examples)g(in)-152 4813 y(this)d(pap)r(er,)f(are)g(a)n(v)-5 b(ailable)26 b(at)i(our)f(w)n(ebsite)g([19)o(].)-152 4975 y Fp(O)m(VER)-11 b(VIEW)32 b(OF)f(P)-8 b(APER.)79 b Fv(In)28 b(the)f(next)h(section,)f(w)n(e)-152 5075 y(\014rst)i(giv)n(e)f(a)g(user-viewp)r(oin)n(t)g(of)g(the)i(Core)d (Library)-7 b(.)39 b(In)29 b(Sec-)-152 5174 y(tion)h(3,)h(w)n(e)f (describ)r(e)f(the)i(in)n(ternal)e(view.)45 b(In)30 b(Section)g(4,)g(w) n(e)-152 5274 y(address)c(compiler)f(analysis)g(and)i(optimization)f (issues.)36 b(The)-152 5373 y(preliminary)d(exp)r(erimen)n(tal)g (results)g(are)g(sho)n(wn)g(in)h(Section)2040 -69 y(5.)j(W)-7 b(e)28 b(conclude)f(in)h(Section)f(6.)2040 155 y Fw(2)82 b(A)28 b(NO)n(VEL)g(NUMERICAL)e(CORE)2040 337 y Fv(This)i(section)g (pro)n(vides)f(a)h(user)g(\(API\))h(view)f(of)g Ft(Core)p Fv(.)40 b(The)2040 437 y(k)n(ey)25 b(ideas)g(from)g([32)o(])h(are)f (\(a\))h(a)f(no)n(v)n(el)f(and)i(deceptiv)n(ely)f(sim-)2040 536 y(ple)32 b(prop)r(osal)e(for)h(a)g(\\n)n(um)n(b)r(er)f(core")g (based)h(on)g(4)g(accuracy)2040 636 y(lev)n(els,)i(and)g(\(b\))g(a)g (transparen)n(t)e(\\deliv)n(ery)g(mec)n(hanism")h(to)2040 735 y(bring)21 b(this)h(core)f(capabilit)n(y)g(to)h(users.)34 b(First)21 b(w)n(e)h(describ)r(e)f(the)2040 835 y(four)27 b(lev)n(els)g(of)h Fp(core)k(\(n)m(umerical\))f(accuracies)p Fv(:)2148 1005 y Fo(\017)37 b Fp(LEVEL)43 b(I:)g(Mac)m(hine)h(Accuracy) -8 b(.)68 b Fv(This)38 b(ma)n(y)e(b)r(e)2227 1105 y(iden)n(ti\014ed)28 b(with)g(the)g(IEEE-standard)d([26)o(].)2148 1233 y Fo(\017)37 b Fp(LEVEL)47 b(I)s(I:)g(Arbitrary)i(Accuracy)-8 b(.)79 b Fv(Users)40 b(can)2227 1333 y(sp)r(ecify)19 b(an)n(y)e(desired)h (accuracy)-7 b(.)32 b(E.g.,)20 b(\\200)c(bits")i(means)2227 1432 y(that)31 b(n)n(umerical)f(op)r(erations)f(will)i(not)g(cause)e (an)i(o)n(v)n(er-)2227 1532 y(\015o)n(w)21 b(or)g(under\015o)n(w)h(un)n (til)g(200)f(bits)h(are)f(exceeded.)35 b(This)2227 1631 y(feature)19 b(is)h(widely)f(a)n(v)-5 b(ailable)18 b(in)i(mo)r(dern)f (da)n(y)g(computer)2227 1731 y(algebra)26 b(systems)h(suc)n(h)g(as)g (Maple)g(or)g(Mathematica.)2148 1859 y Fo(\017)37 b Fp(LEVEL)44 b(I)s(I)s(I:)g(Guaran)m(teed)h(Accuracy)-8 b(.)72 b Fv(This)38 b(is)2227 1959 y(the)25 b(most)f(in)n(teresting)f(lev)n(el:)35 b(sp)r(ecifying)24 b(\\200)f(relativ)n(e)2227 2059 y(bits")37 b(means)g(that)h(the)f(\014rst)h(200)d(signi\014can)n(t)i(bits)h(of) 2227 2158 y(a)28 b(computed)i(quan)n(tit)n(y)e(are)g(correct.)39 b(The)29 b Fu(Real/Expr)2227 2258 y Fv(pac)n(k)-5 b(age)38 b([35)o(,)h(24)o(])h(is)f(the)h(\014rst)f(to)g(ac)n(hiev)n(e)f(Lev)n (el)h(I)r(I)r(I)2227 2358 y(accuracy)26 b(for)h(a)g(non-rational)f (family)h(of)h(expressions.)2148 2486 y Fo(\017)37 b Fp(LEVEL)45 b(IV:)f(Mixed)g(Accuracy)-8 b(.)71 b Fv(The)39 b(previous)2227 2585 y(accuracy)24 b(lev)n(els)h(are)g(in)n(termixed)g (and)h(lo)r(calized)f(to)h(in-)2227 2685 y(dividual)e(v)-5 b(ariables,)24 b(allo)n(wing)f(\014ner)h(accuracy)f(con)n(trol.)2227 2785 y(This)k(has)h(not)f(b)r(een)h(implemen)n(ted.)2152 2955 y(W)-7 b(e)24 b(next)f(describ)r(e)g(the)g(mec)n(hanism)g(for)g (deliv)n(ering)f(these)2040 3054 y(core)32 b(accuracies)e(to)j(the)g (user.)51 b(A)33 b(normal)e Fu(C/C++)g Fv(program)2040 3154 y(only)25 b(ha)n(v)n(e)f(to)g(b)r(e)i(preceded)e(b)n(y)h(a)g (suitable)g Fp(pream)m(ble)p Fv(.)35 b(The)2040 3254 y(simplest)28 b(pream)n(ble)f(is:)p 2139 3336 1795 4 v 2139 3597 4 261 v 2165 3445 a Fu(#define)40 b(Level)i(N)305 b(/*)42 b(N=1,2,3)f(or)i(4)g(*/)2165 3545 y(#include)d("CORE.h")p 3931 3597 V 2139 3600 1795 4 v 2040 3721 a Fv(The)i(program)e(is)i (then)g(compiled)g(in)g(the)g(usual)g(w)n(a)n(y)-7 b(,)44 b(al-)2040 3821 y(though)34 b(its)g(b)r(eha)n(vior)e(no)n(w)h(dep)r (ends)h(on)g(the)g(c)n(hosen)f(accu-)2040 3921 y(racy)22 b(lev)n(el.)34 b(In)23 b(other)g(w)n(ords,)f(a)g(single)h(program)d (can)j(\\sim)n(ul-)2040 4020 y(taneously")29 b(access)h(the)h (di\013eren)n(t)g(accuracy)d(lev)n(els)i(literally)2040 4120 y(at)35 b(the)h(\015ip)g(of)g(a)f(switc)n(h)g(\(viz.,)j(setting)d (a)g(v)-5 b(ariable\).)60 b(Fine)2040 4219 y(tuning)29 b(of)f(accuracy)e(via)i(the)g(setting)h(of)f(precision)f(for)h(indi-) 2040 4319 y(vidual)35 b(v)-5 b(ariables)35 b(is)g(p)r(ossible.)61 b(Our)35 b(library)f(supp)r(orts)h(the)2040 4419 y(setting)c(of)f (precision)f(in)i(b)r(oth)g(relativ)n(e)e(and)i(absolute)e(\(or)h(a) 2040 4518 y(mixture)37 b(thereof)g([35)o(]\))h(terms.)65 b(In)37 b(the)h(follo)n(wing,)g(w)n(e)f(ex-)2040 4618 y(plain)e(what)f(our)g(library)f(framew)n(ork)f(means)i(for)g(the)h (user,)2040 4718 y(and)28 b(ho)n(w)e(it)j(is)e(can)g(b)r(e)h(used)g(to) f(ac)n(hiev)n(e)g(robustness.)2040 4879 y Fp(ILLUSTRA)-8 b(TIVE)24 b(EXAMPLES.)60 b Fv(W)-7 b(e)19 b(curren)n(tly)e(ha)n(v)n(e) 2040 4979 y(a)30 b(protot)n(yp)r(e)g(of)h Ft(Core)g Fv(in)g(whic)n(h)g (the)g(\014rst)g(three)f(accuracy)2040 5079 y(lev)n(els)19 b(can)f(b)r(e)i(accessed.)33 b(This)19 b(is)g(basically)f(ac)n(hiev)n (ed)g(b)n(y)h(con-)2040 5178 y(structing)k(a)g(wrapp)r(er)g(around)g (the)g Fu(Real/Expr)d Fv(pac)n(k)-5 b(age)22 b(F)-7 b(or)2040 5278 y(brevit)n(y)g(,)23 b(w)n(e)f(only)g(discuss)f(Lev)n(els)h(I)g (and)g(I)r(I)r(I)h(in)g(the)f(examples)2040 5378 y(here.)p eop %%Page: 3 3 3 2 bop -44 -69 a Fo(\017)37 b Fv(W)-7 b(e)33 b(wrote)e(a)h(basic)g (geometry)f(pac)n(k)-5 b(age.)49 b(This)32 b(allo)n(ws)35 31 y(us)21 b(to)g(construct)g(a)g(plane)g Fn(P)33 b Fv(with)22 b(equation)e Fn(x)6 b Fv(+)g Fn(y)j Fv(+)d Fn(z)24 b Fv(=)35 131 y(1)42 b(and)g(to)g(in)n(tersect)g Fn(P)55 b Fv(with)42 b(the)h(lines)f Fn(L)1491 143 y Fm(ij)1592 131 y Fv(\()p Fn(i;)14 b(j)52 b Fv(=)35 230 y(1)p Fn(;)14 b(:)g(:)g(:)f(;)h Fv(50\))21 b(through)h(the)g(origin)f(\(0)p Fn(;)14 b Fv(0)p Fn(;)g Fv(0\))21 b(and)g(the)i(p)r(oin)n(t)35 330 y(\()p Fn(i;)14 b(j;)g Fv(1\).)89 b(W)-7 b(e)45 b(then)g(test)g(if) h(the)f(in)n(tersection)f(p)r(oin)n(t)35 429 y Fn(P)88 441 y Fm(ij)191 429 y Fv(=)f Fn(L)356 441 y Fm(ij)440 429 y Fo(\\)27 b Fn(P)52 b Fv(lies)40 b(on)g(the)g(plane)g Fn(P)12 b Fv(.)74 b(When)40 b(run)35 529 y(at)45 b(Lev)n(el)f(I)r(I)r (I,)h(the)g(answ)n(er)f(is)g(p)r(ositiv)n(e)g(in)h(all)g(2500)35 629 y(cases.)64 b(A)n(t)38 b(Lev)n(el)e(I,)i(the)f(answ)n(er)f(is)h (correct)e(in)j(1538)35 728 y(cases)27 b(\(62.5\045\).)-44 858 y Fo(\017)37 b Fv(Consider)e(no)n(w)h(the)g(relationship)g(b)r(et)n (w)n(een)g(t)n(w)n(o)f(lines)35 957 y(in)43 b(3-space.)81 b(W)-7 b(e)44 b(wrote)e(three)g(predicates)g Fu(isSkew)p Fv(,)35 1057 y Fu(isParallel)18 b Fv(and)k Fu(intersects)p Fv(.)30 b(An)n(y)22 b(pair)f(of)h(distinct)35 1157 y(lines)42 b(ough)n(t)f(to)h(mak)n(e)g Fq(exactly)h(one)f Fv(of)g(these)g(predi-) 35 1256 y(cates)35 b(true.)60 b(Let)36 b Fn(L)696 1268 y Fm(ij)790 1256 y Fv(\()p Fn(i;)14 b(j)40 b Fv(=)c(1)p Fn(;)14 b(:)g(:)g(:)f(;)h Fv(50\))35 b(b)r(e)h(the)g(line)35 1356 y(through)30 b(the)h(origin)f(and)h(\()p Fn(i;)14 b(j;)g Fv(1\))31 b(and)f(let)h Fn(L)1520 1326 y Fl(0)1520 1378 y Fm(ij)1609 1356 y Fv(b)r(e)h(the)35 1456 y(line)26 b(through)g(\(1)p Fn(;)14 b Fv(1)p Fn(;)g Fv(0\))25 b(and)h(\()p Fn(i)15 b Fv(+)g(1)p Fn(;)f(j)20 b Fv(+)15 b(1)p Fn(;)f Fv(1\).)35 b(A)n(t)27 b(Lev)n(el)35 1555 y(I)r(I)r(I,)38 b(these)g(\()p Fn(i;)14 b(j)5 b Fv(\))37 b(line-pairs)f(are)h(parallel) f(in)i(all)f(2500)35 1655 y(cases,)21 b(none)g(sk)n(ew)f(or)g(in)n (tersecting.)34 b(A)n(t)21 b(Lev)n(el)g(I,)g(w)n(e)f(get)35 1755 y(2500)h(parallel)h(pairs,)h(but)g(it)h(also)d(rep)r(orted)i(1201) e(in)n(ter-)35 1854 y(sections)31 b(and)g(none)g(sk)n(ew.)48 b(If)32 b(w)n(e)f(replace)f Fn(i)h Fv(and)h Fn(j)k Fv(b)n(y)35 1954 y Fn(sq)s(r)r(t)p Fv(\()p Fn(i)p Fv(\))d(and)f Fn(sq)s(r)r(t)p Fv(\()p Fn(j)5 b Fv(\))33 b(in)f(the)g(same)g(exp)r(erimen)n(t,)g(then) 35 2053 y(Lev)n(el)38 b(I)r(I)r(I)g(is)g(again)f(p)r(erfect)i(while)f (Lev)n(el)f(I)i(rep)r(orted)35 2153 y(2116)33 b(pairs)g(parallel,)i (378)e(sk)n(ew)g(and)h(1023)f(in)n(tersect-)35 2253 y(ing.)-44 2382 y Fo(\017)k Fv(W)-7 b(e)19 b(wrote)e(a)h(matrix)g(pac)n(k)-5 b(age)17 b(that)i(included)g(a)f(straigh)n(t-)35 2482 y(forw)n(ard)31 b(Gaussian)g(elimination)h(algorithm)f(\(without)35 2581 y(piv)n(oting\))39 b(for)f(computing)h(determinan)n(ts)f(where)h (the)35 2681 y(basic)27 b(expression)f(is)262 2787 y Fu(A\(j,k\))42 b(-=)g(A\(j,i\)*A\(i,k\)/A\(i)o(,i)o(\).)35 2894 y Fv(This)30 b(program)d(will)j(b)r(e)g(further)f(discussed)g(in)h (Section)35 2993 y(4.)37 b(Consider)26 b(the)i(follo)n(wing)f(t)n(w)n (o)g(matrices:)82 3116 y Fu(double)41 b(A[])h(=)h({)g(3.0,)86 b(0.0,)f(0.0,)h(1.0,)735 3216 y(0.0,)g(3.0,)f(0.0,)h(1.0,)735 3315 y(0.0,)g(0.0,)f(3.0,)h(1.0,)735 3415 y(1.0,)g(1.0,)f(1.0,)h(1.0)42 b(};)82 3540 y(long)f(B[])130 b(=)43 b({)87 b(512,)e(512,)h(512,)42 b(1,)779 3639 y(512,)g(-512,)f(-512,)h(1,)735 3739 y(-512,)85 b(512,)42 b(-512,)g(1,)735 3839 y(-512,)g(-512,)85 b(512,)42 b(1)h(};)35 3985 y Fv(Lev)n(el)18 b(I)r(I)r(I)h(correctly)e(computes)h (det\()p Fn(A)p Fv(\))24 b(=)f(0)18 b(and)g(det\()p Fn(B)t Fv(\))35 4085 y(=)42 b(2)184 4055 y Fs(31)254 4085 y Fv(.)71 b(Ho)n(w)n(ev)n(er,)40 b(at)f(Lev)n(el)g(I,)g(det)q(\()p Fn(A)p Fv(\))h(is)f(non-zero)35 4185 y(b)r(ecause)26 b(the)h(Gaussian)e(algorithm)h(p)r(erforms)f(division)35 4284 y(b)n(y)37 b(3)p Fn(:)p Fv(0.)66 b(Similarly)-7 b(,)39 b(det)q(\()p Fn(B)t Fv(\))f(in)g(Lev)n(el)f(I)g(leads)g(to)g(an) 35 4384 y(o)n(v)n(er\015o)n(w)22 b(\(sho)n(ws)i(up)h(as)f(a)g(negativ)n (e)g(n)n(um)n(b)r(er\).)36 b(Gener-)35 4484 y(ally)31 b(for)g(determinan)n(ts)f(that)i(v)-5 b(anish,)32 b(no)f(matter)g(ho)n (w)35 4583 y(con)n(v)n(oluted)d(the)h(matrix)g(en)n(tries)f(\(whic)n(h) h(ma)n(y)f(in)n(v)n(olv)n(e)35 4683 y(nested)23 b(square)e(ro)r(ots\),) i(Lev)n(el)f(I)r(I)r(I)i(nev)n(er)d(fails)i(to)f(detect)35 4782 y(0.)35 b(Similar)21 b(b)r(eha)n(vior)f(w)n(as)h(also)g(observ)n (ed)f(with)i(Hilb)r(ert)35 4882 y(matrices.)-152 5037 y Fp(HO)m(W)54 b(DO)h(A)m(CCURA)m(CY)g(LEVELS)g(SUPPOR)-8 b(T)-152 5137 y(R)m(OBUST)40 b(COMPUTING?)94 b Fv(Sp)r(ecifying)35 b(\\1)e(relativ)n(e)-152 5237 y(bit")j(in)g(Lev)n(el)f(I)r(I)r(I)h (amoun)n(ts)f(to)h(guaran)n(teeing)d(the)j(correct)2040 -69 y(sign)g(of)g(computed)g(v)-5 b(alues.)62 b(F)-7 b(rom)36 b(EGC)g(theory)-7 b(,)37 b(this)g(en-)2040 31 y(sures)26 b(the)g(exactness)g(\(and)g(hence)g(consistency\))g(of)g (our)g(geo-)2040 131 y(metric)i(structures.)39 b(The)28 b(more)g(e\016cien)n(t)h(Lev)n(el)e(I)r(I)i(ma)n(y)f(suf-)2040 230 y(\014ce)i(when)g(w)n(e)f(kno)n(w)h Fq(\023)-42 b(a)32 b(priori)f Fv(the)g(needed)f(precision,)f(as)g(in)2040 330 y(b)r(ounded-degree)e(problems)h([34)o(].)40 b(Ev)n(en)27 b(a)h(sp)r(eed-conscious)2040 429 y(user)g(who)h(cannot)g(a\013ord)f (Lev)n(el)g(I)r(I)r(I)i(in)f(actual)g(applications)2040 529 y(ma)n(y)24 b(use)h(Lev)n(el)f(I)r(I)r(I)h(accuracy)e(to)i(debug)g (the)g(program)e(logic.)2040 629 y Fq(Note)41 b(that)g(this)g(c)l(omes) g(almost)h(for)g(fr)l(e)l(e.)74 b Fv(Con)n(v)n(ersely)-7 b(,)40 b(as)2040 728 y(w)n(e)28 b(ha)n(v)n(e)e(found,)j(Lev)n(el)e(I)h (is)g(also)f(useful)h(for)g(fast)g(debugging)2040 828 y(of)35 b(the)h(non-n)n(umeric)f(part)f(of)i(a)f(program,)g(ev)n(en)g (if)h(w)n(e)f(are)2040 928 y(ultimately)28 b(in)n(terested)f(in)h(Lev)n (el)f(I)r(I)r(I.)2040 1089 y Fp(WHA)-8 b(T)21 b(IS)h(THE)f(DIFFERENCE)f (BETWEEN)g(LEV-)2040 1189 y(ELS)27 b(I)s(I)f(AND)h(I)s(I)s(I?)69 b Fv(Lev)n(el)22 b(I)r(I)r(I)i(accuracy)d(is)i(the)g(k)n(ey)f(inno-) 2040 1289 y(v)-5 b(ation)31 b(of)f Ft(Core)p Fv(.)47 b(Its)31 b(distinction)g(from)f(Lev)n(el)h(I)r(I)g(ma)n(y)f(not)2040 1388 y(b)r(e)f(ob)n(vious.)38 b(Computer)28 b(algebra)f(systems)h (deliv)n(er)g(Lev)n(el)f(I)r(I)2040 1488 y(accuracy)-7 b(.)61 b(But)37 b(sp)r(ecifying)f(\\500)e(bits)j(of)f(accuracy")e(do)r (es)2040 1588 y(not)27 b(mean)g(that)g(all)g(the)h(500)d(bits)j(in)f(a) g(quan)n(tit)n(y)f(are)g(signi\014-)2040 1687 y(can)n(t)f({)f(in)h (fact,)h(it)f(is)g(easy)f(to)h(lose)f(ev)n(ery)f(bit)j(of)f (signi\014cance.)2040 1787 y(One)36 b(of)h(the)g(authors)e(\(C.Y.\))j (relates)e(an)g(exp)r(erience)g(with)2040 1887 y Fu(Maple)p Fv('s)25 b(Lev)n(el)h(I)r(I)i(accuracy:)34 b(as)27 b(a)f(particular)g (computation)2040 1986 y(is)31 b(rep)r(eated)g(with)g(increased)f (accuracy)-7 b(,)30 b(the)i(answ)n(ers)d(came)2040 2086 y(bac)n(k)d(in)i(a)f(wildly)g(unpredictable)g(manner)g(\(including)g (com-)2040 2185 y(plex)k(v)-5 b(alues)31 b(when)g(a)f(real)h(w)n(as)e (exp)r(ected\).)48 b(It)32 b(w)n(as)d(unclear)2040 2285 y(whether)e(this)g(w)n(as)f(a)h Fu(Maple)e Fv(bug)h(or)g(a)h (programming)e(error.)2040 2385 y(On)35 b(closer)e(analysis,)j(it)f (turns)g(out)g(that)g(the)g(computation)2040 2484 y(w)n(en)n(t)c (through)f(a)h(singularit)n(y)-7 b(.)47 b(This)31 b(is)g(a)g(strok)n(e) e(of)j(luc)n(k)e(as)2040 2584 y(it)24 b(is)g(usually)f(tedious)g(or)g (infeasible)g(to)h(carry)e(out)h(suc)n(h)h(anal-)2040 2684 y(ysis.)50 b(If)32 b(the)h(same)e(computation)h(could)g(b)r(e)g (carried)f(out)h(at)2040 2783 y(Lev)n(el)37 b(I)r(I)r(I,)g(this)h (singularit)n(y)e(w)n(ould)g(b)r(e)i(automatically)e(de-)2040 2883 y(tected.)46 b(Another)30 b(qualitativ)n(e)g(di\013erence)g(is)h (that)f(Lev)n(el)g(I)r(I)r(I)2040 2982 y(ac)n(hiev)n(es)g Fp(error-free)37 b(comparisons)30 b Fv(of)i(an)n(y)f(t)n(w)n(o)g (reals,)g Fn(x)2040 3082 y Fv(and)25 b Fn(y)s Fv(.)35 b(If)25 b Fn(x)f Fo(6)p Fv(=)e Fn(y)s Fv(,)j(then)g(w)n(e)g(could)f (mak)n(e)g(this)h(comparison)d(in)2040 3182 y(Lev)n(el)29 b(I)r(I,)h(using)g(a)f(lo)r(op)g(with)i(increasing)d(precision.)42 b(But)30 b(if)2040 3281 y Fn(x)24 b Fv(=)e Fn(y)s Fv(,)28 b(then)g(Lev)n(el)f(I)r(I)h(is)f(helpless:)37 b(the)28 b(lo)r(op)f(is)g(in\014nite.)2040 3443 y Fp(HO)m(W)35 b(IS)i(CORE)e(DIFFERENT)g(FR)m(OM)g(OTHER)2040 3543 y(R)m(OBUST)d (LIBRAR)-8 b(Y)32 b(EFF)m(OR)-8 b(TS?)217 b Fv(The)28 b(m)n(ulti-)2040 3642 y(institution)e(Europ)r(ean)d(Comm)n(unit)n(y)h (pro)5 b(ject)24 b Fu(CGAL)g Fv([18)o(,)g(25],)2040 3742 y(and)j(Max-Planc)n(k)d(Institute)k(of)f(Computer)g(Science)f(pro)5 b(ject)2040 3842 y Fu(LEDA)29 b Fv([22)o(,)i(6])g(are)f(t)n(w)n(o)g(ma) 5 b(jor)29 b(libraries)h(also)f(committed)j(to)2040 3941 y(the)44 b(EGC)f(paradigm.)82 b(Both)43 b(aim)g(at)g(pro)n(viding)f(a)g (com-)2040 4041 y(prehensiv)n(e)37 b(suite)h(of)g(e\016cien)n(t)f(data) h(structures)f(and)g(algo-)2040 4141 y(rithms.)44 b(The)30 b Fu(CGAL)e Fv(and)i Fu(LEDA)e Fv(e\013orts)h(are)g(v)n(ery)g(imp)r (ortan)n(t)2040 4240 y(and)h(address)f(real)g(needs.)44 b(Our)30 b(approac)n(h)e(is)i(motiv)-5 b(ated)30 b(b)n(y)2040 4340 y(an)38 b(orthogonal)e(concern.)68 b(W)-7 b(e)39 b(b)r(eliev)n(e)f(that)h(no)f(single)g(li-)2040 4439 y(brary)d(could)i(p)r(ossibly)f(ful\014ll)h(all)g(the)g(demands)f(and)g (com-)2040 4539 y(plexities)c(of)g(p)r(oten)n(tial)f(applications.)49 b(Rather,)32 b(there)g(is)f(al-)2040 4639 y(w)n(a)n(ys)j(a)i(demand)g (for)f(small)h(customized)f(libraries)g(in)h(sup-)2040 4738 y(p)r(ort)h(of)h(sp)r(ecialized)f(applications.)65 b(It)37 b(is)h(th)n(us)f(imp)r(ortan)n(t)2040 4838 y(to)29 b(o\013er)f(programmers)e(the)j(to)r(ols)f(to)h(ac)n(hiev)n(e)e(their)i (robust-)2040 4938 y(ness)35 b(goals,)h(whic)n(h)f(is)g(precisely)g (what)g Ft(Core)h Fv(o\013ers.)59 b(Our)2040 5037 y(w)n(ork)24 b(stresses)h(the)h(\\small")2952 5007 y Fs(3)3013 5037 y Fv(n)n(umerical)f(core)g(and)g(supp)r(ort-)2040 5137 y(ing)43 b(to)r(ols)f(for)g(constructing)g(robust)h(geometric)e(soft)n (w)n(are.)p 2040 5199 797 4 v 2127 5247 a Fr(3)2159 5272 y Fs(Smallness)25 b(is)i(another)e(qualit)n(y)h(that)g(the)g(name)f(of) h(our)h(library)e(is)i(in-)2040 5338 y(tended)20 b(to)j(ev)n(ok)n(e.)p eop %%Page: 4 4 4 3 bop -152 -69 a Fv(T)-7 b(o)44 b(supp)r(ort)g(v)-5 b(arious)43 b(applications,)k(w)n(e)d(prefer)g(to)g(de\014ne)-152 31 y Fp(core)51 b(library)f(extensions)43 b Fv(\()p Ft(Corex)p Fv(\))h(that)g(em)n(b)r(ed)g(do-)-152 131 y(main)c(sp)r(eci\014c)h(kno) n(wledge.)73 b(With)41 b(our)e(partners,)j(w)n(e)e(are)-152 230 y(curren)n(tly)k(building)g(sev)n(eral)f(suc)n(h)g Ft(Corex)p Fv(s,)49 b(including)44 b(a)-152 330 y Ft(Corex)34 b Fv(for)g(mesh)g(generation.)53 b(An)35 b(additional)e(di\013erence) -152 429 y(is)40 b(our)g(use)g(of)g(aggressiv)n(e)d(compiler)j(tec)n (hniques)g(to)g(mini-)-152 529 y(mize)c(the)g(amoun)n(t)g(of)f (hand-tuning)h(required)f(for)g(e\016cien)n(t)-152 629 y(implemen)n(tation.)i(NOTE:)27 b(a)g(sim)n(ultaneous)f(submission)h ([4])-152 728 y(b)n(y)d(the)g Fu(CGAL/LEDA)c Fv(group)j(to)h(this)g (conference)f(describ)r(es)g(an)-152 828 y(e\013ort)31 b(called)g Fu(leda)p 491 828 27 4 v 29 w(real)f Fv(whic)n(h)h(has)f (man)n(y)h(similarities)f(to)-152 928 y(our)d(w)n(ork.)-152 1089 y Fp(BENEFITS)e(OF)f(OUR)h(APPR)m(O)m(A)m(CH.)67 b Fv(Sev)n(eral)20 b(b)r(en-)-152 1189 y(e\014ts)43 b(accrue)f(to)h (users)f(of)h(our)f(library)-7 b(.)81 b(\(1\))43 b(W)-7 b(e)43 b(already)-152 1289 y(men)n(tioned)g(the)g(adv)-5 b(an)n(tages)41 b(of)h(w)n(orking)f(in)i(an)f(en)n(viron-)-152 1388 y(men)n(t)h(with)f(access)f(to)h(di\013eren)n(t)g(accuracy)e(lev)n (els)i(for)f(de-)-152 1488 y(bugging)j(programming)e(logic.)86 b(\(2\))44 b(Another)g(adv)-5 b(an)n(tage)-152 1588 y(is)33 b(automatic)f(tec)n(hnology)g(transfer.)52 b(As)33 b(EGC)f(tec)n (hnology)-152 1687 y(impro)n(v)n(es,)42 b(these)e(impro)n(v)n(emen)n(t) f(will)h(b)r(e)h(re\015ected)e(in)i(our)-152 1787 y(library)-7 b(.)67 b(Hence)39 b(users)e(of)h(our)f(library)g(automatically)g(en-) -152 1887 y(jo)n(y)30 b(the)h(fruits)g(of)g(suc)n(h)f(adv)-5 b(ances.)45 b(\(3\))31 b(Man)n(y)f(applications)-152 1986 y(m)n(ust)f(c)n(ho)r(ose)e(a)h(trade-o\013)g(b)r(et)n(w)n(een)g (robustness)f(and)i(sp)r(eed.)-152 2086 y(Our)e(accuracy)f(lev)n(els)h (greatly)g(facilitate)g(making)g(or)g(c)n(hang-)-152 2185 y(ing)h(suc)n(h)f(c)n(hoices.)-152 2410 y Fw(3)83 b(HO)n(W)27 b(CORE)g(W)n(ORKS)-152 2592 y Fv(Since)19 b Ft(Core)g Fv(is)f(directly)g(deriv)n(ed)g(from)g(the)g Fu(Real/Expr)d Fv(pac)n(k-)-152 2692 y(age)32 b(they)g(share)f(man)n(y) h(features.)51 b(In)32 b(particular,)g(b)r(oth)h(use)-152 2791 y(\\precision-driv)n(en)k(mec)n(hanisms")h([35)o(,)i(24)o(])g(for) e(expression)-152 2891 y(ev)-5 b(aluation,)38 b(critical)e(b)r(ecause)g (in)g(general,)h(the)g(w)n(orst)e(case)-152 2990 y(b)r(ounds)42 b(in)h(EGC)e(are)g(not)h(sustainable.)79 b(Both)42 b(pac)n(k)-5 b(ages)-152 3090 y(curren)n(tly)35 b(supp)r(ort)g(the)h(op)r(erators)d (+)p Fn(;)14 b Fo(\000)p Fn(;)g Fo(\002)p Fn(;)g Fo(\004)p Fn(;)1460 3030 y Fo(p)p 1528 3030 24 4 v 1528 3090 a(\001)p Fv(,)38 b(but)e(in)-152 3190 y(principle)g(can)f(b)r(e)h(extended)g(to) g(an)n(y)f(algebraic)f(op)r(eration.)-152 3289 y(The)g(main)g (di\013erence)f(b)r(et)n(w)n(een)h Fu(Real/Expr)c Fv(and)k Ft(Core)g Fv(is)-152 3389 y(in)i(their)f(seman)n(tics)g(of)g(assignmen) n(ts.)58 b(In)36 b Fu(Real/Expr)p Fv(,)e(the)-152 3489 y(assignmen)n(t)29 b(\\)p Fn(a)c Fv(=)g Fn(b)19 b Fv(+)g Fn(c)p Fv(")29 b(is)g(really)f(asserting)g(a)h Fq(p)l(ermanent)-152 3588 y Fv(relation)f(\(i.e.,)g(constrain)n(t\))g(b)r(et)n(w)n(een)g (three)g(v)-5 b(ariables.)37 b(This)-152 3688 y(results)32 b(in)h(highly)g(unin)n(tuitiv)n(e)g(b)r(eha)n(vior)e(\(e.g.,)j Fq(subse)l(quent)-152 3787 y Fv(assignmen)n(ts)e(to)h Fn(b)g Fv(and)g Fn(c)g Fv(c)n(hange)f(the)h(v)-5 b(alue)33 b(of)g Fn(a)p Fv(\).)54 b Ft(Core)-152 3887 y Fv(remo)n(v)n(es)26 b(all)h(suc)n(h)h(surprises.)-152 4049 y Fp(HO)m(W)21 b(DO)g(THE)g(V)-11 b(ARIOUS)22 b(LEVELS)g(INTERA)m(CT?)-152 4149 y Fv(W)-7 b(e)20 b(pro)n(vide)e(more)h(details)g(on)g(the)h(deliv) n(ery)e(mec)n(hanism)h([32)o(].)-152 4248 y(In)32 b(the)f(previous)f (section,)i(w)n(e)f(ha)n(v)n(e)f(assumed)g(the)i(simplest)-152 4348 y(situation,)e(where)f(the)h(program)d(is)i(a)g(standard)g Fu(C/C++)e Fv(pro-)-152 4448 y(gram.)73 b(W)-7 b(e)41 b(call)e(this)h(a)g Fp(Lev)m(el)46 b(I)h(program)p Fv(.)73 b(Th)n(us,)43 b(its)-152 4547 y(primitiv)n(e)26 b(n)n(um)n(b)r(er)g(t)n (yp)r(es)g(are)f(basically)g Fu(int)p Fv(,)g Fu(long)p Fv(,)g Fu(float)p Fv(,)-152 4647 y Fu(double)p Fv(.)34 b(These)25 b(are)f(the)i Fp(Lev)m(el)j(I)g(n)m(um)m(b)s(er)f(t)m(yp)s (es)p Fv(.)37 b Ft(Core)-152 4746 y Fv(de\014nes)32 b(the)f(new)414 4716 y Fs(4)483 4746 y Fv(n)n(um)n(b)r(er)g(t)n(yp)r(es)g Fu(Real)f Fv(and)h Fu(Expr)n Fv(.)48 b(These)-152 4846 y(are)30 b(\(resp)r(ectiv)n(ely\))g(Lev)n(els)g(I)r(I)h(and)g(I)r(I)r (I)g(n)n(um)n(b)r(er)g(t)n(yp)r(es.)46 b(Ac-)-152 4946 y(tually)-7 b(,)32 b(Lev)n(el)f(I)r(I)g(n)n(um)n(b)r(er)g(t)n(yp)r(es)g (include)h Fu(bigInt)m Fv(,)g Fu(bigRat)n Fv(,)-152 5045 y(or)23 b Fu(bigFloat)l Fv(.)36 b(The)23 b(n)n(um)n(b)r(er)g(t)n(yp)r (e)h Fu(Real)e Fv(is)h(not)g(a)g(particular)-152 5145 y(represen)n(tation)33 b(of)i(n)n(um)n(b)r(ers,)h(but)g(a)e(sup)r (erclass)f(of)i(all)g(the)p -152 5207 797 4 v -65 5255 a Fr(4)-33 5280 y Fs(Another)22 b(Lev)n(el)f(I)r(I)h(n)n(um)n(b)r(er)f (t)n(yp)r(e)g(is)h Fk(Complex)g Fs(whic)n(h)f(w)n(e)i(ignore)e(in)h (this)-152 5347 y(pap)r(er)f(for)h(simplicit)n(y)-5 b(.)2040 -69 y Fv(n)n(um)n(b)r(er)32 b(represen)n(tations)e(found)i(in)g(the)g (system.)49 b(There)32 b(is)2040 31 y(a)27 b(natural)g(partial)g (ordering)f Fo(\036)h Fv(among)g(these)g(t)n(yp)r(es:)2302 214 y Fu(int)22 b Fo(\036)h Fu(long)e Fo(\036)i Fu(bigInt)d Fo(\036)j Fu(bigRat)d Fo(\036)j Fu(Real)n Fn(;)2325 338 y Fu(float)e Fo(\036)i Fu(double)e Fo(\036)h Fu(bigFloat)e Fo(\036)j Fu(bigRat)2040 521 y Fv(The)h(automatic)f(promotion)g(or)g (demotion)g(of)h(n)n(um)n(b)r(er)g(t)n(yp)r(es)2040 620 y(ma)n(y)30 b(o)r(ccur)h(during)g(assignmen)n(ts,)f(as)h(in)g(con)n(v)n (en)n(tional)e(lan-)2040 720 y(guages.)58 b(E.g.,)36 b(if)g(w)n(e)f(assign)f(a)h Fu(bigFloat)c Fv(to)k(an)g Fu(int)o Fv(,)i(the)2040 820 y(v)-5 b(alue)38 b(m)n(ust)g(b)r(e)h (demoted)f(b)r(efore)f(assignmen)n(t.)68 b(Ho)n(w)n(ev)n(er,)2040 919 y(promotion)39 b(and)h(demotion)f(of)h(n)n(um)n(b)r(er)g(t)n(yp)r (es)g(also)e(o)r(ccur)2040 1019 y(when)29 b(w)n(e)f(set)h Ft(Core)g Fv(accuracy)e(lev)n(els.)40 b(The)29 b(most)f(in)n(terest-) 2040 1119 y(ing)f(case)e(is)i(when)g(w)n(e)f(run)h(a)f(Lev)n(el)g(I)h (program)d(at)j(Lev)n(el)f(I)r(I)r(I:)2040 1218 y(then)g Fu(long)f Fv(and)g Fu(double)f Fv(b)r(oth)i(promote)f(to)h Fu(Expr)p Fv(;)f(ho)n(w)n(ev)n(er,)2040 1318 y Fu(int)33 b Fv(and)i Fu(float)d Fv(remain)i(unc)n(hanged.)56 b(The)35 b(motiv)-5 b(ation)34 b(is)2040 1417 y(that,)29 b(ev)n(en)e(at)h(Lev)n (el)f(I)r(I)r(I,)i(it)g(is)f(desirable)f(to)h(ha)n(v)n(e)e(mac)n(hine-) 2040 1517 y(precision)32 b(v)-5 b(ariables)32 b(for)h(e\016ciency)-7 b(.)53 b(As)33 b(another)f(example,)2040 1617 y(if)40 b(w)n(e)g(run)f(a)g(Lev)n(el)g(I)r(I)r(I)i(program)c(at)j(lev)n(el)f(I) r(I,)h(then)g Fu(Expr)2040 1716 y Fv(demotes)27 b(to)h Fu(Real)p Fv(.)35 b(Here)27 b(are)g(the)h(general)e(principles:)2125 1876 y(1.)37 b(A)32 b(program)e(is)i(said)g(to)g(b)r(e)g Fp(Lev)m(el)37 b Fn(`)32 b Fv(\()p Fn(`)p Fv(=I,I)r(I,I)r(I)r(I\))h(if) f(it)2227 1975 y(explicitly)20 b(declares)e(n)n(um)n(b)r(er)i(t)n(yp)r (es)g(of)g(Lev)n(el)f Fn(`)p Fv(,)i(but)f(has)2227 2075 y(no)i(n)n(um)n(b)r(er)f(t)n(yp)r(es)h(of)g(Lev)n(els)f Fn(>)i(`)p Fv(.)35 b(This)22 b(de\014nition)g(of)g Fn(`)2227 2175 y Fv(is)e(\\static",)h(indep)r(enden)n(t)h(of)e(the)h(pream)n(ble) f(whic)n(h)g(sets)2227 2274 y(the)27 b(\\run-time")f(accuracy)f(Lev)n (el.)36 b(Note)27 b(that)g(there)g(is)2227 2374 y(no)g(static)h(Lev)n (el)f(IV.)2125 2503 y(2.)37 b(F)-7 b(eatures)18 b(accessible)f(at)h (run-time)g(lev)n(el)g Fn(`)g Fv(are)g(also)f(a)n(v)-5 b(ail-)2227 2603 y(able)27 b(at)h(run-time)f(Lev)n(el)g Fn(j)33 b Fv(\()p Fn(`)23 b(<)f(j)5 b Fv(\).)2125 2733 y(3.)37 b(V)-7 b(ariables)29 b(and)g(features)h(of)f(Lev)n(el)h Fn(`)f Fv(will)h(b)r(e)h(demoted)2227 2832 y(to)38 b(corresp)r(onding)d (v)-5 b(ariables)37 b(and)h(features)f(at)g(Lev)n(el)2227 2932 y Fn(j)5 b Fv(\()p Fn(j)28 b(<)23 b(`)p Fv(\))k(when)h(the)g (program)e(is)h(run)h(at)f(Lev)n(el)g Fn(j)5 b Fv(.)2125 3061 y(4.)37 b(A)n(t)31 b(run-time)f(lev)n(el)g(IV,)h(only)g(assignmen) n(ts)e(force)h(pro-)2227 3161 y(motion)d(or)g(demotion)g(of)h(v)-5 b(ariables.)2040 3383 y Fp(WHA)d(T)25 b(IS)g(IN)g(LEVEL)h(I)s(I)f(A)m (CCURA)m(CY.)68 b Fv(Consider)2040 3482 y(the)29 b(program)e(fragmen)n (t)h(in)h(\014gure)g(1\(a\).)40 b(A)n(t)29 b(Lev)n(el)f(I)r(I)i(accu-) 2040 3582 y(racy)-7 b(,)36 b(v)-5 b(ariables)34 b Fn(m;)14 b(p;)g(q)37 b Fv(are)d(promoted)h(to)g(t)n(yp)r(e)g Fu(Real)e Fv(\(in-)2040 3681 y(ternally)-7 b(,)30 b Fn(m)g Fv(w)n(ould)f(b)r(e)i Fu(bigInt)c Fv(while)j Fn(p;)14 b(q)33 b Fv(are)c Fu(bigFloat)p Fv(\).)2040 3781 y(F)-7 b(or)27 b(e\016ciency)-7 b(,)28 b(w)n(e)g(ma)n(y)f(prefer)g(to)h(k)n(eep)f Fn(p;)14 b(q)31 b Fv(as)c Fu(double)e Fv(for)2040 3881 y(as)30 b(long)f(as)h(p)r (ossible.)45 b(If)31 b(so,)f(w)n(e)g(need)h(a)e(run)n(time)i(c)n(hec)n (k)e(for)2040 3980 y(o)n(v)n(er\015o)n(ws)22 b(\(and)k(con)n(v)n(ert)d Fn(p)i Fv(or)f Fn(q)k Fv(to)d(t)n(yp)r(e)g Fu(bigFloat)d Fv(when)j(it)2040 4080 y(happ)r(ens\).)2040 5093 y @beginspecial 0 @llx 0 @lly 245 @urx 109 @ury 2450 @rwi @setspecial %%BeginDocument: figs/dagprog.ps %!PS-Adobe-2.0 EPSF-2.0 %%Title: dagprog.fig %%Creator: fig2dev Version 3.2 Patchlevel 1 %%CreationDate: Thu Mar 11 15:51:44 1999 %%For: yap@jinai (Chee Yap) %%Orientation: Portrait %%BoundingBox: 0 0 245 109 %%Pages: 0 %%BeginSetup %%EndSetup %%Magnification: 0.4500 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -23.0 157.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 10 setmiterlimit n -1000 6787 m -1000 -1000 l 10912 -1000 l 10912 6787 l cp clip 0.02700 0.02700 sc 7.500 slw % Ellipse n 7755 3735 250 250 0 360 DrawEllipse gs col-1 s gr % Ellipse n 7155 5385 250 250 0 360 DrawEllipse gs col-1 s gr % Ellipse n 8430 5370 250 250 0 360 DrawEllipse gs col-1 s gr % Ellipse n 8400 2115 250 250 0 360 DrawEllipse gs col-1 s gr % Polyline n 5700 1800 m 5700 5775 l gs col-1 s gr % Polyline gs clippath 7944 3392 m 7875 3495 l 7887 3372 l 7842 3499 l 7898 3519 l cp clip n 8295 2325 m 7875 3495 l gs col-1 s gr gr % arrowhead n 7944 3392 m 7875 3495 l 7887 3372 l col-1 s % Polyline gs clippath 7298 5042 m 7230 5145 l 7242 5022 l 7197 5149 l 7253 5169 l cp clip n 7650 3960 m 7230 5145 l gs col-1 s gr gr % arrowhead n 7298 5042 m 7230 5145 l 7242 5022 l col-1 s % Polyline gs clippath 8311 5052 m 8325 5175 l 8255 5073 l 8302 5200 l 8358 5178 l cp clip n 7860 3945 m 8325 5175 l gs col-1 s gr gr % arrowhead n 8311 5052 m 8325 5175 l 8255 5073 l col-1 s % Polyline gs clippath 7965 2025 m 8085 2055 l 7965 2085 l 8100 2085 l 8100 2025 l cp clip n 7725 2055 m 8085 2055 l gs col-1 s gr gr % arrowhead n 7965 2025 m 8085 2055 l 7965 2085 l col-1 s % Polyline gs clippath 7350 3675 m 7470 3705 l 7350 3735 l 7485 3735 l 7485 3675 l cp clip n 7005 3705 m 7470 3705 l gs col-1 s gr gr % arrowhead n 7350 3675 m 7470 3705 l 7350 3735 l col-1 s % Polyline gs clippath 6750 5325 m 6870 5355 l 6750 5385 l 6885 5385 l 6885 5325 l cp clip n 6450 5355 m 6870 5355 l gs col-1 s gr gr % arrowhead n 6750 5325 m 6870 5355 l 6750 5385 l col-1 s % Polyline gs clippath 8805 5340 m 8685 5310 l 8805 5280 l 8670 5280 l 8670 5340 l cp clip n 9090 5310 m 8685 5310 l gs col-1 s gr gr % arrowhead n 8805 5340 m 8685 5310 l 8805 5280 l col-1 s % Polyline n 900 1800 m 9900 1800 l 9900 5775 l 900 5775 l cp gs col-1 s gr % Interp Spline gs clippath 8631 5082 m 8550 5175 l 8578 5054 l 8516 5175 l 8570 5202 l cp clip n 8505 2310 m 8798.7 3036.9 8907.5 3359.4 8940 3600 curveto 8965.4 3787.7 8939.1 4211.8 8895 4395 curveto 8859.5 4542.2 8773.3 4737.2 8550 5175 curveto gs col-1 s gr gr % arrowhead n 8631 5082 m 8550 5175 l 8578 5054 l col-1 s $F2psEnd rs %%EndDocument @endspecial 3511 4271 a Fj(q)3358 4638 y(p)3216 5010 y(m)3935 5003 y(n)2110 4399 y Fi(int)i Fh(n)p Fg(,)f Fi(long)g Fh(m)p Fg(,)g Fi(double)h Fh(p;)13 b(q)s Fg(;)2110 4601 y Fh(p)21 b Fg(=)g Fh(m)c Fg(+)g Fh(n)p Fg(;)2110 4804 y Fh(q)25 b Fg(=)c Fh(p)16 b Ff(\003)i Fh(n)p Fg(;)3737 4284 y Fe(\002)3588 4655 y Fd(+)3750 5020 y(2)3449 5023 y(3)2040 5293 y Fv(Figure)30 b(1:)42 b(\(a\))30 b(Program)e(F)-7 b(ragmen)n(t.)44 b(\(b\))31 b(Expression)e(dags)2040 5392 y(for)e Fn(p)p Fv(,)h Fn(q)s Fv(.)p eop %%Page: 5 5 5 4 bop -152 -69 a Fp(WHA)-8 b(T)29 b(REALL)-8 b(Y)29 b(HAPPENS)f(IN)h(LEVEL)g(I)s(I)s(I.)72 b Fv(If)-152 31 y(the)24 b(ab)r(o)n(v)n(e)d(program)g(fragmen)n(t)i(\()p Fn(p)g Fv(=)f Fn(m)9 b Fv(+)g Fn(n)p Fv(;)14 b Fn(q)26 b Fv(=)d Fn(p)9 b Fo(\003)g Fn(n)p Fv(\))23 b(w)n(ere)-152 131 y(compiled)f(with)g(Lev)n(el)f(I)r(I)r(I)i(accuracy)-7 b(,)21 b(something)g(completely)-152 230 y(di\013eren)n(t)33 b(happ)r(ens.)50 b(As)32 b(in)h Fu(Real/Expr)28 b Fv([24)o(],)34 b Fn(p)e Fv(is)g(actually)-152 330 y(made)26 b(to)f(p)r(oin)n(t)h(to)g (an)f(expression)f(corresp)r(onding)g(to)h Fn(m)15 b Fv(+)f Fn(n)-152 429 y Fv(and)34 b(similarly)f(for)g Fn(q)s Fv(.)55 b(See)34 b(\014gure)f(1\(b\))h(where)f(expressions)-152 529 y(are)21 b(represen)n(ted)g(as)h(directed)f(acyclic)h(graphs)e (\(dag's\).)35 b(That)-152 629 y(is,)d(the)g(dep)r(endence)g(of)f Fn(p)g Fv(up)r(on)g(the)h(v)-5 b(alues)31 b(of)g Fn(m)g Fv(and)g Fn(n)g Fv(is)-152 728 y(remem)n(b)r(ered.)56 b(In)34 b(turn,)h(the)g(v)-5 b(alues)33 b(of)h Fn(m;)14 b(n)34 b Fv(ma)n(y)f(dep)r(end)-152 828 y(on)g(other)f(v)-5 b(alues.)52 b(The)33 b(reason)f(for)g(constructing)g(suc)n(h)g(ex-)-152 928 y(pressions)c(is)h(that)h(w)n(e)f(need)g(to)h(propagate)d(the)j (precision)e(of)-152 1027 y Fn(p)38 b Fv(in)n(to)f(precisions)f(for)g Fn(m)i Fv(and)f Fn(n)p Fv(.)66 b(There)37 b(is)g(a)g(do)n(wn)n(w)n(ard) -152 1127 y(propagation)23 b(of)i(precision,)f(up)n(w)n(ard)g (propagation)e(of)j(errors,)-152 1226 y(and)40 b(this)g(ma)n(y)f(b)r(e) h(iterated)g(un)n(til)g(the)g(error)e(is)h(less)h(than)-152 1326 y(the)c(requested)f(precision.)60 b(Note)35 b(the)h(tec)n(hnical)f (di\013erence)-152 1426 y(b)r(et)n(w)n(een)h Fq(pr)l(e)l(cision)h Fv(and)f Fq(err)l(or)g Fv(in)h(this)f(mec)n(hanism.)61 b(This)-152 1525 y(is)30 b(the)f Fp(precision-driv)m(en)34 b(mec)m(hanism)26 b Fv(of)k([35)o(].)42 b(W)-7 b(e)30 b(also)-152 1625 y(need)24 b(to)g(main)n(tain)f(b)r(ounds)h(on)f(the)h (\(algebraic\))f(heigh)n(ts)g(and)-152 1725 y(degrees)30 b(of)h(the)g(algebraic)f(quan)n(tities)g(at)h(eac)n(h)f(no)r(de)i(of)f (the)-152 1824 y(dag.)-152 1986 y Fp(LIBRAR)-8 b(Y)32 b(STR)m(UCTURE)h(AND)f(USA)m(GE)-152 2086 y(MODELS.)73 b Fv(The)25 b Ft(Core)h Fv(library)d(is)i(written)g(in)h Fu(C++)d Fv(using)-152 2185 y(an)37 b(ob)5 b(ject-orien)n(ted)36 b(programming)e(st)n(yle)j(whic)n(h)g(encapsu-)-152 2285 y(lates)26 b(underlying)g(n)n(umerics)g(from)g(higher-lev)n(el)f (library)g(and)-152 2385 y(application)39 b(routines)g(and)h (additionally)f(supp)r(orts)g(exten-)-152 2484 y(sibilit)n(y)-7 b(.)124 b(This)36 b(library)f(and)h(its)g(compilation)f(infrastruc-) -152 2584 y(ture)j(can)f(b)r(e)h(used)g(in)g(sev)n(eral)d(mo)r(des.)67 b(In)38 b(Section)g(1,)h(w)n(e)-152 2684 y(describ)r(ed)34 b(the)g(mo)r(de)h(of)e(writing)h(stand-alone)f Ft(Core)h Fv(pro-)-152 2783 y(grams.)h(One)25 b(requiremen)n(t)f(w)n(as)g(that)h (exact)g(real)f(arithmetic)-152 2883 y(m)n(ust)35 b(b)r(e)g(assumed)f ({)h(it)g(implies)g(the)g(programmer)d(should)-152 2982 y(a)n(v)n(oid)d(the)i(temptation)g(to)f(manipulate)g(bits)h(in)g(their) f(n)n(um-)-152 3082 y(b)r(ers.)41 b(Because)27 b Fu(double)g Fv(and)h Fu(long)g Fv(are)f(promoted)i(in)g(Lev)n(el)-152 3182 y(I)r(I)r(I,)22 b(they)f(should)g(also)f(b)r(e)h(careful)f(in)i (using)e(standard)g Fu(C)h Fv(func-)-152 3281 y(tions)e(suc)n(h)f(as)f Fu(scanf)p Fv(.)32 b(Note)19 b(that)f(some)g(of)h(these)f(restrictions) -152 3381 y(could)27 b(b)r(e)h(remo)n(v)n(ed)e(b)n(y)h(pro)n(viding)f Ft(Core)i Fv(substitutions.)37 b(In)-152 3481 y(practice,)29 b(the)g(stand-alone)e(mo)r(de)i(is)f(ill-suited)h(for)f(meeting)-152 3580 y(the)e(needs)f(of)g(existing)g(application)f(systems.)36 b(F)-7 b(or)24 b(instance,)-152 3680 y(w)n(e)j(are)f(constructing)g(a)h (Meshing)f Ft(Corex)i Fv(for)e Fu(Card3d)f Fv([17)o(],)-152 3779 y(a)36 b(meshing)f(system)h(for)f(Computational)g(Fluid)h (Dynamics)-152 3879 y(\(CFD\).)24 b(This)f(system)f(con)n(tains)g(b)r (oth)h Fu(FORTRAN)d Fv(and)j Fu(C)f Fv(co)r(de.)-152 3979 y(F)-7 b(or)30 b(minimal)h(c)n(hanges)e(to)h(suc)n(h)g(systems,)h (w)n(e)f(need)h(rewrite)-152 4078 y(only)19 b(a)g(handful)h(of)g (robustness-critical)d(primitiv)n(e)j(functions.)-152 4178 y(Since)41 b(the)f Ft(Core)h Fv(library)e(is)h(in)g Fu(C++)p Fv(,)j(it)d(is)g(in)n(terop)r(erable)-152 4278 y(with)31 b(languages)e(suc)n(h)h(as)f Fu(FORTRAN)p Fv(.)f(Ho)n(w)n(ev) n(er,)h(to)i(tak)n(e)e(full)-152 4377 y(adv)-5 b(an)n(tage)30 b(of)h(the)h(optimizations)f(describ)r(ed)g(in)h(Section)f(4,)-152 4477 y(the)c(p)r(ortion)g(of)f(the)h(program)e(that)i(utilizes)g Ft(Core)g Fv(m)n(ust)g(b)r(e)-152 4576 y(recompiled)h(using)g(a)f(sp)r (ecial,)h(but)h(p)r(ortable)f Fu(C++)p Fv(-to-)p Fu(C)e Fv(com-)-152 4676 y(piler.)36 b(The)23 b(compiler)g(analyzes)f (application)g(usage)g(patterns)-152 4776 y(to)f(impro)n(v)n(e)f(the)h (implemen)n(tation)g(of)g(in)n(ternal)f Ft(Core)h Fv(library)-152 4875 y(structures,)34 b(so)f(its)g(b)r(ene\014ts)h(are)f(prop)r (ortional)e(to)i(the)h(pro-)-152 4975 y(gram)27 b(p)r(ortion)g(that)h (is)f(recompiled.)2040 -69 y Fw(4)82 b(EFFICIENT)26 b(EXECUTION)h(OF)g (EGC)g(PROGRAMS)2040 113 y Fv(The)33 b Ft(Core)h Fv(library)e (e\013ectiv)n(ely)h(addresses)e(the)j(robustness)2040 213 y(concerns)17 b(in)i(geometric)e(computations.)33 b(Ho)n(w)n(ev)n(er,)19 b(at)f(higher)2040 312 y(accuracy)g(lev)n(els)i (\(I)r(I)r(I)g(and)g(IV\),)h(this)f(robustness)f(often)h(comes)2040 412 y(at)37 b(the)h(cost)e(of)h(e\016ciency)-7 b(.)66 b(F)-7 b(or)36 b(example,)j(anecdotal)d(evi-)2040 512 y(dence)30 b([12)o(,)g(20)o(])g(sho)n(ws)f(that)h(geometric)f(primitiv) n(es)h(b)r(ecome)2040 611 y(slo)n(w)n(er)c(b)n(y)i(factors)f(of)h(up)h (to)f(150)e(and)i(10,000,)e(resp)r(ectiv)n(ely)-7 b(,)2040 711 y(when)45 b(exact)f(in)n(teger)g(computations)g(and)h(exact)f (rational)2040 811 y(n)n(um)n(b)r(er)55 b(computations)g(are)f(used)i (instead)f(of)g(mac)n(hine)2040 910 y(\015oating-p)r(oin)n(t.)63 b(While)38 b(impro)n(v)n(ed)d(EGC)i(tec)n(hniques)f(suc)n(h)2040 1010 y(as)e(\015oating-p)r(oin)n(t)f(\014lters)h(and)h (precision-sensitiv)n(e)d(compu-)2040 1109 y(tation)27 b(are)e(capable)h(of)h(reducing)f(these)g(slo)n(wdo)n(wns,)f(careful) 2040 1209 y(hand-tuning)f(of)h(implemen)n(tations)f(is)g(required)g(to) g(get)g(go)r(o)r(d)2040 1309 y(p)r(erformance.)34 b(A)23 b(no)n(v)n(el)e(asp)r(ect)h(of)g(our)f(library)g(is)h(that)h(it)f(au-) 2040 1408 y(tomates)35 b(this)g(tuning)g(pro)r(cess,)h(relying)e(on)g (an)h(optimizing)2040 1508 y(compiler)i(to)h(customize)f(the)i (implemen)n(tation)f(of)f(in)n(ternal)2040 1608 y Ft(Core)42 b Fv(library)d(structures)i(based)f(on)h(an)g(analysis)e(of)i(ap-)2040 1707 y(plication)28 b(usage)f(patterns.)37 b(In)28 b(the)h(rest)e(of)h (this)g(section,)g(w)n(e)2040 1807 y(\014rst)20 b(iden)n(tify)i(the)f (primary)e(reasons)g(for)h(implemen)n(tation)h(in-)2040 1906 y(e\016ciency)-7 b(,)26 b(and)f(then)h(describ)r(e)f(our)f (analysis)g(and)h(optimiza-)2040 2006 y(tion)j(approac)n(h.)35 b(The)27 b(next)h(section)f(describ)r(es)g(pilot)h(studies)2040 2106 y(sho)n(wing)f(the)g(p)r(erformance)g(adv)-5 b(an)n(tages)26 b(of)h(this)h(approac)n(h.)2040 2322 y Fw(4.1)82 b(Sources)26 b(of)i(Overhead)2040 2475 y Fv(T)-7 b(o)34 b(understand)g(the)h(v)-5 b(arious)33 b(sources)g(of)i(o)n(v)n(erhead,)f(let)h(us)2040 2574 y(examine)22 b(the)g(run-time)g(ob)5 b(ject)22 b(structures)f (that)h(are)f(created)2040 2674 y(for)32 b(the)h(expression)e Fu(A\(j,k\))41 b(-=)i(A\(j,i\)*A\(i,k\)/A\()o(i,)o(i\))2040 2774 y Fv(in)e(the)h(Gaussian)e(elimination)h(algorithm.)76 b(In)42 b(Figure)e(2,)2040 2873 y(the)26 b(titles)g(of)g(b)r(o)n(xes)f (\(e.g.,)h Fu(Expr,)42 b(ExprRep)p Fv(\))23 b(corresp)r(ond)h(to)2040 2973 y(classes)29 b(in)h(the)g Ft(Core)g Fv(library:)41 b(the)30 b(con)n(tainer)e(ob)5 b(jects)30 b(and)2040 3073 y(m)n(ultiple)35 b(lev)n(els)e(of)i(indirection)f(encapsulate)f (concrete)h(im-)2040 3172 y(plemen)n(tations)j(of)g(expression)f(tree)h (no)r(des)g(\(suc)n(h)g(as)g(a)g(bi-)2040 3272 y(nary)23 b(subtraction)g(op)r(eration\).)35 b(This)23 b(encapsulation)g(is)g (con-)2040 3371 y(v)n(enien)n(tly)31 b(expressed)e(using)i(class)f (inheritance)g(and)h(virtual)2040 3471 y(functions)d(in)g(an)f(ob)5 b(ject-orien)n(ted)26 b(language)g(suc)n(h)i(as)e Fu(C++)p Fv(.)2152 3571 y(Expression)k(ev)-5 b(aluation)32 b(in)n(v)n(olv)n(es)e (a)h(recursiv)n(e)f(tra)n(v)n(ersal)2040 3670 y(of)35 b(the)f(expression)f(tree,)j(and)f(iterated)f(tra)n(v)n(ersals)e(ma)n (y)h(b)r(e)2040 3770 y(necessary)17 b(b)r(ecause)h(of)g(the)h (precision-driv)n(en)d(nature)i(of)g(Lev)n(el)2040 3870 y(I)r(I)r(I)38 b(ev)-5 b(aluation.)64 b(Main)n(taining)36 b(the)h(expression)f(tree)g(guar-)2040 3969 y(an)n(tees)j(robustness,)k (but)d(it)h(reduces)e(execution)h(e\016ciency)2040 4069 y(on)29 b(curren)n(t-da)n(y)f(systems)g(with)i(deep)g(memory)f(hierarc) n(hies.)2040 4168 y(Lev)n(el)g(I)r(I)r(I)h(ev)-5 b(aluation)28 b(su\013ers)h(from)g(three)g(primary)f(sources)2040 4268 y(of)g(o)n(v)n(erhead)d(absen)n(t)i(in)h(Lev)n(el)f(I:)2148 4444 y Fo(\017)37 b Fq(F)-6 b(unction-c)l(al)t(l)37 b(overhe)l(ad)p Fv(:)54 b(The)36 b(ob)5 b(ject-orien)n(ted)34 b(pro-)2227 4544 y(gramming)17 b(st)n(yle)h(used)g(in)h Ft(Core)g Fv(encourages)d(programs)2227 4643 y(with)30 b(small)f(function)h (\(metho)r(d\))g(b)r(o)r(dies)g(that)g(are)e(dy-)2227 4743 y(namically)22 b(dispatc)n(hed)g(using)g(virtual)f(functions.)36 b(This)2227 4843 y(increases)26 b(the)j(relativ)n(e)e(con)n(tribution)g (of)h(function)h(call)2227 4942 y(costs)36 b(to)h(o)n(v)n(erall)e (execution)i(time,)j(and)c(additionally)2227 5042 y(reduces)21 b(the)g(e\013ectiv)n(eness)g(of)h(sequen)n(tial)f(compiler)f(op-)2227 5141 y(timizations)27 b(\(suc)n(h)h(as)f(constan)n(t)g(propagation\).) 2148 5271 y Fo(\017)37 b Fq(Memory)f(management)f(overhe)l(ad)p Fv(:)49 b(Expression)31 b(trees)2227 5371 y(in)g(Lev)n(el)e(I)r(I)r(I)j (are)d(dynamic)h(p)r(oin)n(ter-based)f(structures)p eop %%Page: 6 6 6 5 bop 63 1725 a @beginspecial 0 @llx 0 @lly 165 @urx 228 @ury 1512 @rhi @setspecial %%BeginDocument: figs/exprtree.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: exprtree.eps %%Creator: fig2dev Version 3.2 Patchlevel 1 %%CreationDate: Fri Dec 4 11:25:22 1998 %%For: vijayk@vijayk (Vijay Karamcheti) %%Orientation: Portrait %%BoundingBox: 0 0 165 228 %%Pages: 0 %%BeginSetup %%EndSetup %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -61.0 311.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /reencdict 12 dict def /ReEncode { reencdict begin /newcodesandnames exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName newfontname put newcodesandnames aload pop 128 1 255 { newfont /Encoding get exch /.notdef put } for newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat newfontname newfont definefont pop end } def /isovec [ 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde 8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis 8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron 8#220 /dotlessi 8#230 /oe 8#231 /OE 8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling 8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis 8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot 8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus 8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph 8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine 8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf 8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute 8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring 8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute 8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute 8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve 8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply 8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex 8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave 8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring 8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute 8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute 8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve 8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide 8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex 8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def /Times-Roman /Times-Roman-iso isovec ReEncode /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 10 setmiterlimit n -1000 6172 m -1000 -1000 l 4752 -1000 l 4752 6172 l cp clip 0.06000 0.06000 sc 7.500 slw % Ellipse n 2060 4018 318 318 0 360 DrawEllipse gs col0 s gr % Ellipse n 2852 2841 318 318 0 360 DrawEllipse gs col0 s gr % Ellipse n 2032 1710 318 318 0 360 DrawEllipse gs col0 s gr % Polyline gs clippath 1302 2555 m 1200 2625 l 1257 2515 l 1168 2616 l 1212 2656 l cp clip n 1800 1950 m 1200 2625 l gs col0 s gr gr % arrowhead n 1302 2555 m 1200 2625 l 1257 2515 l 1280 2535 l 1302 2555 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2344 3669 m 2250 3750 l 2295 3635 l 2217 3745 l 2266 3780 l cp clip n 2717 3091 m 2250 3750 l gs col0 s gr gr % arrowhead n 2344 3669 m 2250 3750 l 2295 3635 l 2319 3652 l 2344 3669 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2719 2440 m 2775 2550 l 2673 2479 l 2762 2581 l 2807 2542 l cp clip n 2250 1950 m 2775 2550 l gs col0 s gr gr % arrowhead n 2719 2440 m 2775 2550 l 2673 2479 l 2696 2460 l 2719 2440 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 3490 3621 m 3546 3731 l 3444 3660 l 3533 3762 l 3578 3723 l cp clip n 3021 3131 m 3546 3731 l gs col0 s gr gr % arrowhead n 3490 3621 m 3546 3731 l 3444 3660 l 3467 3641 l 3490 3621 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2737 4754 m 2793 4864 l 2691 4793 l 2780 4895 l 2825 4856 l cp clip n 2268 4264 m 2793 4864 l gs col0 s gr gr % arrowhead n 2737 4754 m 2793 4864 l 2691 4793 l 2714 4774 l 2737 4754 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 1492 4850 m 1398 4931 l 1443 4816 l 1365 4926 l 1414 4961 l cp clip n 1865 4272 m 1398 4931 l gs col0 s gr gr % arrowhead n 1492 4850 m 1398 4931 l 1443 4816 l 1467 4833 l 1492 4850 l cp gs 0.00 setgray ef gr col0 s /Times-Roman-iso ff 330.00 scf sf 1950 1800 m gs 1 -1 sc (-) col0 sh gr /Times-Roman-iso ff 330.00 scf sf 1980 4170 m gs 1 -1 sc (*) col0 sh gr /Times-Roman-iso ff 330.00 scf sf 2812 2932 m gs 1 -1 sc (/) col0 sh gr /Times-Roman-iso ff 180.00 scf sf 1020 2827 m gs 1 -1 sc (A\(j,k\)) col0 sh gr /Times-Roman-iso ff 180.00 scf sf 3353 3915 m gs 1 -1 sc (A\(i,i\)) col0 sh gr /Times-Roman-iso ff 180.00 scf sf 2580 5062 m gs 1 -1 sc (A\(i,k\)) col0 sh gr /Times-Roman-iso ff 180.00 scf sf 1177 5123 m gs 1 -1 sc (A\(j,i\)) col0 sh gr $F2psEnd rs %%EndDocument @endspecial 1257 w @beginspecial 0 @llx 0 @lly 404.500000 @urx 291.500000 @ury 2160 @rhi @setspecial %%BeginDocument: figs/gaussian-expr-tree.eps %!PS-Adobe-3.0 EPSF-3.0 %%Creator: ImageMark Software Labs %%For: () () %%Title: D:\Home\Research\Proposals\Chee-NSF\gaussian-expr-tree.eps %%CreationDate: () () %%BoundingBox: 0.0000 0.0000 404.5000 291.5000 %%DocumentProcessColors: Black %%ColorUsage:Black&White %%DocumentFonts: Helvetica %%+Helvetica-Bold %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 %%+ procset Adobe_cmykcolor 1.1 0 %%+ procset Adobe_cshow 1.1 0 %%+ procset Adobe_customcolor 1.0 0 %%+ procset Adobe_typography_AI3 1.0 0 %%+ procset Adobe_Illustrator_AI3 1.0 0 %AI3_ColorUsage: Black&White %AI3_TemplateBox: 0.0000 0.0000 404.5000 291.5000 %AI3_TileBox: 0.0000 0.0000 404.5000 291.5000 %AI3_DocumentPreview: None %%Template: %%PageOrigin:0.0000 0.0000 %%EndComments %%BeginProlog %%BeginResource: procset Adobe_packedarray 2.0 0 %%Title: (Packed Array Operators) %%Version: 2.0 %%CreationDate: (8/2/90) () %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) userdict /Adobe_packedarray 5 dict dup begin put /initialize { /packedarray where { pop } { Adobe_packedarray begin Adobe_packedarray { dup xcheck { bind } if userdict 3 1 roll put } forall end } ifelse } def /terminate { } def /packedarray { array astore readonly } def /setpacking { pop } def /currentpacking { false } def currentdict readonly pop end %%EndResource Adobe_packedarray /initialize get exec %%Title: (CMYK Color Operators) %%Version: 1.1 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cmykcolor 4 dict dup begin put /initialize { /setcmykcolor where { pop } { userdict /Adobe_cmykcolor_vars 2 dict dup begin put /_setrgbcolor /setrgbcolor load def /_currentrgbcolor /currentrgbcolor load def Adobe_cmykcolor begin Adobe_cmykcolor { dup xcheck { bind } if pop pop } forall end end Adobe_cmykcolor begin } ifelse } def /terminate { currentdict Adobe_cmykcolor eq { end } if } def /setcmykcolor { 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat Adobe_cmykcolor_vars /_setrgbcolor get exec pop } def /currentcmykcolor { Adobe_cmykcolor_vars /_currentrgbcolor get exec 3 { 1 sub neg 3 1 roll } repeat 0 } def currentdict readonly pop end setpacking %%EndResource %%BeginResource: procset Adobe_cshow 1.1 0 %%Title: (cshow Operator) %%Version: 1.1 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cshow 3 dict dup begin put /initialize { /cshow where { pop } { userdict /Adobe_cshow_vars 1 dict dup begin put /_cshow {} def Adobe_cshow begin Adobe_cshow { dup xcheck { bind } if userdict 3 1 roll put } forall end end } ifelse } def /terminate { } def /cshow { exch Adobe_cshow_vars exch /_cshow exch put { 0 0 Adobe_cshow_vars /_cshow get exec } forall } def currentdict readonly pop end setpacking %%EndResource %%BeginResource: procset Adobe_customcolor 1.0 0 %%Title: (Custom Color Operators) %%Version: 1.0 %%CreationDate: (5/9/88) () %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_customcolor 5 dict dup begin put /initialize { /setcustomcolor where { pop } { Adobe_customcolor begin Adobe_customcolor { dup xcheck { bind } if pop pop } forall end Adobe_customcolor begin } ifelse } def /terminate { currentdict Adobe_customcolor eq { end } if } def /findcmykcustomcolor { 5 packedarray } def /setcustomcolor { exch aload pop pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } def /setoverprint { pop } def currentdict readonly pop end setpacking %%EndResource %%BeginResource: procset Adobe_typography_AI3 1.0 0 %%Title: (Typography Operators)%%Version: 1.0 %%CreationDate:(5/31/90) () %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_typography_AI3 46 dict dup begin put /initialize { /TZ where { pop } { Adobe_typography_AI3 begin Adobe_typography_AI3 { dup xcheck { bind } if pop pop } forall end Adobe_typography_AI3 begin } ifelse } def /terminate { currentdict Adobe_typography_AI3 eq { end } if } def /modifyEncoding { /_tempEncode exch ddef /_pntr 0 ddef { counttomark -1 roll dup type dup /marktype eq { pop pop exit } { /nametype eq { _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll put } { /_pntr exch ddef } ifelse } ifelse } loop _tempEncode } def /TE { StandardEncoding 256 array copy modifyEncoding /_nativeEncoding exch def } def /TZ { /_useNativeEncoding exch def pop pop findfont dup length 2 add dict begin mark exch { 1 index /FID ne { def } if cleartomark mark } forall pop /FontName exch def counttomark 0 eq { Encoding StandardEncoding eq 1 _useNativeEncoding eq and { /Encoding _nativeEncoding def } if cleartomark } { /Encoding load 256 array copy modifyEncoding /Encoding exch def } ifelse FontName currentdict end definefont pop } def /tr { _ax _ay 3 2 roll } def /trj { _cx _cy _sp _ax _ay 6 5 roll } def /a0 { /Tx { dup currentpoint 3 2 roll tr _psf newpath moveto tr _ctm _pss } ddef /Tj { dup currentpoint 3 2 roll trj _pjsf newpath moveto trj _ctm _pjss } ddef } def /a1 { W B } def /e0 { /Tx { tr _psf } ddef /Tj { trj _pjsf } ddef } def /e1 { W F } def /i0 { /Tx { tr sp } ddef /Tj { trj jsp } ddef } def /o0 { /Tx { tr sw rmoveto } ddef /Tj { trj swj rmoveto } ddef } def /r0 { /Tx { tr _ctm _pss } ddef /Tj { trj _ctm _pjss } ddef } def /r1 { W S } def /To { pop _ctm currentmatrix pop } def /TO { Te _ctm setmatrix newpath } def /Tp { pop _tm astore pop _ctm setmatrix 2 dict begin /W {} def /h {} def } def /TP { end iTm 0 0 moveto } def /Tr { Te currentpoint newpath moveto dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse dup /_render exch ddef _renderStart exch get load exec } def /iTm { _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale } def /Te { _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse /_render -1 ddef } def /Tf { dup 1000 div /_fScl exch ddef exch findfont exch scalefont setfont } def /Tl { pop 0 exch _leading astore pop } def /Tt { pop } def /TW { 3 npop } def /Tw { /_cx exch ddef } def /Tc { /_ax exch ddef } def /Ts { /_rise exch ddef currentpoint iTm moveto } def /Ti { 3 npop } def /Tz { 100 div /_hs exch ddef iTm } def /Tq { pop } def /TX {pop} def /Tk { exch pop _fScl mul neg 0 rmoveto } def /T- { _hyphen Tx } def /TS { 0 eq {Tx} {Tj} ifelse } def currentdict readonly pop end setpacking %%EndResource %%BeginResource: procset Adobe_Illustrator_AI3 1.0 0 %%Title: (Adobe Illustrator (R) Version 3.0 Full Prolog) %%Version: 1.0 %%CreationDate: (7/22/89) () %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI3 71 dict dup begin put /initialize { userdict /Adobe_Illustrator_AI3_vars 55 dict dup begin put /_lp /none def /_pf {} def /_ps {} def /_psf {} def /_pss {} def /_pjsf {} def /_pjss {} def /_pola 0 def /_doClip 0 def /cf currentflat def /_tm matrix def /_renderStart [/e0 /r0 /a0 /o0 /i0 /i0 /i0 /i0] def /_renderEnd [null null null null /e1 /r1 /a1 /clip] def /_render -1 def /_rise 0 def /_ax 0 def /_ay 0 def /_cx 0 def /_cy 0 def /_leading [0 0] def /_ctm matrix def /_mtx matrix def /_sp 16#020 def /_hyphen (-) def /_fScl 0 def /_cnt 0 def /_hs 1 def /_nativeEncoding 0 def /_useNativeEncoding 0 def /_tempEncode 0 def /_pntr 0 def /Tx {} def /Tj {} def /CRender {} def /_AI3_savepage {} def /_gf null def /_cf 4 array def /_if null def /_of false def /_fc {} def /_gs null def /_cs 4 array def /_is null def /_os false def /_sc {} def /_pd 1 dict def /_ed 15 dict def /_pm matrix def /_fm null def /_fd null def /_fdd null def /_sm null def /_sd null def /_sdd null def /_i null def Adobe_Illustrator_AI3 begin Adobe_Illustrator_AI3 dup /nc get begin { dup xcheck { bind } if pop pop } forall end end end Adobe_Illustrator_AI3 begin Adobe_Illustrator_AI3_vars begin newpath } def /terminate { end end } def /_ null def /ddef { Adobe_Illustrator_AI3_vars 3 1 roll put } def /xput { dup load dup length exch maxlength eq { dup dup load dup length 2 mul dict copy def } if load begin def end } def /npop { { pop } repeat } def /sw { dup length exch stringwidth exch 5 -1 roll 3 index 1 sub mul add 4 1 roll 3 1 roll 1 sub mul add } def /swj { dup 4 1 roll dup length exch stringwidth exch 5 -1 roll 3 index 1 sub mul add 4 1 roll 3 1 roll 1 sub mul add 6 2 roll /_cnt 0 ddef {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop } def /ss { 4 1 roll { 2 npop (0) exch 2 copy 0 exch put pop gsave false charpath currentpoint 4 index setmatrix stroke grestore moveto 2 copy rmoveto } exch cshow 3 npop } def /jss { 4 1 roll { 2 npop (0) exch 2 copy 0 exch put gsave _sp eq { exch 6 index 6 index 6 index 5 -1 roll widthshow currentpoint } { false charpath currentpoint 4 index setmatrix stroke }ifelse grestore moveto 2 copy rmoveto } exch cshow 6 npop } def /sp { { 2 npop (0) exch 2 copy 0 exch put pop false charpath 2 copy rmoveto } exch cshow 2 npop } def /jsp { { 2 npop (0) exch 2 copy 0 exch put _sp eq { exch 5 index 5 index 5 index 5 -1 roll widthshow } { false charpath }ifelse 2 copy rmoveto } exch cshow 5 npop } def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } def /setstrokeadjust where {pop true setstrokeadjust /c { curveto } def /C /c load def /v { currentpoint 6 2 roll curveto } def /V /v load def /y { 2 copy curveto } def /Y /y load def /l { lineto } def /L /l load def /m { moveto } def } { /c { pl curveto } def /C /c load def /v { currentpoint 6 2 roll pl curveto } def /V /v load def /y { pl 2 copy curveto } def /Y /y load def /l { pl lineto } def /L /l load def /m { pl moveto } def } ifelse /d { setdash } def /cf {} def /i { dup 0 eq { pop cf } if setflat } def /j { setlinejoin } def /J { setlinecap } def /M { setmiterlimit } def /w { setlinewidth } def /H {} def /h { closepath } def /N { _pola 0 eq { _doClip 1 eq {clip /_doClip 0 ddef} if newpath } { /CRender {N} ddef }ifelse } def /n {N} def /F { _pola 0 eq { _doClip 1 eq { gsave _pf grestore clip newpath /_lp /none ddef _fc /_doClip 0 ddef } { _pf }ifelse } { /CRender {F} ddef }ifelse } def /f { closepath F } def /S { _pola 0 eq { _doClip 1 eq { gsave _ps grestore clip newpath /_lp /none ddef _sc /_doClip 0 ddef } { _ps }ifelse } { /CRender {S} ddef }ifelse } def /s { closepath S } def /B { _pola 0 eq { _doClip 1 eq gsave F grestore { gsave S grestore clip newpath /_lp /none ddef _sc /_doClip 0 ddef } { S }ifelse } { /CRender {B} ddef }ifelse } def /b { closepath B } def /W { /_doClip 1 ddef } def /* { count 0 ne { dup type (stringtype) eq {pop} if } if _pola 0 eq {newpath} if } def /u {} def /U {} def /q {_pola 0 eq {gsave} if } def /Q { _pola 0 eq {grestore} if } def /*u { _pola 1 add /_pola exch ddef } def /*U { _pola 1 sub /_pola exch ddef _pola 0 eq {CRender} if } def /D {pop} def /*w {} def /*W {} def /` { /_i save ddef 6 1 roll 4 npop concat userdict begin /showpage {} def false setoverprint pop } def /~ { end _i restore } def /@ {} def /& {} def /O { 0 ne /_of exch ddef /_lp /none ddef } def /R { 0 ne /_os exch ddef /_lp /none ddef } def /g { /_gf exch ddef /_fc { _lp /fill ne { _of setoverprint _gf setgray /_lp /fill ddef } if } ddef /_pf { _fc fill } ddef /_psf { _fc ashow } ddef /_pjsf { _fc awidthshow } ddef /_lp /none ddef } def /G { /_gs exch ddef /_sc { _lp /stroke ne { _os setoverprint _gs setgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /k { _cf astore pop /_fc { _lp /fill ne { _of setoverprint _cf aload pop setcmykcolor /_lp /fill ddef } if } ddef /_pf { _fc fill } ddef /_psf { _fc ashow } ddef /_pjsf { _fc awidthshow } ddef /_lp /none ddef } def /K { _cs astore pop /_sc { _lp /stroke ne { _os setoverprint _cs aload pop setcmykcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /x { /_gf exch ddef findcmykcustomcolor /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc fill } ddef /_psf { _fc ashow } ddef /_pjsf { _fc awidthshow } ddef /_lp /none ddef } def /X { /_gs exch ddef findcmykcustomcolor /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /dp { dup null eq { pop _dp 0 ne { 0 1 _dp 1 sub _dl mod { _da exch get 3 get } for _dp 1 sub _dl mod 1 add packedarray _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll definepattern pop } if } { _dp 0 ne _dp _dl mod 0 eq and { null dp } if 7 packedarray _da exch _dp _dl mod exch put _dp _dl mod _da 0 get 4 get 2 packedarray /_dp _dp 1 add def } ifelse } def /E { _ed begin dup 0 get type /arraytype ne { 0 { dup 1 add index type /arraytype eq { 1 add } { exit } ifelse } loop array astore } if /_dd exch def /_ury exch def /_urx exch def /_lly exch def /_llx exch def /_n exch def /_y 0 def /_dl 4 def /_dp 0 def /_da _dl array def 0 1 _dd length 1 sub { /_d exch _dd exch get def 0 2 _d length 2 sub { /_x exch def /_c _d _x get _ ne def /_r _d _x 1 add get cvlit def _r _ ne { _urx _llx sub _ury _lly sub [1 0 0 1 0 0] [ /save cvx _llx neg _lly neg /translate cvx _c { nc /begin cvx } if _r dup type /stringtype eq { cvx } { {exec} /forall cvx } ifelse _c { /end cvx } if /restore cvx ] cvx /_fn 12 _n length add string def _y _fn cvs pop /_y _y 1 add def _fn 12 _n putinterval _fn _c false dp _d exch _x 1 add exch put } if } for } for null dp _n _dd /_pd end xput } def /fc { _fm dup concatmatrix pop } def /p { /_fm exch ddef 9 -2 roll _pm translate fc 7 -2 roll _pm scale fc 5 -1 roll _pm rotate fc 4 -2 roll exch 0 ne { dup _pm rotate fc 1 -1 _pm scale fc neg _pm rotate fc } { pop } ifelse dup _pm rotate fc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore fc neg _pm rotate fc _pd exch get /_fdd exch ddef /_pf { save 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm patternfill } { pop fill } ifelse grestore pop } for pop } for restore newpath } ddef /_psf { save 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 9 copy 6 npop patternashow } { pop 6 copy 3 npop ashow } ifelse grestore pop } for pop } for restore sw rmoveto } ddef /_pjsf { save 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 12 copy 6 npop patternawidthshow } { pop 9 copy 3 npop awidthshow } ifelse grestore pop } for pop } for restore swj rmoveto } ddef /_lp /none ddef } def /sc { _sm dup concatmatrix pop } def /P { /_sm exch ddef 9 -2 roll _pm translate sc 7 -2 roll _pm scale sc 5 -1 roll _pm rotate sc 4 -2 roll exch 0 ne { dup _pm rotate sc 1 -1 _pm scale sc neg _pm rotate sc } { pop } ifelse dup _pm rotate sc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore sc neg _pm rotate sc _pd exch get /_sdd exch ddef /_ps { save 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm patternstroke } { pop stroke } ifelse grestore pop } for pop } for restore newpath } ddef /_pss { save 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 10 copy 6 npop patternashowstroke } { pop 7 copy 3 npop ss } ifelse grestore pop } for pop } for restore pop sw rmoveto } ddef /_pjss { save 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 13 copy 6 npop patternawidthshowstroke } { pop 10 copy 3 npop jss } ifelse grestore pop } for pop } for restore pop swj rmoveto } ddef /_lp /none ddef } def /A { pop } def /nc 3 dict def nc begin /setgray { pop } bind def /setcmykcolor { 4 npop } bind def /setcustomcolor { 2 npop } bind def currentdict readonly pop end /Z {findfont begin currentdict dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /FontName exch def dup length 0 ne {/Encoding Encoding 256 array copy def 0 exch {dup type /nametype eq {Encoding 2 index 2 index put pop 1 add} {exch pop} ifelse} forall} if pop currentdict dup end end /FontName get exch definefont pop} bind def currentdict readonly pop end setpacking /annotatepage { } def %%EndResource %AI3-Grid.0 0 0 0 0 0 0 2 %%EndProlog %%BeginSetup Adobe_cshow /initialize get exec Adobe_customcolor /initialize get exec Adobe_typography_AI3 /initialize get exec Adobe_Illustrator_AI3 /initialize get exec %%BeginEncoding:_Helvetica Helvetica [ 39/quotesingle 96/grave 130/quotesinglbase 131/florin 132/quotedblbase 133/ellipsis 134/dagger 135/daggerdbl 136/circumflex 137/perthousand 138/Scaron 139/guilsinglleft 140/OE 145/quoteleft 146/quoteright 147/quotedblleft 148/quotedblright 149/bullet 150/endash 151/emdash 152/tilde 153/trademark 154/scaron 155/guilsinglright 156/oe 157/dotlessi 159/Ydieresis 164/currency 166/brokenbar 168/dieresis 169/copyright 170/ordfeminine 172/logicalnot 174/registered 175/macron 176/ring 177/plusminus 178/twosuperior 179/threesuperior 180/acute 181/mu 183/periodcentered 184/cedilla 185/onesuperior 186/ordmasculine 188/onequarter 189/onehalf 190/threequarters 192/Agrave 193/Aacute 194/Acircumflex 195/Atilde 196/Adieresis 197/Aring 198/AE 199/Ccedilla 200/Egrave 201/Eacute 202/Ecircumflex 203/Edieresis 204/Igrave 205/Iacute 206/Icircumflex 207/Idieresis 208/Eth 209/Ntilde 210/Ograve 211/Oacute 212/Ocircumflex 213/Otilde 214/Odieresis 215/multiply 216/Oslash 217/Ugrave 218/Uacute 219/Ucircumflex 220/Udieresis 221/Yacute 222/Thorn 223/germandbls 224/agrave 225/aacute 226/acircumflex 227/atilde 228/adieresis 229/aring 230/ae 231/ccedilla 232/egrave 233/eacute 234/ecircumflex 235/edieresis 236/igrave 237/iacute 238/icircumflex 239/idieresis 240/eth 241/ntilde 242/ograve 243/oacute 244/ocircumflex 245/otilde 246/odieresis 247/divide 248/oslash 249/ugrave 250/uacute 251/ucircumflex 252/udieresis 253/yacute 254/thorn 255/ydieresis ] /_Helvetica/Helvetica Z %%EndEncoding %%BeginEncoding:_Helvetica-Bold Helvetica-Bold [ 39/quotesingle 96/grave 130/quotesinglbase 131/florin 132/quotedblbase 133/ellipsis 134/dagger 135/daggerdbl 136/circumflex 137/perthousand 138/Scaron 139/guilsinglleft 140/OE 145/quoteleft 146/quoteright 147/quotedblleft 148/quotedblright 149/bullet 150/endash 151/emdash 152/tilde 153/trademark 154/scaron 155/guilsinglright 156/oe 157/dotlessi 159/Ydieresis 164/currency 166/brokenbar 168/dieresis 169/copyright 170/ordfeminine 172/logicalnot 174/registered 175/macron 176/ring 177/plusminus 178/twosuperior 179/threesuperior 180/acute 181/mu 183/periodcentered 184/cedilla 185/onesuperior 186/ordmasculine 188/onequarter 189/onehalf 190/threequarters 192/Agrave 193/Aacute 194/Acircumflex 195/Atilde 196/Adieresis 197/Aring 198/AE 199/Ccedilla 200/Egrave 201/Eacute 202/Ecircumflex 203/Edieresis 204/Igrave 205/Iacute 206/Icircumflex 207/Idieresis 208/Eth 209/Ntilde 210/Ograve 211/Oacute 212/Ocircumflex 213/Otilde 214/Odieresis 215/multiply 216/Oslash 217/Ugrave 218/Uacute 219/Ucircumflex 220/Udieresis 221/Yacute 222/Thorn 223/germandbls 224/agrave 225/aacute 226/acircumflex 227/atilde 228/adieresis 229/aring 230/ae 231/ccedilla 232/egrave 233/eacute 234/ecircumflex 235/edieresis 236/igrave 237/iacute 238/icircumflex 239/idieresis 240/eth 241/ntilde 242/ograve 243/oacute 244/ocircumflex 245/otilde 246/odieresis 247/divide 248/oslash 249/ugrave 250/uacute 251/ucircumflex 252/udieresis 253/yacute 254/thorn 255/ydieresis ] /_Helvetica-Bold/Helvetica-Bold Z %%EndEncoding %%EndSetup u 0.000 0.000 0.000 0.000 k [] 0 d 0.000 0.000 0.000 0.000 K 1 j 202.2500 101.2500 m 313.0000 101.2500 L 313.0000 212.0000 L 202.2500 212.0000 L 202.2500 267.2500 L 91.5000 267.2500 L 91.5000 35.0000 L 202.2500 35.0000 L 202.2500 101.2500 L F U u 0.7500 w 0.000 0.000 0.000 1.000 K 1 J 202.2500 101.2500 m 203.7500 101.2500 L S U u 205.0000 101.2500 m 206.5000 101.2500 L S U u 208.0000 101.2500 m 209.5000 101.2500 L S U u 210.7500 101.2500 m 212.2500 101.2500 L S U u 213.7500 101.2500 m 215.2500 101.2500 L S U u 216.5000 101.2500 m 218.0000 101.2500 L S U u 219.5000 101.2500 m 221.0000 101.2500 L S U u 222.2500 101.2500 m 223.7500 101.2500 L S U u 225.2500 101.2500 m 226.7500 101.2500 L S U u 228.0000 101.2500 m 229.5000 101.2500 L S U u 231.0000 101.2500 m 232.5000 101.2500 L S U u 233.7500 101.2500 m 235.2500 101.2500 L S U u 236.7500 101.2500 m 238.2500 101.2500 L S U u 239.5000 101.2500 m 241.0000 101.2500 L S U u 242.5000 101.2500 m 244.0000 101.2500 L S U u 245.2500 101.2500 m 246.7500 101.2500 L S U u 248.2500 101.2500 m 249.7500 101.2500 L S U u 251.0000 101.2500 m 252.5000 101.2500 L S U u 254.0000 101.2500 m 255.5000 101.2500 L S U u 257.0000 101.2500 m 258.2500 101.2500 L S U u 259.7500 101.2500 m 261.2500 101.2500 L S U u 262.7500 101.2500 m 264.0000 101.2500 L S U u 265.5000 101.2500 m 267.0000 101.2500 L S U u 268.5000 101.2500 m 269.7500 101.2500 L S U u 271.2500 101.2500 m 272.7500 101.2500 L S U u 274.2500 101.2500 m 275.5000 101.2500 L S U u 277.0000 101.2500 m 278.5000 101.2500 L S U u 280.0000 101.2500 m 281.2500 101.2500 L S U u 282.7500 101.2500 m 284.2500 101.2500 L S U u 285.7500 101.2500 m 287.0000 101.2500 L S U u 288.5000 101.2500 m 290.0000 101.2500 L S U u 291.5000 101.2500 m 292.7500 101.2500 L S U u 294.2500 101.2500 m 295.7500 101.2500 L S U u 297.2500 101.2500 m 298.5000 101.2500 L S U u 300.0000 101.2500 m 301.5000 101.2500 L S U u 303.0000 101.2500 m 304.2500 101.2500 L S U u 305.7500 101.2500 m 307.2500 101.2500 L S U u 308.7500 101.2500 m 310.0000 101.2500 L S U u 311.5000 101.2500 m 313.0000 101.2500 L S U u 313.0000 102.7500 m 313.0000 104.2500 L S U u 313.0000 105.7500 m 313.0000 107.0000 L S U u 313.0000 108.5000 m 313.0000 110.0000 L S U u 313.0000 111.5000 m 313.0000 112.7500 L S U u 313.0000 114.2500 m 313.0000 115.7500 L S U u 313.0000 117.2500 m 313.0000 118.5000 L S U u 313.0000 120.0000 m 313.0000 121.5000 L S U u 313.0000 123.0000 m 313.0000 124.2500 L S U u 313.0000 125.7500 m 313.0000 127.2500 L S U u 313.0000 128.7500 m 313.0000 130.0000 L S U u 313.0000 131.5000 m 313.0000 133.0000 L S U u 313.0000 134.5000 m 313.0000 135.7500 L S U u 313.0000 137.2500 m 313.0000 138.7500 L S U u 313.0000 140.2500 m 313.0000 141.5000 L S U u 313.0000 143.0000 m 313.0000 144.5000 L S U u 313.0000 146.0000 m 313.0000 147.2500 L S U u 313.0000 148.7500 m 313.0000 150.2500 L S U u 313.0000 151.7500 m 313.0000 153.0000 L S U u 313.0000 154.5000 m 313.0000 156.0000 L S U u 313.0000 157.5000 m 313.0000 159.0000 L S U u 313.0000 160.2500 m 313.0000 161.7500 L S U u 313.0000 163.2500 m 313.0000 164.7500 L S U u 313.0000 166.0000 m 313.0000 167.5000 L S U u 313.0000 169.0000 m 313.0000 170.5000 L S U u 313.0000 171.7500 m 313.0000 173.2500 L S U u 313.0000 174.7500 m 313.0000 176.2500 L S U u 313.0000 177.5000 m 313.0000 179.0000 L S U u 313.0000 180.5000 m 313.0000 182.0000 L S U u 313.0000 183.2500 m 313.0000 184.7500 L S U u 313.0000 186.2500 m 313.0000 187.7500 L S U u 313.0000 189.0000 m 313.0000 190.5000 L S U u 313.0000 192.0000 m 313.0000 193.5000 L S U u 313.0000 194.7500 m 313.0000 196.2500 L S U u 313.0000 197.7500 m 313.0000 199.2500 L S U u 313.0000 200.5000 m 313.0000 202.0000 L S U u 313.0000 203.5000 m 313.0000 205.0000 L S U u 313.0000 206.2500 m 313.0000 207.7500 L S U u 313.0000 209.2500 m 313.0000 210.7500 L S U u 313.0000 212.0000 m 311.5000 212.0000 L S U u 310.0000 212.0000 m 308.5000 212.0000 L S U u 307.2500 212.0000 m 305.7500 212.0000 L S U u 304.2500 212.0000 m 302.7500 212.0000 L S U u 301.2500 212.0000 m 300.0000 212.0000 L S U u 298.5000 212.0000 m 297.0000 212.0000 L S U u 295.5000 212.0000 m 294.2500 212.0000 L S U u 292.7500 212.0000 m 291.2500 212.0000 L S U u 289.7500 212.0000 m 288.5000 212.0000 L S U u 287.0000 212.0000 m 285.5000 212.0000 L S U u 284.0000 212.0000 m 282.7500 212.0000 L S U u 281.2500 212.0000 m 279.7500 212.0000 L S U u 278.2500 212.0000 m 277.0000 212.0000 L S U u 275.5000 212.0000 m 274.0000 212.0000 L S U u 272.5000 212.0000 m 271.2500 212.0000 L S U u 269.7500 212.0000 m 268.2500 212.0000 L S U u 266.7500 212.0000 m 265.5000 212.0000 L S U u 264.0000 212.0000 m 262.5000 212.0000 L S U u 261.0000 212.0000 m 259.7500 212.0000 L S U u 258.2500 212.0000 m 256.7500 212.0000 L S U u 255.2500 212.0000 m 254.0000 212.0000 L S U u 252.5000 212.0000 m 251.0000 212.0000 L S U u 249.5000 212.0000 m 248.0000 212.0000 L S U u 246.7500 212.0000 m 245.2500 212.0000 L S U u 243.7500 212.0000 m 242.2500 212.0000 L S U u 241.0000 212.0000 m 239.5000 212.0000 L S U u 238.0000 212.0000 m 236.5000 212.0000 L S U u 235.2500 212.0000 m 233.7500 212.0000 L S U u 232.2500 212.0000 m 230.7500 212.0000 L S U u 229.5000 212.0000 m 228.0000 212.0000 L S U u 226.5000 212.0000 m 225.0000 212.0000 L S U u 223.7500 212.0000 m 222.2500 212.0000 L S U u 220.7500 212.0000 m 219.2500 212.0000 L S U u 218.0000 212.0000 m 216.5000 212.0000 L S U u 215.0000 212.0000 m 213.5000 212.0000 L S U u 212.2500 212.0000 m 210.7500 212.0000 L S U u 209.2500 212.0000 m 207.7500 212.0000 L S U u 206.5000 212.0000 m 205.0000 212.0000 L S U u 203.5000 212.0000 m 202.2500 212.0000 L S U u 202.2500 212.0000 m 202.2500 212.0000 L S U u 202.2500 213.5000 m 202.2500 215.0000 L S U u 202.2500 216.5000 m 202.2500 218.0000 L S U u 202.2500 219.2500 m 202.2500 220.7500 L S U u 202.2500 222.2500 m 202.2500 223.7500 L S U u 202.2500 225.0000 m 202.2500 226.5000 L S U u 202.2500 228.0000 m 202.2500 229.5000 L S U u 202.2500 230.7500 m 202.2500 232.2500 L S U u 202.2500 233.7500 m 202.2500 235.2500 L S U u 202.2500 236.5000 m 202.2500 238.0000 L S U u 202.2500 239.5000 m 202.2500 241.0000 L S U u 202.2500 242.2500 m 202.2500 243.7500 L S U u 202.2500 245.2500 m 202.2500 246.7500 L S U u 202.2500 248.0000 m 202.2500 249.5000 L S U u 202.2500 251.0000 m 202.2500 252.5000 L S U u 202.2500 253.7500 m 202.2500 255.2500 L S U u 202.2500 256.7500 m 202.2500 258.2500 L S U u 202.2500 259.5000 m 202.2500 261.0000 L S U u 202.2500 262.5000 m 202.2500 264.0000 L S U u 202.2500 265.2500 m 202.2500 266.7500 L S U u 201.2500 267.2500 m 199.7500 267.2500 L S U u 198.2500 267.2500 m 197.0000 267.2500 L S U u 195.5000 267.2500 m 194.0000 267.2500 L S U u 192.5000 267.2500 m 191.2500 267.2500 L S U u 189.7500 267.2500 m 188.2500 267.2500 L S U u 186.7500 267.2500 m 185.5000 267.2500 L S U u 184.0000 267.2500 m 182.5000 267.2500 L S U u 181.0000 267.2500 m 179.7500 267.2500 L S U u 178.2500 267.2500 m 176.7500 267.2500 L S U u 175.2500 267.2500 m 174.0000 267.2500 L S U u 172.5000 267.2500 m 171.0000 267.2500 L S U u 169.5000 267.2500 m 168.2500 267.2500 L S U u 166.7500 267.2500 m 165.2500 267.2500 L S U u 163.7500 267.2500 m 162.5000 267.2500 L S U u 161.0000 267.2500 m 159.5000 267.2500 L S U u 158.0000 267.2500 m 156.5000 267.2500 L S U u 155.2500 267.2500 m 153.7500 267.2500 L S U u 152.2500 267.2500 m 150.7500 267.2500 L S U u 149.5000 267.2500 m 148.0000 267.2500 L S U u 146.5000 267.2500 m 145.0000 267.2500 L S U u 143.7500 267.2500 m 142.2500 267.2500 L S U u 140.7500 267.2500 m 139.2500 267.2500 L S U u 138.0000 267.2500 m 136.5000 267.2500 L S U u 135.0000 267.2500 m 133.5000 267.2500 L S U u 132.2500 267.2500 m 130.7500 267.2500 L S U u 129.2500 267.2500 m 127.7500 267.2500 L S U u 126.5000 267.2500 m 125.0000 267.2500 L S U u 123.5000 267.2500 m 122.0000 267.2500 L S U u 120.7500 267.2500 m 119.2500 267.2500 L S U u 117.7500 267.2500 m 116.2500 267.2500 L S U u 115.0000 267.2500 m 113.5000 267.2500 L S U u 112.0000 267.2500 m 110.5000 267.2500 L S U u 109.2500 267.2500 m 107.7500 267.2500 L S U u 106.2500 267.2500 m 104.7500 267.2500 L S U u 103.2500 267.2500 m 102.0000 267.2500 L S U u 100.5000 267.2500 m 99.0000 267.2500 L S U u 97.5000 267.2500 m 96.2500 267.2500 L S U u 94.7500 267.2500 m 93.2500 267.2500 L S U u 91.7500 267.2500 m 91.5000 267.2500 L S U u 91.5000 267.2500 m 91.5000 266.2500 L S U u 91.5000 264.7500 m 91.5000 263.2500 L S U u 91.5000 262.0000 m 91.5000 260.5000 L S U u 91.5000 259.0000 m 91.5000 257.5000 L S U u 91.5000 256.2500 m 91.5000 254.7500 L S U u 91.5000 253.2500 m 91.5000 251.7500 L S U u 91.5000 250.2500 m 91.5000 249.0000 L S U u 91.5000 247.5000 m 91.5000 246.0000 L S U u 91.5000 244.5000 m 91.5000 243.2500 L S U u 91.5000 241.7500 m 91.5000 240.2500 L S U u 91.5000 238.7500 m 91.5000 237.5000 L S U u 91.5000 236.0000 m 91.5000 234.5000 L S U u 91.5000 233.0000 m 91.5000 231.7500 L S U u 91.5000 230.2500 m 91.5000 228.7500 L S U u 91.5000 227.2500 m 91.5000 226.0000 L S U u 91.5000 224.5000 m 91.5000 223.0000 L S U u 91.5000 221.5000 m 91.5000 220.2500 L S U u 91.5000 218.7500 m 91.5000 217.2500 L S U u 91.5000 215.7500 m 91.5000 214.5000 L S U u 91.5000 213.0000 m 91.5000 211.5000 L S U u 91.5000 210.0000 m 91.5000 208.7500 L S U u 91.5000 207.2500 m 91.5000 205.7500 L S U u 91.5000 204.2500 m 91.5000 203.0000 L S U u 91.5000 201.5000 m 91.5000 200.0000 L S U u 91.5000 198.5000 m 91.5000 197.2500 L S U u 91.5000 195.7500 m 91.5000 194.2500 L S U u 91.5000 192.7500 m 91.5000 191.5000 L S U u 91.5000 190.0000 m 91.5000 188.5000 L S U u 91.5000 187.0000 m 91.5000 185.5000 L S U u 91.5000 184.2500 m 91.5000 182.7500 L S U u 91.5000 181.2500 m 91.5000 179.7500 L S U u 91.5000 178.5000 m 91.5000 177.0000 L S U u 91.5000 175.5000 m 91.5000 174.0000 L S U u 91.5000 172.7500 m 91.5000 171.2500 L S U u 91.5000 169.7500 m 91.5000 168.2500 L S U u 91.5000 167.0000 m 91.5000 165.5000 L S U u 91.5000 164.0000 m 91.5000 162.5000 L S U u 91.5000 161.2500 m 91.5000 159.7500 L S U u 91.5000 158.2500 m 91.5000 156.7500 L S U u 91.5000 155.5000 m 91.5000 154.0000 L S U u 91.5000 152.5000 m 91.5000 151.0000 L S U u 91.5000 149.7500 m 91.5000 148.2500 L S U u 91.5000 146.7500 m 91.5000 145.2500 L S U u 91.5000 144.0000 m 91.5000 142.5000 L S U u 91.5000 141.0000 m 91.5000 139.5000 L S U u 91.5000 138.2500 m 91.5000 136.7500 L S U u 91.5000 135.2500 m 91.5000 133.7500 L S U u 91.5000 132.5000 m 91.5000 131.0000 L S U u 91.5000 129.5000 m 91.5000 128.0000 L S U u 91.5000 126.5000 m 91.5000 125.2500 L S U u 91.5000 123.7500 m 91.5000 122.2500 L S U u 91.5000 120.7500 m 91.5000 119.5000 L S U u 91.5000 118.0000 m 91.5000 116.5000 L S U u 91.5000 115.0000 m 91.5000 113.7500 L S U u 91.5000 112.2500 m 91.5000 110.7500 L S U u 91.5000 109.2500 m 91.5000 108.0000 L S U u 91.5000 106.5000 m 91.5000 105.0000 L S U u 91.5000 103.5000 m 91.5000 102.2500 L S U u 91.5000 100.7500 m 91.5000 99.2500 L S U u 91.5000 97.7500 m 91.5000 96.5000 L S U u 91.5000 95.0000 m 91.5000 93.5000 L S U u 91.5000 92.0000 m 91.5000 90.7500 L S U u 91.5000 89.2500 m 91.5000 87.7500 L S U u 91.5000 86.2500 m 91.5000 85.0000 L S U u 91.5000 83.5000 m 91.5000 82.0000 L S U u 91.5000 80.5000 m 91.5000 79.2500 L S U u 91.5000 77.7500 m 91.5000 76.2500 L S U u 91.5000 74.7500 m 91.5000 73.5000 L S U u 91.5000 72.0000 m 91.5000 70.5000 L S U u 91.5000 69.0000 m 91.5000 67.7500 L S U u 91.5000 66.2500 m 91.5000 64.7500 L S U u 91.5000 63.2500 m 91.5000 61.7500 L S U u 91.5000 60.5000 m 91.5000 59.0000 L S U u 91.5000 57.5000 m 91.5000 56.0000 L S U u 91.5000 54.7500 m 91.5000 53.2500 L S U u 91.5000 51.7500 m 91.5000 50.2500 L S U u 91.5000 49.0000 m 91.5000 47.5000 L S U u 91.5000 46.0000 m 91.5000 44.5000 L S U u 91.5000 43.2500 m 91.5000 41.7500 L S U u 91.5000 40.2500 m 91.5000 38.7500 L S U u 91.5000 37.5000 m 91.5000 36.0000 L S U u 91.7500 35.0000 m 93.2500 35.0000 L S U u 94.7500 35.0000 m 96.2500 35.0000 L S U u 97.5000 35.0000 m 99.0000 35.0000 L S U u 100.5000 35.0000 m 102.0000 35.0000 L S U u 103.2500 35.0000 m 104.7500 35.0000 L S U u 106.2500 35.0000 m 107.7500 35.0000 L S U u 109.2500 35.0000 m 110.5000 35.0000 L S U u 112.0000 35.0000 m 113.5000 35.0000 L S U u 115.0000 35.0000 m 116.2500 35.0000 L S U u 117.7500 35.0000 m 119.2500 35.0000 L S U u 120.7500 35.0000 m 122.0000 35.0000 L S U u 123.5000 35.0000 m 125.0000 35.0000 L S U u 126.5000 35.0000 m 127.7500 35.0000 L S U u 129.2500 35.0000 m 130.7500 35.0000 L S U u 132.2500 35.0000 m 133.5000 35.0000 L S U u 135.0000 35.0000 m 136.5000 35.0000 L S U u 138.0000 35.0000 m 139.2500 35.0000 L S U u 140.7500 35.0000 m 142.2500 35.0000 L S U u 143.7500 35.0000 m 145.0000 35.0000 L S U u 146.5000 35.0000 m 148.0000 35.0000 L S U u 149.5000 35.0000 m 150.7500 35.0000 L S U u 152.2500 35.0000 m 153.7500 35.0000 L S U u 155.2500 35.0000 m 156.5000 35.0000 L S U u 158.0000 35.0000 m 159.5000 35.0000 L S U u 161.0000 35.0000 m 162.5000 35.0000 L S U u 163.7500 35.0000 m 165.2500 35.0000 L S U u 166.7500 35.0000 m 168.2500 35.0000 L S U u 169.5000 35.0000 m 171.0000 35.0000 L S U u 172.5000 35.0000 m 174.0000 35.0000 L S U u 175.2500 35.0000 m 176.7500 35.0000 L S U u 178.2500 35.0000 m 179.7500 35.0000 L S U u 181.0000 35.0000 m 182.5000 35.0000 L S U u 184.0000 35.0000 m 185.5000 35.0000 L S U u 186.7500 35.0000 m 188.2500 35.0000 L S U u 189.7500 35.0000 m 191.2500 35.0000 L S U u 192.5000 35.0000 m 194.0000 35.0000 L S U u 195.5000 35.0000 m 197.0000 35.0000 L S U u 198.2500 35.0000 m 199.7500 35.0000 L S U u 201.2500 35.0000 m 202.2500 35.0000 L S U u 202.2500 35.0000 m 202.2500 35.2500 L S U u 202.2500 36.7500 m 202.2500 38.2500 L S U u 202.2500 39.7500 m 202.2500 41.2500 L S U u 202.2500 42.5000 m 202.2500 44.0000 L S U u 202.2500 45.5000 m 202.2500 47.0000 L S U u 202.2500 48.2500 m 202.2500 49.7500 L S U u 202.2500 51.2500 m 202.2500 52.7500 L S U u 202.2500 54.0000 m 202.2500 55.5000 L S U u 202.2500 57.0000 m 202.2500 58.5000 L S U u 202.2500 59.7500 m 202.2500 61.2500 L S U u 202.2500 62.7500 m 202.2500 64.2500 L S U u 202.2500 65.5000 m 202.2500 67.0000 L S U u 202.2500 68.5000 m 202.2500 70.0000 L S U u 202.2500 71.2500 m 202.2500 72.7500 L S U u 202.2500 74.2500 m 202.2500 75.7500 L S U u 202.2500 77.0000 m 202.2500 78.5000 L S U u 202.2500 80.0000 m 202.2500 81.5000 L S U u 202.2500 82.7500 m 202.2500 84.2500 L S U u 202.2500 85.7500 m 202.2500 87.2500 L S U u 202.2500 88.5000 m 202.2500 90.0000 L S U u 202.2500 91.5000 m 202.2500 93.0000 L S U u 202.2500 94.2500 m 202.2500 95.7500 L S U u 202.2500 97.2500 m 202.2500 98.7500 L S U u 202.2500 100.0000 m 202.2500 101.2500 L S U u 0.000 0.000 0.000 0.000 k 0.2500 w 1.5000 278.2500 m 70.7500 278.2500 L 70.7500 289.5000 L 1.5000 289.5000 L 1.5000 278.2500 L B U 0 To 1 0 0 1 26 281 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0.000 0.000 0.000 1.000 K 0 j 0.000 0.000 0.000 1.000 k (Expr\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 70.7500 278.2500 m 1.5000 278.2500 L 1.5000 245.2500 L 70.7500 245.2500 L 70.7500 278.2500 L B U 0 To 1 0 0 1 53.25 246.75 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (rep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 112.2500 234.0000 m 181.5000 234.0000 L 181.5000 245.2500 L 112.2500 245.2500 L 112.2500 234.0000 L B U 0 To 1 0 0 1 127.5 236.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (ExprRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 181.5000 234.0000 m 112.2500 234.0000 L 112.2500 200.7500 L 181.5000 200.7500 L 181.5000 234.0000 L B U 0 To 1 0 0 1 139.75 214.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (rep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 112.2500 223.0000 m 181.5000 223.0000 L 181.5000 234.0000 L 112.2500 234.0000 L 112.2500 223.0000 L B U 0 To 1 0 0 1 124 225.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (BinOpRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 181.5000 223.0000 m 112.2500 223.0000 L 112.2500 189.7500 L 181.5000 189.7500 L 181.5000 223.0000 L B U 0 To 1 0 0 1 139.75 203.25 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (rep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 223.0000 167.7500 m 292.2500 167.7500 L 292.2500 178.7500 L 223.0000 178.7500 L 223.0000 167.7500 L B U 0 To 1 0 0 1 238.25 170.25 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (ExprRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 292.2500 167.7500 m 223.0000 167.7500 L 223.0000 134.5000 L 292.2500 134.5000 L 292.2500 167.7500 L B U 0 To 1 0 0 1 250.5 148 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (rep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 223.0000 156.5000 m 292.2500 156.5000 L 292.2500 167.7500 L 223.0000 167.7500 L 223.0000 156.5000 L B U 0 To 1 0 0 1 234.75 159 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (BinOpRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 292.2500 156.5000 m 223.0000 156.5000 L 223.0000 123.5000 L 292.2500 123.5000 L 292.2500 156.5000 L B U 0 To 1 0 0 1 250.5 137 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (rep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 223.0000 145.5000 m 292.2500 145.5000 L 292.2500 156.5000 L 223.0000 156.5000 L 223.0000 145.5000 L B U 0 To 1 0 0 1 241.25 148 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (DivRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 292.2500 145.5000 m 223.0000 145.5000 L 223.0000 112.2500 L 292.2500 112.2500 L 292.2500 145.5000 L B U 0 To 1 0 0 1 226 138 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (first\r) Tx TO 0 To 1 0 0 1 257 114 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (second\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 112.2500 101.2500 m 181.5000 101.2500 L 181.5000 112.2500 L 112.2500 112.2500 L 112.2500 101.2500 L B U 0 To 1 0 0 1 127.5 103.75 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (ExprRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 181.5000 101.2500 m 112.2500 101.2500 L 112.2500 68.0000 L 181.5000 68.0000 L 181.5000 101.2500 L B U 0 To 1 0 0 1 139.75 81.75 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (rep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 112.2500 90.2500 m 181.5000 90.2500 L 181.5000 101.2500 L 112.2500 101.2500 L 112.2500 90.2500 L B U 0 To 1 0 0 1 124 92.75 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (BinOpRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 181.5000 90.2500 m 112.2500 90.2500 L 112.2500 57.0000 L 181.5000 57.0000 L 181.5000 90.2500 L B U 0 To 1 0 0 1 139.75 70.75 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (rep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 112.2500 79.2500 m 181.5000 79.2500 L 181.5000 90.2500 L 112.2500 90.2500 L 112.2500 79.2500 L B U 0 To 1 0 0 1 128.5 81.75 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (MultRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 181.5000 79.2500 m 112.2500 79.2500 L 112.2500 46.0000 L 181.5000 46.0000 L 181.5000 79.2500 L B U 0 To 1 0 0 1 115.25 71.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (first\r) Tx TO 0 To 1 0 0 1 146.25 47.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (second\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 1.5000 167.7500 m 70.7500 167.7500 L 70.7500 178.7500 L 1.5000 178.7500 L 1.5000 167.7500 L B U 0 To 1 0 0 1 16.75 170.25 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (ExprRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 70.7500 167.7500 m 1.5000 167.7500 L 1.5000 134.5000 L 70.7500 134.5000 L 70.7500 167.7500 L B U u 0.000 0.000 0.000 0.000 k 223.0000 35.0000 m 292.2500 35.0000 L 292.2500 46.0000 L 223.0000 46.0000 L 223.0000 35.0000 L B U 0 To 1 0 0 1 238.25 37.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (ExprRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 292.2500 35.0000 m 223.0000 35.0000 L 223.0000 1.7500 L 292.2500 1.7500 L 292.2500 35.0000 L B U u 0.000 0.000 0.000 0.000 k 1.5000 35.0000 m 70.7500 35.0000 L 70.7500 46.0000 L 1.5000 46.0000 L 1.5000 35.0000 L B U 0 To 1 0 0 1 16.75 37.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (ExprRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 70.7500 35.0000 m 1.5000 35.0000 L 1.5000 1.7500 L 70.7500 1.7500 L 70.7500 35.0000 L B U u 0.000 0.000 0.000 0.000 k 333.7500 101.2500 m 403.0000 101.2500 L 403.0000 112.2500 L 333.7500 112.2500 L 333.7500 101.2500 L B U 0 To 1 0 0 1 349 103.75 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (ExprRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 403.0000 101.2500 m 333.7500 101.2500 L 333.7500 68.0000 L 403.0000 68.0000 L 403.0000 101.2500 L B U u 0.000 0.000 0.000 0.000 k 112.2500 212.0000 m 181.5000 212.0000 L 181.5000 223.0000 L 112.2500 223.0000 L 112.2500 212.0000 L B U 0 To 1 0 0 1 129 214.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (SubRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 181.5000 212.0000 m 112.2500 212.0000 L 112.2500 178.7500 L 181.5000 178.7500 L 181.5000 212.0000 L B U 0 To 1 0 0 1 115.25 204.25 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (first\r) Tx TO 0 To 1 0 0 1 146.25 180.25 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (second\r) Tx TO u 0.2500 w 1 j 70.7500 256.2500 m 147.0000 256.2500 L 147.0000 252.7500 L S U u 0.000 0.000 0.000 1.000 k 0.0000 w 0.000 0.000 0.000 0.000 K 149.7500 253.5000 m 147.0000 245.2500 L 144.2500 253.5000 L 149.7500 253.5000 L F U u 0.2500 w 0.000 0.000 0.000 1.000 K 112.2500 200.7500 m 36.2500 200.7500 L 36.2500 186.2500 L S U u 0.000 0.000 0.000 1.000 k 0.0000 w 0.000 0.000 0.000 0.000 K 39.0000 187.0000 m 36.2500 178.7500 L 33.5000 187.0000 L 39.0000 187.0000 L F U u 0.2500 w 0.000 0.000 0.000 1.000 K 181.5000 189.7500 m 257.5000 189.7500 L 257.5000 186.2500 L S U u 0.000 0.000 0.000 1.000 k 0.0000 w 0.000 0.000 0.000 0.000 K 260.2500 187.0000 m 257.5000 178.7500 L 254.7500 187.0000 L 260.2500 187.0000 L F U u 0.2500 w 0.000 0.000 0.000 1.000 K 223.0000 134.5000 m 147.0000 134.5000 L 147.0000 120.0000 L S U u 0.000 0.000 0.000 1.000 k 0.0000 w 0.000 0.000 0.000 0.000 K 149.7500 120.7500 m 147.0000 112.2500 L 144.2500 120.7500 L 149.7500 120.7500 L F U u 0.2500 w 0.000 0.000 0.000 1.000 K 292.2500 123.5000 m 368.2500 123.5000 L 368.2500 120.0000 L S U u 0.000 0.000 0.000 1.000 k 0.0000 w 0.000 0.000 0.000 0.000 K 371.0000 120.7500 m 368.2500 112.2500 L 365.5000 120.7500 L 371.0000 120.7500 L F U u 0.2500 w 0.000 0.000 0.000 1.000 K 112.2500 68.0000 m 36.2500 68.0000 L 36.2500 53.5000 L S U u 0.000 0.000 0.000 1.000 k 0.0000 w 0.000 0.000 0.000 0.000 K 39.0000 54.2500 m 36.2500 46.0000 L 33.5000 54.2500 L 39.0000 54.2500 L F U u 0.2500 w 0.000 0.000 0.000 1.000 K 181.5000 57.0000 m 257.5000 57.0000 L 257.5000 53.5000 L S U u 0.000 0.000 0.000 1.000 k 0.0000 w 0.000 0.000 0.000 0.000 K 260.2500 54.2500 m 257.5000 46.0000 L 254.7500 54.2500 L 260.2500 54.2500 L F U %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI3 /terminate get exec Adobe_typography_AI3 /terminate get exec Adobe_customcolor /terminate get exec Adobe_cshow /terminate get exec Adobe_packedarray /terminate get exec %%EOF %%EndDocument @endspecial -152 1904 a Fv(Figure)25 b(2:)35 b(Expression)24 b(tree)h(created)f(in)i(the)f(innermost)g(lo)r(op)g(of)g(the)h (Gaussian)e(elimination)h(algorithm.)35 b(The)25 b(b)r(o)n(xes)g (represen)n(t)-152 2003 y(classes)i(in)g(the)h Ft(Core)g Fv(library)f(and)g(cascaded)g(b)r(o)n(xes)f(sho)n(w)h(the)h (inheritance)f(hierarc)n(h)n(y)-7 b(.)35 2328 y(consisting)38 b(of)g(simple)h(small)f(ob)5 b(jects.)68 b(These)39 b(struc-)35 2428 y(tures)34 b(incur)h(o)n(v)n(erheads)d(for)i(memory)g(allo)r (cation)f(and)35 2527 y(deallo)r(cation,)19 b(and)g(do)f(not)g (e\013ectiv)n(ely)g(utilize)h(the)g(mem-)35 2627 y(ory)34 b(hierarc)n(hies)f(in)h(curren)n(t-da)n(y)f(mac)n(hines.)58 b(P)n(oin)n(ter)35 2727 y(structures)23 b(su\013er)h(from)g(cac)n (he-line)f(fragmen)n(tation,)h(as)35 2826 y(w)n(ell)j(as)g(p)r(o)r(or)g (spatial)g(lo)r(calit)n(y)-7 b(.)-44 2956 y Fo(\017)37 b Fq(Op)l(er)l(ation)d(overhe)l(ad)p Fv(:)46 b(Lev)n(el)31 b(I)r(I)r(I)h(ev)-5 b(aluation)30 b(requires)35 3055 y(sev)n(eral)c(iterations)i(of)g(the)g(do)n(wn)n(w)n(ard)e(propagation) g(of)35 3155 y(precision)37 b(and)h(up)n(w)n(ard)f(propagation)f(of)h (errors.)66 b(T)-7 b(o)35 3255 y(preserv)n(e)32 b(encapsulation,)i(b)r (oth)f(these)h(steps)f(are)f(p)r(er-)35 3354 y(formed)g(at)g(the)g (gran)n(ularit)n(y)e(of)i(individual)g(op)r(eration)35 3454 y(no)r(des)19 b(in)h(the)f(expression)f(tree)h(\(e.g.,)i(a)e (subtraction)g(op-)35 3554 y(eration\).)34 b(The)20 b(cost)g(of)h (iterations)e(can)h(b)r(e)h(signi\014can)n(tly)35 3653 y(reduced)j(b)n(y)g(exploiting)h(kno)n(wledge)e(of)h(a)g(global)g (struc-)35 3753 y(ture)18 b(suc)n(h)g(as)g(the)h (subtraction-division-m)n(ultiplication)35 3852 y(tree)27 b(in)h(the)g(Gaussian)f(algorithm.)-40 4028 y(One)32 b(source)f(of)h(the)g(high)g(o)n(v)n(erheads)d(at)j(Lev)n(el)g(I)r(I)r (I)g(arise)-152 4128 y(from)42 b(global)g(program)e(structures)i(b)r (eing)h(constructed)f(in)-152 4228 y(an)g(ob)5 b(ject-orien)n(ted)41 b(st)n(yle)h(from)g(smaller)f(comp)r(onen)n(t)i(ob-)-152 4327 y(jects.)64 b(This)36 b(fact)g(has)g(b)r(een)h(recognized)e(b)n(y) h(sev)n(eral)f(other)-152 4427 y(researc)n(hers)20 b(leading)j(to)f (the)i(dev)n(elopmen)n(t)e(of)h(pac)n(k)-5 b(ages)21 b(sup-)-152 4527 y(p)r(orting)58 b(large)f(expressions:)97 b Fu(LN)58 b Fv([13)o(],)66 b Fu(LEDA)57 b Fv([6],)66 b(and)-152 4626 y Fu(Real/Expr)24 b Fv([35)o(].)-152 4842 y Fw(4.2)83 b(Analysis)26 b(and)i(Optimization)g(App)n(roach)-152 4995 y Fv(Our)d(compiler-based)e(approac)n(h)h(reduces)g(abstraction)g (o)n(v)n(er-)-152 5095 y(heads)39 b(using)g(expression-lev)n(el)d (optimizations)j(that)g(break)-152 5195 y(do)n(wn)18 b(the)h(encapsulation)e(in)n(tro)r(duced)h(b)n(y)h(the)f(ob)5 b(ject-orien)n(ted)-152 5294 y(st)n(yle.)37 b(The)27 b(approac)n(h)f(comprises)g(three)i(steps:)2125 2328 y(1.)37 b(Iden)n(ti\014cation)26 b(of)h(expression)e(structures)h(used) h(b)n(y)f(the)2227 2428 y(program.)2125 2557 y(2.)37 b(Propagation)c(of)i(precision)g(requiremen)n(ts)f(of)i(a)f(v)-5 b(alue)2227 2657 y(to)27 b(expressions)f(that)i(pro)r(duce)f(and)h (consume)f(it.)2125 2786 y(3.)37 b(Customization)43 b(of)h(expression)f (structure)g(based)h(on)2227 2886 y(comp)r(onen)n(t)27 b(op)r(erations)g(and)g(its)h(leaf)f(argumen)n(ts.)2152 3045 y(The)44 b(unifying)f(analysis)g(for)g(the)g(\014rst)h(t)n(w)n(o)e (steps)i(is)f(a)2040 3145 y(con)n(text-sensitiv)n(e)17 b(global)g(in)n(terpro)r(cedural)g(\015o)n(w)h(analysis)f([27)o(,)2040 3245 y(11)o(])i(whic)n(h)f(propagates)f(the)i(t)n(yp)r(e)f(information) g(ab)r(out)h(a)f(v)-5 b(alue)2040 3344 y(to)39 b(all)f(the)h(places)f (that)h(pro)r(duce)g(or)e(consume)i(the)g(v)-5 b(alue.)2040 3444 y(In)30 b(this)f(analysis,)g Fq(typ)l(e)h Fv(more)e(generally)g (refers)h(to)g(b)r(oth)h(im-)2040 3544 y(plemen)n(tation)g(t)n(yp)r(e)h (\(e.g.,)g Fu(int)p Fv(,)f Fu(long)p Fv(,)g(or)g Fu(double)p Fv(\))e(as)i(w)n(ell)2040 3643 y(as)44 b(the)h(precision)f(requiremen)n (ts)f(of)i(the)g(v)-5 b(alue)45 b([14)o(].)88 b(T)-7 b(o)2040 3743 y(prev)n(en)n(t)32 b(information)g(loss,)h(the)g (analysis)e(creates)g(con)n(texts)2040 3842 y(\(represen)n(ting)e (program)g(en)n(vironmen)n(ts\))h(for)g(di\013ering)g(uses)2040 3942 y(of)37 b(classes)f(\(for)h(example,)i(p)r(olymorphic)e(con)n (tainers\),)h(and)2040 4042 y(metho)r(ds)28 b(\(for)g(example,)g (di\013ering)f(t)n(yp)r(es)h(for)g(a)f(giv)n(en)g(argu-)2040 4141 y(men)n(t)20 b(at)g(giv)n(en)g(call)f(sites\).)35 b(Since)20 b(expression)e(trees)i(are)f(built)2040 4241 y(up)g(from)g(individual)g(expression)f(tree)g(no)r(des,)j(the)e(same)g (anal-)2040 4341 y(ysis)i(also)g(detects)h(expression)e(\\sk)n (eletons")g(ev)n(en)h(when)h(these)2040 4440 y(are)27 b(built)h(across)e(pro)r(cedure)h(b)r(oundaries.)37 b(Similar)27 b(to)h(anal-)2040 4540 y(yses)i(in)h(ob)5 b(ject-orien)n(ted)29 b(languages)g(that)i(resolv)n(e)e(concrete)2040 4640 y(t)n(yp)r(es)e(of)f(metho)r(d)i(in)n(v)n(o)r(cation)d(targets)h([27)o (,)h(9)o(],)g(our)f(analysis)2040 4739 y(helps)41 b(iden)n(tify)h(the)f (expression)e(structures)h(that)i(are)e(cre-)2040 4839 y(ated)c(at)g(run)f(time)i(\(and)f(precision)f(constrain)n(ts)f(on)i(v) -5 b(alues)2040 4938 y(consumed)30 b(and)g(pro)r(duced)g(b)n(y)f (them\).)46 b(Iden)n(tifying)30 b(the)g(ex-)2040 5038 y(pression)f(structure)g(p)r(ermits)g(its)h(optimization)g(using)f (three)2040 5138 y(broad)e(categories)g(of)h(sp)r(ecialization|co)r (de,)g(data,)g(and)g(op-)2040 5237 y(erational:)p eop %%Page: 7 7 7 6 bop -152 -69 a Fp(CODE)21 b(SPECIALIZA)-8 b(TION.)62 b Fv(Information)18 b(ab)r(out)g(the)-152 31 y(expression)g(sk)n (eleton)g(\(its)i(structure,)g(the)g(t)n(yp)r(es)f(of)g(input)h(and) -152 131 y(output)25 b(v)-5 b(alues,)24 b(and)g(asso)r(ciated)e (precision\))h(enables)h(sev)n(eral)-152 230 y(static)38 b(and)f(dynamic)g(optimizations)g(that)h(reduce)e(ob)5 b(ject-)-152 330 y(orien)n(tation)42 b(o)n(v)n(erheads)e(The)i(most)h (signi\014can)n(t)f(b)r(ene\014t)h(is)-152 429 y(the)31 b(elimination)g([27)o(,)f(9])g(or)g(optimization)g([16)o(])h(of)f (dynamic)-152 529 y(metho)r(d)38 b(dispatc)n(hes,)h(whic)n(h)e(in)h (turns)f(enable)g(other)f(opti-)-152 629 y(mizations)22 b(suc)n(h)g(as)g(inlining)h(and)f(cloning)g([28)o(])g(that)h(increase) -152 728 y(the)g(e\013ectiv)n(eness)f(of)h(traditional)f(sequen)n(tial) f(optimizations.)-152 890 y Fp(D)m(A)-8 b(T)g(A)33 b(SPECIALIZA)-8 b(TION.)80 b Fv(Kno)n(wledge)26 b(of)h(the)g(ex-)-152 990 y(pression)h(structure)h(also)f(enables)h(memory-e\016cien)n(t)f (la)n(y)n(out)-152 1089 y(emplo)n(ying)18 b(optimizations)g(suc)n(h)g (as)f(ob)5 b(ject)18 b(inlining)h([11)o(])g(and,)-152 1189 y(in)37 b(general,)g(grouping)d(of)i(link)n(ed)g(data)g (structures.)61 b(These)-152 1289 y(transformations)41 b(\015atten)h(the)h(p)r(oin)n(ter-based)e(data)h(struc-)-152 1388 y(tures)21 b(resulting)g(in)h(b)r(etter)f(cac)n(he-line)g (utilization,)h(impro)n(v)n(ed)-152 1488 y(spatial)e(lo)r(calit)n(y)f (b)r(eha)n(vior,)h(and)f(more)g(e\013ectiv)n(e)h(prefetc)n(hing.)-152 1588 y(These)29 b(b)r(ene\014ts)g(are)f(particularly)f(imp)r(ortan)n(t) h(giv)n(en)g(the)h(in-)-152 1687 y(creasing)34 b(latency)h(\(in)h(pro)r (cessor)d(cycles\))i(of)g(accessing)f(o\013-)-152 1787 y(c)n(hip)d(memory)-7 b(.)45 b(Additionally)-7 b(,)31 b(the)g(cost)f(of)h(dynamic)f(mem-)-152 1887 y(ory)36 b(managemen)n(t)g(can)h(b)r(e)g(signi\014can)n(tly)f(reduced)h(b)n(y)f (cus-)-152 1986 y(tomizing)41 b(memory)f(allo)r(cators)e(for)i (expression)g(structures)-152 2086 y(instead)28 b(of)f(relying)g(on)g (a)g(generic)g(memory)g(allo)r(cator)f([15)o(].)-152 2248 y Fp(OPERA)-8 b(TION)37 b(SPECIALIZA)-8 b(TION.)90 b Fv(The)32 b(expres-)-152 2347 y(sion)37 b(\\sk)n(eleton")d(also)i (pro)n(vides)f(a)i(natural)f(gran)n(ularit)n(y)e(at)-152 2447 y(whic)n(h)44 b(to)f(p)r(erform)g(domain-sp)r(eci\014c)g (optimizations.)84 b(As)-152 2547 y(discussed)42 b(earlier,)j(Lev)n(el) d(I)r(I)r(I)h(precision)f(and)g(error)f(prop-)-152 2646 y(agation)g(ma)n(y)h(b)r(e)g(more)g(e\013ectiv)n(e)g(if)g(p)r(erformed) g(with)h(re-)-152 2746 y(sp)r(ect)g(to)e(the)i(global)e(expression)f (structure.)80 b(Additional)-152 2845 y(optimizations)28 b(include)g(partial-ev)-5 b(aluation)26 b(of)i(\014xed)f(inputs)-152 2945 y(\(e.g.,)j(lo)r(op-in)n(v)-5 b(arian)n(t)28 b(v)-5 b(alues\),)30 b(replacing)e(a)h(n)n(um)n(b)r(er)g(repre-)-152 3045 y(sen)n(tation)f(with)h(a)f(more)g(e\016cien)n(t)g(one)g(\(e.g.,)h (automatically)-152 3144 y(demoting)38 b(Lev)n(el)g(I)r(I)g(n)n(um)n(b) r(ers)g(to)g(Lev)n(el)f(I)h(n)n(um)n(b)r(ers)g(when)-152 3244 y(the)e(analysis)e(detects)i(no)f(loss)g(in)h(precision\),)h(and)e (in)h(gen-)-152 3344 y(eral,)g(customizing)e(the)h(implemen)n(tation)g (for)g(the)g(concrete)-152 3443 y(expression)26 b(structure.)-40 3543 y(Figure)19 b(3)h(demonstrates)e(the)i(cum)n(ulativ)n(e)f (e\013ects)h(of)g(these)-152 3642 y(di\013eren)n(t)33 b(sp)r(ecializations)f(for)h(the)g(expression)f(tree)g(in)h(Fig-)-152 3742 y(ure)26 b(2.)36 b(The)27 b(analysis)e(yields)h(the)h(concrete)f (t)n(yp)r(es)g(of)g(ob)5 b(jects)-152 3842 y(making)37 b(up)g(the)g(expression)f(tree:)55 b Fu(SubRep)p Fv(,)37 b Fu(DivRep)p Fv(,)g(and)-152 3941 y Fu(MultRep)p Fv(.)42 b(This)30 b(information)g(enables)g(co)r(de)g(sp)r(ecialization)-152 4041 y(where)38 b(function)h(in)n(v)n(o)r(cations)e(b)r(et)n(w)n(een)h (these)h(ob)5 b(jects)38 b(are)-152 4141 y(statically)24 b(resolv)n(ed)f(and)h(optionally)g(inlined.)36 b(Data)25 b(sp)r(ecial-)-152 4240 y(ization)32 b(inline-allo)r(cates)f(the)i (storage)d(for)i(the)g Fu(DivRep)e Fv(and)-152 4340 y Fu(MultRep)k Fv(ob)5 b(jects)37 b(in)g(the)g Fu(SubRep)d Fv(ob)5 b(ject,)39 b(reducing)d(b)r(oth)-152 4439 y(ob)5 b(ject)29 b(allo)r(cation)e(and)i(metho)r(d)g(in)n(v)n(o)r(cation)e (costs.)39 b(Op)r(era-)-152 4539 y(tion)19 b(sp)r(ecialization)e (constructs)h(a)g(comp)r(osite)g Fu(sub-div-mult)-152 4639 y Fv(op)r(erator)33 b(with)i(an)f(arit)n(y)f(of)h(four)g(and)g (customizes)g(ev)-5 b(alua-)-152 4738 y(tion)20 b(functions)g(to)f(tak) n(e)g(adv)-5 b(an)n(tage)18 b(of)i(the)g(global)e(expression)-152 4838 y(structure.)-40 4938 y(W)-7 b(e)40 b(are)e(curren)n(tly)g(incorp) r(orating)f(the)i(tec)n(hniques)g(de-)-152 5037 y(scrib)r(ed)f(here)g (in)n(to)g(a)f Fu(C++)p Fv(-to-)p Fu(C)f Fv(compiler)h(built)i(on)f (top)g(of)-152 5137 y(the)26 b(SUIF/OSUIF)g(National)f(Compiler)g (Infrastructure)f([1].)-152 5236 y(The)19 b(c)n(hoice)e(of)i Fu(C)f Fv(as)f(the)i(output)g(language)e(pro)n(vides)g(p)r(ortable)-152 5336 y(optimization)46 b(of)h(application)e(pac)n(k)-5 b(ages)45 b(built)i(using)f(the)2040 -69 y Ft(Core)32 b Fv(library)-7 b(.)47 b(End)31 b(users)g(can)g(then)h(compile)f(the)h (library)2040 31 y(using)27 b(platform-sp)r(eci\014c)g(nativ)n(e)g(C)h (compilers.)2040 256 y Fw(5)82 b(PILOT)28 b(STUDIES)2040 438 y Fv(W)-7 b(e)32 b(conducted)h(some)e(basic)g(exp)r(erimen)n(ts)h (using)g(Gaussian)2040 537 y(elimination)f(and)g(2D)g(Delauney)g (triangulation)f(algorithms)2040 637 y(to)23 b(\014rst)h(quan)n(tify)f (the)h(curren)n(t)e(p)r(erformance)h(of)g Ft(Core)h Fv(EGC)2040 736 y(tec)n(hniques)29 b(at)h(di\013eren)n(t)g(accuracy)d(lev)n(els,)j (and)f(then)h(v)n(erify)2040 836 y(the)42 b(p)r(erformance)e(adv)-5 b(an)n(tages)39 b(of)j(the)f(compilation)g(tec)n(h-)2040 936 y(niques)29 b(describ)r(ed)g(in)g(Section)g(4.)40 b(F)-7 b(or)28 b(the)i(latter,)f(since)f(our)2040 1035 y(compiler)37 b(is)g(still)h(under)g(dev)n(elopmen)n(t,)h(w)n(e)f(man)n (ually)e(ap-)2040 1135 y(plied)21 b(the)f(analyses)f(and)h (transformations)e(describ)r(ed)j(in)f(Sec-)2040 1235 y(tion)j(4)f(to)h(Lev)n(el)f(I)r(I)r(I)i(tec)n(hniques.)35 b(Sp)r(eci\014cally)-7 b(,)24 b(w)n(e)e(iden)n(ti\014ed)2040 1334 y(a)29 b(handful)g(of)g(expression)e(tree)i(\\sk)n(eletons")e(and) h(optimized)2040 1434 y(their)33 b(implemen)n(tation)f(b)n(y)g(\(1\))h (replacing)e(virtual)h(function)2040 1533 y(calls)19 b(to)g(in)n(termediate)g(no)r(des)h(with)g(statically)e(b)r(ound)i (inlined)2040 1633 y(function)26 b(calls,)f(and)g(b)n(y)f(\(2\))i(pro)n (viding)d(custom)i(memory)f(al-)2040 1733 y(lo)r(cators)d(\(customized) h(to)h(the)f(size)g(of)h(the)f(sp)r(ecialized)g(struc-)2040 1832 y(tures\).)44 b(Our)30 b(protot)n(yp)r(e)f(implemen)n(tation)h(of) g(the)g Ft(Core)h Fv(li-)2040 1932 y(brary)22 b(is)h(la)n(y)n(ered)f (on)h(top)g(of)h(the)f Fu(Real/Expr)d Fv(pac)n(k)-5 b(age)22 b(whic)n(h)2040 2032 y(in)h(turn)g(relies)g(on)f(a)h(big-in)n(teger)e (pac)n(k)-5 b(age)22 b(supplied)h(b)n(y)g(GNU)2040 2131 y(libg++.)61 b(The)36 b(implemen)n(tation)g(of)f(the)i(GNU)f(big-in)n (teger)2040 2231 y(pac)n(k)-5 b(age)33 b(w)n(as)g(not)h(optimized.)58 b(All)34 b(exp)r(erimen)n(ts)g(rep)r(orted)2040 2330 y(in)28 b(this)g(section)f(w)n(ere)g(conducted)g(on)h(a)f(SUN)h (UltraSparc.)2040 2492 y Fp(GA)m(USSIAN)42 b(ELIMINA)-8 b(TION.)93 b Fv(Computing)35 b(deter-)2040 2592 y(minan)n(ts)27 b(or)f(the)i(sign)f(of)g(determinan)n(ts)g(is)g(p)r(erhaps)f(the)i (sin-)2040 2692 y(gle)20 b(most)g(imp)r(ortan)n(t)h(primitiv)n(e)f(in)h (geometric)e(computation.)2040 2791 y(W)-7 b(e)25 b(use)f(the)h (algorithm)e(describ)r(ed)i(in)f(Section)h(2,)g(mo)r(difying)2040 2891 y(the)h(4)13 b Fo(\002)h Fv(4)25 b(matrix)g Fn(B)30 b Fv(so)24 b(that)i(its)g(en)n(tries)e(ha)n(v)n(e)h(t)n(yp)r(e)g Fu(double)2040 2990 y Fv(instead)36 b(of)g Fu(long)p Fv(.)62 b(T)-7 b(able)36 b(1)g(rep)r(orts)f(the)h(execution)g(times) 2040 3090 y(for)d(1000)f(determinan)n(t)h(ev)-5 b(aluations)32 b(of)i(matrix)f Fn(B)k Fv(at)d(v)-5 b(ari-)2040 3190 y(ous)32 b(lev)n(els)g(of)g(accuracy)-7 b(.)50 b(The)32 b(column)h(lab)r(eled)f Fp(Lev)m(el)38 b(I)s(I)s(I)2040 3289 y(\(opt\))22 b Fv(corresp)r(onds)e(to)h(the)h(optimization)g(of)f (the)h(expression)2040 3389 y Fu(A\(j,k\))41 b(-=)i (A\(j,i\)*A\(i,k\)/A\()o(i,i)o(\))p Fv(.)2152 3489 y(The)34 b(results)f(in)i(T)-7 b(able)33 b(1)h(sho)n(w)f(clearly)f(that)j(there) e(is)h(a)2040 3588 y(p)r(erformance)e(p)r(enalt)n(y)h(asso)r(ciated)f (with)h(using)g(higher)f(lev-)2040 3688 y(els)d(of)h(accuracy)-7 b(,)28 b(and)h(in)h(particular)e(Lev)n(el)h(I)r(I)r(I)h(EGC)f(whic)n(h) 2040 3787 y(runs)22 b(up)g(to)g(150)f(times)h(slo)n(w)n(er)e(than)j (Lev)n(el)e(I.)h(Of)g(course,)g(this)2040 3887 y(p)r(enalt)n(y)37 b(m)n(ust)g(b)r(e)h(balanced)e(against)g(the)h(fact)h(that)f(EGC)2040 3987 y(is)i(robust,)j(and)d(eliminates)g(all)g(qualitativ)n(e)g(errors) e(in)i(the)2040 4086 y(computation.)e(What)27 b(is)g(v)n(ery)g (encouraging)e(is)i(that)g(despite)2040 4186 y(applying)i(the)h (transformations)e(describ)r(ed)h(in)h(Section)g(4)f(at)2040 4286 y(only)j(a)h(few)g(places,)g(p)r(erformance)e(of)i(Lev)n(el)f(I)r (I)r(I)h(ev)-5 b(aluation)2040 4385 y(impro)n(v)n(es)25 b(b)n(y)h(as)g(m)n(uc)n(h)g(as)g(a)g(factor)g(of)h(t)n(w)n(o)e(\(for)i (higher)e(pre-)2040 4485 y(cision\).)57 b(Since)34 b(the)h(rest)f(of)g (the)h Ft(Core)g Fv(library)e(as)g(w)n(ell)h(as)2040 4584 y(the)j(GNU)g(big-in)n(teger)d(pac)n(k)-5 b(age)35 b(lend)h(themselv)n(es)g(to)g(sim-)2040 4684 y(ilar)43 b(optimizations,)48 b(signi\014can)n(t)43 b(additional)h(p)r (erformance)2040 4784 y(impro)n(v)n(emen)n(ts)26 b(are)h(lik)n(ely)-7 b(.)2040 4946 y Fp(2D)36 b(DELA)m(UNEY)i(TRIANGULA)-8 b(TION.)88 b Fv(W)-7 b(e)31 b(con-)2040 5045 y(ducted)19 b(some)f(basic)g(exp)r(erimen)n(ts)g(b)n(y)g(\\pream)n(bling")e(an)i Fn(O)r Fv(\()p Fn(n)4020 5015 y Fs(4)4058 5045 y Fv(\))2040 5145 y(co)r(de)34 b(from)f(Jo)r(e)h(O'Rourk)n(e's)e(b)r(o)r(ok.)55 b(While)35 b(more)e(e\016cien)n(t)2040 5245 y(algorithms)f(exist,)i (our)e(in)n(terest)g(here)h(is)f(in)h(understanding)2040 5344 y(the)h(relativ)n(e)f(e\016ciency)g(of)h(di\013eren)n(t)f (accuracy)f(lev)n(els.)54 b(T)-7 b(a-)p eop %%Page: 8 8 8 7 bop -10 1558 a @beginspecial 0 @llx 0 @lly 506.250000 @urx 212 @ury 4680 @rwi @setspecial %%BeginDocument: figs/gaussian-optimizations.eps %!PS-Adobe-3.0 EPSF-3.0 %%Creator: ImageMark Software Labs %%For: () () %%Title: D:\Home\Research\Proposals\Chee-NSF\gaussian-optimizations.eps %%CreationDate: () () %%BoundingBox: 0.0000 0.0000 506.2500 212.0000 %%DocumentProcessColors: Black %%ColorUsage:Black&White %%DocumentFonts: Helvetica %%+Helvetica-Bold %%+Helvetica-Oblique %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 %%+ procset Adobe_cmykcolor 1.1 0 %%+ procset Adobe_cshow 1.1 0 %%+ procset Adobe_customcolor 1.0 0 %%+ procset Adobe_typography_AI3 1.0 0 %%+ procset Adobe_Illustrator_AI3 1.0 0 %AI3_ColorUsage: Black&White %AI3_TemplateBox: 0.0000 0.0000 506.2500 212.0000 %AI3_TileBox: 0.0000 0.0000 506.2500 212.0000 %AI3_DocumentPreview: None %%Template: %%PageOrigin:0.0000 0.0000 %%EndComments %%BeginProlog %%BeginResource: procset Adobe_packedarray 2.0 0 %%Title: (Packed Array Operators) %%Version: 2.0 %%CreationDate: (8/2/90) () %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) userdict /Adobe_packedarray 5 dict dup begin put /initialize { /packedarray where { pop } { Adobe_packedarray begin Adobe_packedarray { dup xcheck { bind } if userdict 3 1 roll put } forall end } ifelse } def /terminate { } def /packedarray { array astore readonly } def /setpacking { pop } def /currentpacking { false } def currentdict readonly pop end %%EndResource Adobe_packedarray /initialize get exec %%Title: (CMYK Color Operators) %%Version: 1.1 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cmykcolor 4 dict dup begin put /initialize { /setcmykcolor where { pop } { userdict /Adobe_cmykcolor_vars 2 dict dup begin put /_setrgbcolor /setrgbcolor load def /_currentrgbcolor /currentrgbcolor load def Adobe_cmykcolor begin Adobe_cmykcolor { dup xcheck { bind } if pop pop } forall end end Adobe_cmykcolor begin } ifelse } def /terminate { currentdict Adobe_cmykcolor eq { end } if } def /setcmykcolor { 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat Adobe_cmykcolor_vars /_setrgbcolor get exec pop } def /currentcmykcolor { Adobe_cmykcolor_vars /_currentrgbcolor get exec 3 { 1 sub neg 3 1 roll } repeat 0 } def currentdict readonly pop end setpacking %%EndResource %%BeginResource: procset Adobe_cshow 1.1 0 %%Title: (cshow Operator) %%Version: 1.1 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cshow 3 dict dup begin put /initialize { /cshow where { pop } { userdict /Adobe_cshow_vars 1 dict dup begin put /_cshow {} def Adobe_cshow begin Adobe_cshow { dup xcheck { bind } if userdict 3 1 roll put } forall end end } ifelse } def /terminate { } def /cshow { exch Adobe_cshow_vars exch /_cshow exch put { 0 0 Adobe_cshow_vars /_cshow get exec } forall } def currentdict readonly pop end setpacking %%EndResource %%BeginResource: procset Adobe_customcolor 1.0 0 %%Title: (Custom Color Operators) %%Version: 1.0 %%CreationDate: (5/9/88) () %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_customcolor 5 dict dup begin put /initialize { /setcustomcolor where { pop } { Adobe_customcolor begin Adobe_customcolor { dup xcheck { bind } if pop pop } forall end Adobe_customcolor begin } ifelse } def /terminate { currentdict Adobe_customcolor eq { end } if } def /findcmykcustomcolor { 5 packedarray } def /setcustomcolor { exch aload pop pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } def /setoverprint { pop } def currentdict readonly pop end setpacking %%EndResource %%BeginResource: procset Adobe_typography_AI3 1.0 0 %%Title: (Typography Operators)%%Version: 1.0 %%CreationDate:(5/31/90) () %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_typography_AI3 46 dict dup begin put /initialize { /TZ where { pop } { Adobe_typography_AI3 begin Adobe_typography_AI3 { dup xcheck { bind } if pop pop } forall end Adobe_typography_AI3 begin } ifelse } def /terminate { currentdict Adobe_typography_AI3 eq { end } if } def /modifyEncoding { /_tempEncode exch ddef /_pntr 0 ddef { counttomark -1 roll dup type dup /marktype eq { pop pop exit } { /nametype eq { _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll put } { /_pntr exch ddef } ifelse } ifelse } loop _tempEncode } def /TE { StandardEncoding 256 array copy modifyEncoding /_nativeEncoding exch def } def /TZ { /_useNativeEncoding exch def pop pop findfont dup length 2 add dict begin mark exch { 1 index /FID ne { def } if cleartomark mark } forall pop /FontName exch def counttomark 0 eq { Encoding StandardEncoding eq 1 _useNativeEncoding eq and { /Encoding _nativeEncoding def } if cleartomark } { /Encoding load 256 array copy modifyEncoding /Encoding exch def } ifelse FontName currentdict end definefont pop } def /tr { _ax _ay 3 2 roll } def /trj { _cx _cy _sp _ax _ay 6 5 roll } def /a0 { /Tx { dup currentpoint 3 2 roll tr _psf newpath moveto tr _ctm _pss } ddef /Tj { dup currentpoint 3 2 roll trj _pjsf newpath moveto trj _ctm _pjss } ddef } def /a1 { W B } def /e0 { /Tx { tr _psf } ddef /Tj { trj _pjsf } ddef } def /e1 { W F } def /i0 { /Tx { tr sp } ddef /Tj { trj jsp } ddef } def /o0 { /Tx { tr sw rmoveto } ddef /Tj { trj swj rmoveto } ddef } def /r0 { /Tx { tr _ctm _pss } ddef /Tj { trj _ctm _pjss } ddef } def /r1 { W S } def /To { pop _ctm currentmatrix pop } def /TO { Te _ctm setmatrix newpath } def /Tp { pop _tm astore pop _ctm setmatrix 2 dict begin /W {} def /h {} def } def /TP { end iTm 0 0 moveto } def /Tr { Te currentpoint newpath moveto dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse dup /_render exch ddef _renderStart exch get load exec } def /iTm { _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale } def /Te { _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse /_render -1 ddef } def /Tf { dup 1000 div /_fScl exch ddef exch findfont exch scalefont setfont } def /Tl { pop 0 exch _leading astore pop } def /Tt { pop } def /TW { 3 npop } def /Tw { /_cx exch ddef } def /Tc { /_ax exch ddef } def /Ts { /_rise exch ddef currentpoint iTm moveto } def /Ti { 3 npop } def /Tz { 100 div /_hs exch ddef iTm } def /Tq { pop } def /TX {pop} def /Tk { exch pop _fScl mul neg 0 rmoveto } def /T- { _hyphen Tx } def /TS { 0 eq {Tx} {Tj} ifelse } def currentdict readonly pop end setpacking %%EndResource %%BeginResource: procset Adobe_Illustrator_AI3 1.0 0 %%Title: (Adobe Illustrator (R) Version 3.0 Full Prolog) %%Version: 1.0 %%CreationDate: (7/22/89) () %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI3 71 dict dup begin put /initialize { userdict /Adobe_Illustrator_AI3_vars 55 dict dup begin put /_lp /none def /_pf {} def /_ps {} def /_psf {} def /_pss {} def /_pjsf {} def /_pjss {} def /_pola 0 def /_doClip 0 def /cf currentflat def /_tm matrix def /_renderStart [/e0 /r0 /a0 /o0 /i0 /i0 /i0 /i0] def /_renderEnd [null null null null /e1 /r1 /a1 /clip] def /_render -1 def /_rise 0 def /_ax 0 def /_ay 0 def /_cx 0 def /_cy 0 def /_leading [0 0] def /_ctm matrix def /_mtx matrix def /_sp 16#020 def /_hyphen (-) def /_fScl 0 def /_cnt 0 def /_hs 1 def /_nativeEncoding 0 def /_useNativeEncoding 0 def /_tempEncode 0 def /_pntr 0 def /Tx {} def /Tj {} def /CRender {} def /_AI3_savepage {} def /_gf null def /_cf 4 array def /_if null def /_of false def /_fc {} def /_gs null def /_cs 4 array def /_is null def /_os false def /_sc {} def /_pd 1 dict def /_ed 15 dict def /_pm matrix def /_fm null def /_fd null def /_fdd null def /_sm null def /_sd null def /_sdd null def /_i null def Adobe_Illustrator_AI3 begin Adobe_Illustrator_AI3 dup /nc get begin { dup xcheck { bind } if pop pop } forall end end end Adobe_Illustrator_AI3 begin Adobe_Illustrator_AI3_vars begin newpath } def /terminate { end end } def /_ null def /ddef { Adobe_Illustrator_AI3_vars 3 1 roll put } def /xput { dup load dup length exch maxlength eq { dup dup load dup length 2 mul dict copy def } if load begin def end } def /npop { { pop } repeat } def /sw { dup length exch stringwidth exch 5 -1 roll 3 index 1 sub mul add 4 1 roll 3 1 roll 1 sub mul add } def /swj { dup 4 1 roll dup length exch stringwidth exch 5 -1 roll 3 index 1 sub mul add 4 1 roll 3 1 roll 1 sub mul add 6 2 roll /_cnt 0 ddef {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop } def /ss { 4 1 roll { 2 npop (0) exch 2 copy 0 exch put pop gsave false charpath currentpoint 4 index setmatrix stroke grestore moveto 2 copy rmoveto } exch cshow 3 npop } def /jss { 4 1 roll { 2 npop (0) exch 2 copy 0 exch put gsave _sp eq { exch 6 index 6 index 6 index 5 -1 roll widthshow currentpoint } { false charpath currentpoint 4 index setmatrix stroke }ifelse grestore moveto 2 copy rmoveto } exch cshow 6 npop } def /sp { { 2 npop (0) exch 2 copy 0 exch put pop false charpath 2 copy rmoveto } exch cshow 2 npop } def /jsp { { 2 npop (0) exch 2 copy 0 exch put _sp eq { exch 5 index 5 index 5 index 5 -1 roll widthshow } { false charpath }ifelse 2 copy rmoveto } exch cshow 5 npop } def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } def /setstrokeadjust where {pop true setstrokeadjust /c { curveto } def /C /c load def /v { currentpoint 6 2 roll curveto } def /V /v load def /y { 2 copy curveto } def /Y /y load def /l { lineto } def /L /l load def /m { moveto } def } { /c { pl curveto } def /C /c load def /v { currentpoint 6 2 roll pl curveto } def /V /v load def /y { pl 2 copy curveto } def /Y /y load def /l { pl lineto } def /L /l load def /m { pl moveto } def } ifelse /d { setdash } def /cf {} def /i { dup 0 eq { pop cf } if setflat } def /j { setlinejoin } def /J { setlinecap } def /M { setmiterlimit } def /w { setlinewidth } def /H {} def /h { closepath } def /N { _pola 0 eq { _doClip 1 eq {clip /_doClip 0 ddef} if newpath } { /CRender {N} ddef }ifelse } def /n {N} def /F { _pola 0 eq { _doClip 1 eq { gsave _pf grestore clip newpath /_lp /none ddef _fc /_doClip 0 ddef } { _pf }ifelse } { /CRender {F} ddef }ifelse } def /f { closepath F } def /S { _pola 0 eq { _doClip 1 eq { gsave _ps grestore clip newpath /_lp /none ddef _sc /_doClip 0 ddef } { _ps }ifelse } { /CRender {S} ddef }ifelse } def /s { closepath S } def /B { _pola 0 eq { _doClip 1 eq gsave F grestore { gsave S grestore clip newpath /_lp /none ddef _sc /_doClip 0 ddef } { S }ifelse } { /CRender {B} ddef }ifelse } def /b { closepath B } def /W { /_doClip 1 ddef } def /* { count 0 ne { dup type (stringtype) eq {pop} if } if _pola 0 eq {newpath} if } def /u {} def /U {} def /q {_pola 0 eq {gsave} if } def /Q { _pola 0 eq {grestore} if } def /*u { _pola 1 add /_pola exch ddef } def /*U { _pola 1 sub /_pola exch ddef _pola 0 eq {CRender} if } def /D {pop} def /*w {} def /*W {} def /` { /_i save ddef 6 1 roll 4 npop concat userdict begin /showpage {} def false setoverprint pop } def /~ { end _i restore } def /@ {} def /& {} def /O { 0 ne /_of exch ddef /_lp /none ddef } def /R { 0 ne /_os exch ddef /_lp /none ddef } def /g { /_gf exch ddef /_fc { _lp /fill ne { _of setoverprint _gf setgray /_lp /fill ddef } if } ddef /_pf { _fc fill } ddef /_psf { _fc ashow } ddef /_pjsf { _fc awidthshow } ddef /_lp /none ddef } def /G { /_gs exch ddef /_sc { _lp /stroke ne { _os setoverprint _gs setgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /k { _cf astore pop /_fc { _lp /fill ne { _of setoverprint _cf aload pop setcmykcolor /_lp /fill ddef } if } ddef /_pf { _fc fill } ddef /_psf { _fc ashow } ddef /_pjsf { _fc awidthshow } ddef /_lp /none ddef } def /K { _cs astore pop /_sc { _lp /stroke ne { _os setoverprint _cs aload pop setcmykcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /x { /_gf exch ddef findcmykcustomcolor /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc fill } ddef /_psf { _fc ashow } ddef /_pjsf { _fc awidthshow } ddef /_lp /none ddef } def /X { /_gs exch ddef findcmykcustomcolor /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /dp { dup null eq { pop _dp 0 ne { 0 1 _dp 1 sub _dl mod { _da exch get 3 get } for _dp 1 sub _dl mod 1 add packedarray _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll definepattern pop } if } { _dp 0 ne _dp _dl mod 0 eq and { null dp } if 7 packedarray _da exch _dp _dl mod exch put _dp _dl mod _da 0 get 4 get 2 packedarray /_dp _dp 1 add def } ifelse } def /E { _ed begin dup 0 get type /arraytype ne { 0 { dup 1 add index type /arraytype eq { 1 add } { exit } ifelse } loop array astore } if /_dd exch def /_ury exch def /_urx exch def /_lly exch def /_llx exch def /_n exch def /_y 0 def /_dl 4 def /_dp 0 def /_da _dl array def 0 1 _dd length 1 sub { /_d exch _dd exch get def 0 2 _d length 2 sub { /_x exch def /_c _d _x get _ ne def /_r _d _x 1 add get cvlit def _r _ ne { _urx _llx sub _ury _lly sub [1 0 0 1 0 0] [ /save cvx _llx neg _lly neg /translate cvx _c { nc /begin cvx } if _r dup type /stringtype eq { cvx } { {exec} /forall cvx } ifelse _c { /end cvx } if /restore cvx ] cvx /_fn 12 _n length add string def _y _fn cvs pop /_y _y 1 add def _fn 12 _n putinterval _fn _c false dp _d exch _x 1 add exch put } if } for } for null dp _n _dd /_pd end xput } def /fc { _fm dup concatmatrix pop } def /p { /_fm exch ddef 9 -2 roll _pm translate fc 7 -2 roll _pm scale fc 5 -1 roll _pm rotate fc 4 -2 roll exch 0 ne { dup _pm rotate fc 1 -1 _pm scale fc neg _pm rotate fc } { pop } ifelse dup _pm rotate fc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore fc neg _pm rotate fc _pd exch get /_fdd exch ddef /_pf { save 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm patternfill } { pop fill } ifelse grestore pop } for pop } for restore newpath } ddef /_psf { save 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 9 copy 6 npop patternashow } { pop 6 copy 3 npop ashow } ifelse grestore pop } for pop } for restore sw rmoveto } ddef /_pjsf { save 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 12 copy 6 npop patternawidthshow } { pop 9 copy 3 npop awidthshow } ifelse grestore pop } for pop } for restore swj rmoveto } ddef /_lp /none ddef } def /sc { _sm dup concatmatrix pop } def /P { /_sm exch ddef 9 -2 roll _pm translate sc 7 -2 roll _pm scale sc 5 -1 roll _pm rotate sc 4 -2 roll exch 0 ne { dup _pm rotate sc 1 -1 _pm scale sc neg _pm rotate sc } { pop } ifelse dup _pm rotate sc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore sc neg _pm rotate sc _pd exch get /_sdd exch ddef /_ps { save 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm patternstroke } { pop stroke } ifelse grestore pop } for pop } for restore newpath } ddef /_pss { save 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 10 copy 6 npop patternashowstroke } { pop 7 copy 3 npop ss } ifelse grestore pop } for pop } for restore pop sw rmoveto } ddef /_pjss { save 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 13 copy 6 npop patternawidthshowstroke } { pop 10 copy 3 npop jss } ifelse grestore pop } for pop } for restore pop swj rmoveto } ddef /_lp /none ddef } def /A { pop } def /nc 3 dict def nc begin /setgray { pop } bind def /setcmykcolor { 4 npop } bind def /setcustomcolor { 2 npop } bind def currentdict readonly pop end /Z {findfont begin currentdict dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /FontName exch def dup length 0 ne {/Encoding Encoding 256 array copy def 0 exch {dup type /nametype eq {Encoding 2 index 2 index put pop 1 add} {exch pop} ifelse} forall} if pop currentdict dup end end /FontName get exch definefont pop} bind def currentdict readonly pop end setpacking /annotatepage { } def %%EndResource %AI3-Grid.0 0 0 0 0 0 0 2 %%EndProlog %%BeginSetup Adobe_cshow /initialize get exec Adobe_customcolor /initialize get exec Adobe_typography_AI3 /initialize get exec Adobe_Illustrator_AI3 /initialize get exec %%BeginEncoding:_Helvetica Helvetica [ 39/quotesingle 96/grave 130/quotesinglbase 131/florin 132/quotedblbase 133/ellipsis 134/dagger 135/daggerdbl 136/circumflex 137/perthousand 138/Scaron 139/guilsinglleft 140/OE 145/quoteleft 146/quoteright 147/quotedblleft 148/quotedblright 149/bullet 150/endash 151/emdash 152/tilde 153/trademark 154/scaron 155/guilsinglright 156/oe 157/dotlessi 159/Ydieresis 164/currency 166/brokenbar 168/dieresis 169/copyright 170/ordfeminine 172/logicalnot 174/registered 175/macron 176/ring 177/plusminus 178/twosuperior 179/threesuperior 180/acute 181/mu 183/periodcentered 184/cedilla 185/onesuperior 186/ordmasculine 188/onequarter 189/onehalf 190/threequarters 192/Agrave 193/Aacute 194/Acircumflex 195/Atilde 196/Adieresis 197/Aring 198/AE 199/Ccedilla 200/Egrave 201/Eacute 202/Ecircumflex 203/Edieresis 204/Igrave 205/Iacute 206/Icircumflex 207/Idieresis 208/Eth 209/Ntilde 210/Ograve 211/Oacute 212/Ocircumflex 213/Otilde 214/Odieresis 215/multiply 216/Oslash 217/Ugrave 218/Uacute 219/Ucircumflex 220/Udieresis 221/Yacute 222/Thorn 223/germandbls 224/agrave 225/aacute 226/acircumflex 227/atilde 228/adieresis 229/aring 230/ae 231/ccedilla 232/egrave 233/eacute 234/ecircumflex 235/edieresis 236/igrave 237/iacute 238/icircumflex 239/idieresis 240/eth 241/ntilde 242/ograve 243/oacute 244/ocircumflex 245/otilde 246/odieresis 247/divide 248/oslash 249/ugrave 250/uacute 251/ucircumflex 252/udieresis 253/yacute 254/thorn 255/ydieresis ] /_Helvetica/Helvetica Z %%EndEncoding %%BeginEncoding:_Helvetica-Bold Helvetica-Bold [ 39/quotesingle 96/grave 130/quotesinglbase 131/florin 132/quotedblbase 133/ellipsis 134/dagger 135/daggerdbl 136/circumflex 137/perthousand 138/Scaron 139/guilsinglleft 140/OE 145/quoteleft 146/quoteright 147/quotedblleft 148/quotedblright 149/bullet 150/endash 151/emdash 152/tilde 153/trademark 154/scaron 155/guilsinglright 156/oe 157/dotlessi 159/Ydieresis 164/currency 166/brokenbar 168/dieresis 169/copyright 170/ordfeminine 172/logicalnot 174/registered 175/macron 176/ring 177/plusminus 178/twosuperior 179/threesuperior 180/acute 181/mu 183/periodcentered 184/cedilla 185/onesuperior 186/ordmasculine 188/onequarter 189/onehalf 190/threequarters 192/Agrave 193/Aacute 194/Acircumflex 195/Atilde 196/Adieresis 197/Aring 198/AE 199/Ccedilla 200/Egrave 201/Eacute 202/Ecircumflex 203/Edieresis 204/Igrave 205/Iacute 206/Icircumflex 207/Idieresis 208/Eth 209/Ntilde 210/Ograve 211/Oacute 212/Ocircumflex 213/Otilde 214/Odieresis 215/multiply 216/Oslash 217/Ugrave 218/Uacute 219/Ucircumflex 220/Udieresis 221/Yacute 222/Thorn 223/germandbls 224/agrave 225/aacute 226/acircumflex 227/atilde 228/adieresis 229/aring 230/ae 231/ccedilla 232/egrave 233/eacute 234/ecircumflex 235/edieresis 236/igrave 237/iacute 238/icircumflex 239/idieresis 240/eth 241/ntilde 242/ograve 243/oacute 244/ocircumflex 245/otilde 246/odieresis 247/divide 248/oslash 249/ugrave 250/uacute 251/ucircumflex 252/udieresis 253/yacute 254/thorn 255/ydieresis ] /_Helvetica-Bold/Helvetica-Bold Z %%EndEncoding %%BeginEncoding:_Helvetica-Oblique Helvetica-Oblique [ 39/quotesingle 96/grave 130/quotesinglbase 131/florin 132/quotedblbase 133/ellipsis 134/dagger 135/daggerdbl 136/circumflex 137/perthousand 138/Scaron 139/guilsinglleft 140/OE 145/quoteleft 146/quoteright 147/quotedblleft 148/quotedblright 149/bullet 150/endash 151/emdash 152/tilde 153/trademark 154/scaron 155/guilsinglright 156/oe 157/dotlessi 159/Ydieresis 164/currency 166/brokenbar 168/dieresis 169/copyright 170/ordfeminine 172/logicalnot 174/registered 175/macron 176/ring 177/plusminus 178/twosuperior 179/threesuperior 180/acute 181/mu 183/periodcentered 184/cedilla 185/onesuperior 186/ordmasculine 188/onequarter 189/onehalf 190/threequarters 192/Agrave 193/Aacute 194/Acircumflex 195/Atilde 196/Adieresis 197/Aring 198/AE 199/Ccedilla 200/Egrave 201/Eacute 202/Ecircumflex 203/Edieresis 204/Igrave 205/Iacute 206/Icircumflex 207/Idieresis 208/Eth 209/Ntilde 210/Ograve 211/Oacute 212/Ocircumflex 213/Otilde 214/Odieresis 215/multiply 216/Oslash 217/Ugrave 218/Uacute 219/Ucircumflex 220/Udieresis 221/Yacute 222/Thorn 223/germandbls 224/agrave 225/aacute 226/acircumflex 227/atilde 228/adieresis 229/aring 230/ae 231/ccedilla 232/egrave 233/eacute 234/ecircumflex 235/edieresis 236/igrave 237/iacute 238/icircumflex 239/idieresis 240/eth 241/ntilde 242/ograve 243/oacute 244/ocircumflex 245/otilde 246/odieresis 247/divide 248/oslash 249/ugrave 250/uacute 251/ucircumflex 252/udieresis 253/yacute 254/thorn 255/ydieresis ] /_Helvetica-Oblique/Helvetica-Oblique Z %%EndEncoding %%EndSetup 0 To 1 0 0 1 27 196.5 0 Tp TP /_Helvetica-Oblique 10.5000 Tf 0.0000 Tc 0 Tr [] 0 d 0.000 0.000 0.000 1.000 K 0.000 0.000 0.000 1.000 k (Code Specialization\r) Tx TO 0 To 1 0 0 1 114.75 196.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (:\r) Tx TO 0 To 1 0 0 1 27 184.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k ( resolve dynamic dispatches,\r) Tx TO 0 To 1 0 0 1 27 172.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k ( inline method bodies\r) Tx TO 0 To 1 0 0 1 225 196.5 0 Tp TP /_Helvetica-Oblique 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (Data Specialization\r) Tx TO 0 To 1 0 0 1 309.75 196.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (:\r) Tx TO 0 To 1 0 0 1 225 184.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k ( inline objects,\r) Tx TO 0 To 1 0 0 1 225 172.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k ( customize allocation\r) Tx TO 0 To 1 0 0 1 355.75 196.5 0 Tp TP /_Helvetica-Oblique 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (Operational Specialization\r) Tx TO 0 To 1 0 0 1 471 196.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (:\r) Tx TO 0 To 1 0 0 1 355.75 184.5 0 Tp TP /_Helvetica 10.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k ( customize evaluation\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.000 0.000 0.000 0.000 K 1 j 103.5000 48.7500 m 204.5000 48.7500 L 204.5000 126.0000 L 103.5000 126.0000 L 103.5000 164.5000 L 2.5000 164.5000 L 2.5000 2.7500 L 103.5000 2.7500 L 103.5000 48.7500 L F U u 0.7500 w 0.000 0.000 0.000 1.000 K 1 J 103.5000 48.7500 m 105.0000 48.7500 L S U u 106.5000 48.7500 m 107.7500 48.7500 L S U u 109.2500 48.7500 m 110.7500 48.7500 L S U u 112.2500 48.7500 m 113.5000 48.7500 L S U u 115.0000 48.7500 m 116.5000 48.7500 L S U u 118.0000 48.7500 m 119.2500 48.7500 L S U u 120.7500 48.7500 m 122.2500 48.7500 L S U u 123.7500 48.7500 m 125.0000 48.7500 L S U u 126.5000 48.7500 m 128.0000 48.7500 L S U u 129.5000 48.7500 m 130.7500 48.7500 L S U u 132.2500 48.7500 m 133.7500 48.7500 L S U u 135.2500 48.7500 m 136.5000 48.7500 L S U u 138.0000 48.7500 m 139.5000 48.7500 L S U u 141.0000 48.7500 m 142.2500 48.7500 L S U u 143.7500 48.7500 m 145.2500 48.7500 L S U u 146.7500 48.7500 m 148.0000 48.7500 L S U u 149.5000 48.7500 m 151.0000 48.7500 L S U u 152.5000 48.7500 m 154.0000 48.7500 L S U u 155.2500 48.7500 m 156.7500 48.7500 L S U u 158.2500 48.7500 m 159.7500 48.7500 L S U u 161.0000 48.7500 m 162.5000 48.7500 L S U u 164.0000 48.7500 m 165.5000 48.7500 L S U u 166.7500 48.7500 m 168.2500 48.7500 L S U u 169.7500 48.7500 m 171.2500 48.7500 L S U u 172.5000 48.7500 m 174.0000 48.7500 L S U u 175.5000 48.7500 m 177.0000 48.7500 L S U u 178.2500 48.7500 m 179.7500 48.7500 L S U u 181.2500 48.7500 m 182.7500 48.7500 L S U u 184.0000 48.7500 m 185.5000 48.7500 L S U u 187.0000 48.7500 m 188.5000 48.7500 L S U u 189.7500 48.7500 m 191.2500 48.7500 L S U u 192.7500 48.7500 m 194.2500 48.7500 L S U u 195.5000 48.7500 m 197.0000 48.7500 L S U u 198.5000 48.7500 m 200.0000 48.7500 L S U u 201.5000 48.7500 m 202.7500 48.7500 L S U u 204.2500 48.7500 m 204.5000 48.7500 L S U u 204.5000 48.7500 m 204.5000 50.0000 L S U u 204.5000 51.5000 m 204.5000 53.0000 L S U u 204.5000 54.2500 m 204.5000 55.7500 L S U u 204.5000 57.2500 m 204.5000 58.7500 L S U u 204.5000 60.0000 m 204.5000 61.5000 L S U u 204.5000 63.0000 m 204.5000 64.5000 L S U u 204.5000 65.7500 m 204.5000 67.2500 L S U u 204.5000 68.7500 m 204.5000 70.2500 L S U u 204.5000 71.5000 m 204.5000 73.0000 L S U u 204.5000 74.5000 m 204.5000 76.0000 L S U u 204.5000 77.2500 m 204.5000 78.7500 L S U u 204.5000 80.2500 m 204.5000 81.7500 L S U u 204.5000 83.0000 m 204.5000 84.5000 L S U u 204.5000 86.0000 m 204.5000 87.5000 L S U u 204.5000 88.7500 m 204.5000 90.2500 L S U u 204.5000 91.7500 m 204.5000 93.2500 L S U u 204.5000 94.5000 m 204.5000 96.0000 L S U u 204.5000 97.5000 m 204.5000 99.0000 L S U u 204.5000 100.2500 m 204.5000 101.7500 L S U u 204.5000 103.2500 m 204.5000 104.7500 L S U u 204.5000 106.0000 m 204.5000 107.5000 L S U u 204.5000 109.0000 m 204.5000 110.5000 L S U u 204.5000 112.0000 m 204.5000 113.2500 L S U u 204.5000 114.7500 m 204.5000 116.2500 L S U u 204.5000 117.7500 m 204.5000 119.0000 L S U u 204.5000 120.5000 m 204.5000 122.0000 L S U u 204.5000 123.5000 m 204.5000 124.7500 L S U u 204.2500 126.0000 m 202.7500 126.0000 L S U u 201.2500 126.0000 m 199.7500 126.0000 L S U u 198.5000 126.0000 m 197.0000 126.0000 L S U u 195.5000 126.0000 m 194.0000 126.0000 L S U u 192.5000 126.0000 m 191.2500 126.0000 L S U u 189.7500 126.0000 m 188.2500 126.0000 L S U u 186.7500 126.0000 m 185.5000 126.0000 L S U u 184.0000 126.0000 m 182.5000 126.0000 L S U u 181.0000 126.0000 m 179.7500 126.0000 L S U u 178.2500 126.0000 m 176.7500 126.0000 L S U u 175.2500 126.0000 m 174.0000 126.0000 L S U u 172.5000 126.0000 m 171.0000 126.0000 L S U u 169.5000 126.0000 m 168.2500 126.0000 L S U u 166.7500 126.0000 m 165.2500 126.0000 L S U u 163.7500 126.0000 m 162.5000 126.0000 L S U u 161.0000 126.0000 m 159.5000 126.0000 L S U u 158.0000 126.0000 m 156.7500 126.0000 L S U u 155.2500 126.0000 m 153.7500 126.0000 L S U u 152.2500 126.0000 m 151.0000 126.0000 L S U u 149.5000 126.0000 m 148.0000 126.0000 L S U u 146.5000 126.0000 m 145.0000 126.0000 L S U u 143.7500 126.0000 m 142.2500 126.0000 L S U u 140.7500 126.0000 m 139.2500 126.0000 L S U u 138.0000 126.0000 m 136.5000 126.0000 L S U u 135.0000 126.0000 m 133.5000 126.0000 L S U u 132.2500 126.0000 m 130.7500 126.0000 L S U u 129.2500 126.0000 m 127.7500 126.0000 L S U u 126.5000 126.0000 m 125.0000 126.0000 L S U u 123.5000 126.0000 m 122.0000 126.0000 L S U u 120.7500 126.0000 m 119.2500 126.0000 L S U u 117.7500 126.0000 m 116.2500 126.0000 L S U u 115.0000 126.0000 m 113.5000 126.0000 L S U u 112.0000 126.0000 m 110.5000 126.0000 L S U u 109.2500 126.0000 m 107.7500 126.0000 L S U u 106.2500 126.0000 m 104.7500 126.0000 L S U u 103.5000 126.0000 m 103.5000 127.5000 L S U u 103.5000 129.0000 m 103.5000 130.2500 L S U u 103.5000 131.7500 m 103.5000 133.2500 L S U u 103.5000 134.7500 m 103.5000 136.0000 L S U u 103.5000 137.5000 m 103.5000 139.0000 L S U u 103.5000 140.5000 m 103.5000 141.7500 L S U u 103.5000 143.2500 m 103.5000 144.7500 L S U u 103.5000 146.2500 m 103.5000 147.5000 L S U u 103.5000 149.0000 m 103.5000 150.5000 L S U u 103.5000 152.0000 m 103.5000 153.2500 L S U u 103.5000 154.7500 m 103.5000 156.2500 L S U u 103.5000 157.7500 m 103.5000 159.0000 L S U u 103.5000 160.5000 m 103.5000 162.0000 L S U u 103.5000 163.5000 m 103.5000 164.5000 L S U u 103.5000 164.5000 m 103.2500 164.5000 L S U u 101.7500 164.5000 m 100.2500 164.5000 L S U u 98.7500 164.5000 m 97.5000 164.5000 L S U u 96.0000 164.5000 m 94.5000 164.5000 L S U u 93.0000 164.5000 m 91.7500 164.5000 L S U u 90.2500 164.5000 m 88.7500 164.5000 L S U u 87.2500 164.5000 m 86.0000 164.5000 L S U u 84.5000 164.5000 m 83.0000 164.5000 L S U u 81.5000 164.5000 m 80.0000 164.5000 L S U u 78.7500 164.5000 m 77.2500 164.5000 L S U u 75.7500 164.5000 m 74.2500 164.5000 L S U u 73.0000 164.5000 m 71.5000 164.5000 L S U u 70.0000 164.5000 m 68.5000 164.5000 L S U u 67.2500 164.5000 m 65.7500 164.5000 L S U u 64.2500 164.5000 m 62.7500 164.5000 L S U u 61.5000 164.5000 m 60.0000 164.5000 L S U u 58.5000 164.5000 m 57.0000 164.5000 L S U u 55.7500 164.5000 m 54.2500 164.5000 L S U u 52.7500 164.5000 m 51.2500 164.5000 L S U u 50.0000 164.5000 m 48.5000 164.5000 L S U u 47.0000 164.5000 m 45.5000 164.5000 L S U u 44.2500 164.5000 m 42.7500 164.5000 L S U u 41.2500 164.5000 m 39.7500 164.5000 L S U u 38.5000 164.5000 m 37.0000 164.5000 L S U u 35.5000 164.5000 m 34.0000 164.5000 L S U u 32.5000 164.5000 m 31.2500 164.5000 L S U u 29.7500 164.5000 m 28.2500 164.5000 L S U u 26.7500 164.5000 m 25.5000 164.5000 L S U u 24.0000 164.5000 m 22.5000 164.5000 L S U u 21.0000 164.5000 m 19.7500 164.5000 L S U u 18.2500 164.5000 m 16.7500 164.5000 L S U u 15.2500 164.5000 m 14.0000 164.5000 L S U u 12.5000 164.5000 m 11.0000 164.5000 L S U u 9.5000 164.5000 m 8.2500 164.5000 L S U u 6.7500 164.5000 m 5.2500 164.5000 L S U u 3.7500 164.5000 m 2.5000 164.5000 L S U u 2.5000 164.5000 m 2.5000 164.5000 L S U u 2.5000 163.0000 m 2.5000 161.5000 L S U u 2.5000 160.0000 m 2.5000 158.7500 L S U u 2.5000 157.2500 m 2.5000 155.7500 L S U u 2.5000 154.2500 m 2.5000 153.0000 L S U u 2.5000 151.5000 m 2.5000 150.0000 L S U u 2.5000 148.5000 m 2.5000 147.2500 L S U u 2.5000 145.7500 m 2.5000 144.2500 L S U u 2.5000 142.7500 m 2.5000 141.2500 L S U u 2.5000 140.0000 m 2.5000 138.5000 L S U u 2.5000 137.0000 m 2.5000 135.5000 L S U u 2.5000 134.2500 m 2.5000 132.7500 L S U u 2.5000 131.2500 m 2.5000 129.7500 L S U u 2.5000 128.5000 m 2.5000 127.0000 L S U u 2.5000 125.5000 m 2.5000 124.0000 L S U u 2.5000 122.7500 m 2.5000 121.2500 L S U u 2.5000 119.7500 m 2.5000 118.2500 L S U u 2.5000 117.0000 m 2.5000 115.5000 L S U u 2.5000 114.0000 m 2.5000 112.5000 L S U u 2.5000 111.2500 m 2.5000 109.7500 L S U u 2.5000 108.2500 m 2.5000 106.7500 L S U u 2.5000 105.5000 m 2.5000 104.0000 L S U u 2.5000 102.5000 m 2.5000 101.0000 L S U u 2.5000 99.7500 m 2.5000 98.2500 L S U u 2.5000 96.7500 m 2.5000 95.2500 L S U u 2.5000 94.0000 m 2.5000 92.5000 L S U u 2.5000 91.0000 m 2.5000 89.5000 L S U u 2.5000 88.2500 m 2.5000 86.7500 L S U u 2.5000 85.2500 m 2.5000 83.7500 L S U u 2.5000 82.5000 m 2.5000 81.0000 L S U u 2.5000 79.5000 m 2.5000 78.0000 L S U u 2.5000 76.5000 m 2.5000 75.2500 L S U u 2.5000 73.7500 m 2.5000 72.2500 L S U u 2.5000 70.7500 m 2.5000 69.5000 L S U u 2.5000 68.0000 m 2.5000 66.5000 L S U u 2.5000 65.0000 m 2.5000 63.7500 L S U u 2.5000 62.2500 m 2.5000 60.7500 L S U u 2.5000 59.2500 m 2.5000 58.0000 L S U u 2.5000 56.5000 m 2.5000 55.0000 L S U u 2.5000 53.5000 m 2.5000 52.2500 L S U u 2.5000 50.7500 m 2.5000 49.2500 L S U u 2.5000 47.7500 m 2.5000 46.5000 L S U u 2.5000 45.0000 m 2.5000 43.5000 L S U u 2.5000 42.0000 m 2.5000 40.7500 L S U u 2.5000 39.2500 m 2.5000 37.7500 L S U u 2.5000 36.2500 m 2.5000 35.0000 L S U u 2.5000 33.5000 m 2.5000 32.0000 L S U u 2.5000 30.5000 m 2.5000 29.2500 L S U u 2.5000 27.7500 m 2.5000 26.2500 L S U u 2.5000 24.7500 m 2.5000 23.5000 L S U u 2.5000 22.0000 m 2.5000 20.5000 L S U u 2.5000 19.0000 m 2.5000 17.7500 L S U u 2.5000 16.2500 m 2.5000 14.7500 L S U u 2.5000 13.2500 m 2.5000 11.7500 L S U u 2.5000 10.5000 m 2.5000 9.0000 L S U u 2.5000 7.5000 m 2.5000 6.0000 L S U u 2.5000 4.7500 m 2.5000 3.2500 L S U u 3.2500 2.7500 m 4.7500 2.7500 L S U u 6.2500 2.7500 m 7.7500 2.7500 L S U u 9.0000 2.7500 m 10.5000 2.7500 L S U u 12.0000 2.7500 m 13.5000 2.7500 L S U u 14.7500 2.7500 m 16.2500 2.7500 L S U u 17.7500 2.7500 m 19.2500 2.7500 L S U u 20.7500 2.7500 m 22.0000 2.7500 L S U u 23.5000 2.7500 m 25.0000 2.7500 L S U u 26.5000 2.7500 m 27.7500 2.7500 L S U u 29.2500 2.7500 m 30.7500 2.7500 L S U u 32.2500 2.7500 m 33.5000 2.7500 L S U u 35.0000 2.7500 m 36.5000 2.7500 L S U u 38.0000 2.7500 m 39.2500 2.7500 L S U u 40.7500 2.7500 m 42.2500 2.7500 L S U u 43.7500 2.7500 m 45.0000 2.7500 L S U u 46.5000 2.7500 m 48.0000 2.7500 L S U u 49.5000 2.7500 m 50.7500 2.7500 L S U u 52.2500 2.7500 m 53.7500 2.7500 L S U u 55.2500 2.7500 m 56.5000 2.7500 L S U u 58.0000 2.7500 m 59.5000 2.7500 L S U u 61.0000 2.7500 m 62.2500 2.7500 L S U u 63.7500 2.7500 m 65.2500 2.7500 L S U u 66.7500 2.7500 m 68.0000 2.7500 L S U u 69.5000 2.7500 m 71.0000 2.7500 L S U u 72.5000 2.7500 m 74.0000 2.7500 L S U u 75.2500 2.7500 m 76.7500 2.7500 L S U u 78.2500 2.7500 m 79.7500 2.7500 L S U u 81.0000 2.7500 m 82.5000 2.7500 L S U u 84.0000 2.7500 m 85.5000 2.7500 L S U u 86.7500 2.7500 m 88.2500 2.7500 L S U u 89.7500 2.7500 m 91.2500 2.7500 L S U u 92.5000 2.7500 m 94.0000 2.7500 L S U u 95.5000 2.7500 m 97.0000 2.7500 L S U u 98.2500 2.7500 m 99.7500 2.7500 L S U u 101.2500 2.7500 m 102.7500 2.7500 L S U u 103.5000 3.2500 m 103.5000 4.7500 L S U u 103.5000 6.0000 m 103.5000 7.5000 L S U u 103.5000 9.0000 m 103.5000 10.5000 L S U u 103.5000 11.7500 m 103.5000 13.2500 L S U u 103.5000 14.7500 m 103.5000 16.2500 L S U u 103.5000 17.7500 m 103.5000 19.0000 L S U u 103.5000 20.5000 m 103.5000 22.0000 L S U u 103.5000 23.5000 m 103.5000 24.7500 L S U u 103.5000 26.2500 m 103.5000 27.7500 L S U u 103.5000 29.2500 m 103.5000 30.5000 L S U u 103.5000 32.0000 m 103.5000 33.5000 L S U u 103.5000 35.0000 m 103.5000 36.2500 L S U u 103.5000 37.7500 m 103.5000 39.2500 L S U u 103.5000 40.7500 m 103.5000 42.0000 L S U u 103.5000 43.5000 m 103.5000 45.0000 L S U u 103.5000 46.5000 m 103.5000 47.7500 L S U u 0.000 0.000 0.000 0.000 k 0.2500 w 122.5000 85.2500 m 185.5000 85.2500 L 185.5000 93.5000 L 122.5000 93.5000 L 122.5000 85.2500 L B U 0 To 1 0 0 1 139.25 86.75 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0.000 0.000 0.000 1.000 K 0 j 0.000 0.000 0.000 1.000 k (DivRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 185.5000 85.2500 m 122.5000 85.2500 L 122.5000 60.5000 L 185.5000 60.5000 L 185.5000 85.2500 L B U 0 To 1 0 0 1 125.5 75.25 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (first\r) Tx TO 0 To 1 0 0 1 153.25 66.25 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (second\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 21.5000 35.5000 m 84.5000 35.5000 L 84.5000 44.0000 L 21.5000 44.0000 L 21.5000 35.5000 L B U 0 To 1 0 0 1 36.25 37 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (MultRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 84.5000 35.5000 m 21.5000 35.5000 L 21.5000 11.0000 L 84.5000 11.0000 L 84.5000 35.5000 L B U 0 To 1 0 0 1 24.5 26 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (first\r) Tx TO 0 To 1 0 0 1 52.25 15.25 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (second\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 21.5000 135.0000 m 84.5000 135.0000 L 84.5000 143.2500 L 21.5000 143.2500 L 21.5000 135.0000 L B U 0 To 1 0 0 1 36.75 136.25 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (SubRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 84.5000 135.0000 m 21.5000 135.0000 L 21.5000 110.0000 L 84.5000 110.0000 L 84.5000 135.0000 L B U 0 To 1 0 0 1 24.5 127 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (first\r) Tx TO 0 To 1 0 0 1 52.25 116.25 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (second\r) Tx TO u 0.2500 w 1 j 84.5000 118.2500 m 154.0000 118.2500 L 154.0000 101.0000 L S U u 0.000 0.000 0.000 1.000 k 0.0000 w 0.000 0.000 0.000 0.000 K 156.7500 101.7500 m 154.0000 93.5000 L 151.2500 101.7500 L 156.7500 101.7500 L F U u 0.2500 w 0.000 0.000 0.000 1.000 K 122.5000 77.0000 m 53.0000 77.0000 L 53.0000 51.5000 L S U u 0.000 0.000 0.000 1.000 k 0.0000 w 0.000 0.000 0.000 0.000 K 55.7500 52.2500 m 53.0000 44.0000 L 50.2500 52.2500 L 55.7500 52.2500 L F U u 0.000 0.000 0.000 0.000 k 0.000 0.000 0.000 0.000 K 241.0000 54.2500 m 323.2500 54.2500 L 323.2500 164.5000 L 241.0000 164.5000 L 241.0000 54.2500 L F U u 0.2500 w 0.000 0.000 0.000 1.000 K 241.0000 54.2500 m 241.2500 54.2500 L S U u 242.5000 54.2500 m 242.7500 54.2500 L S U u 243.7500 54.2500 m 244.0000 54.2500 L S U u 245.2500 54.2500 m 245.5000 54.2500 L S U u 246.7500 54.2500 m 247.0000 54.2500 L S U u 248.2500 54.2500 m 248.5000 54.2500 L S U u 249.5000 54.2500 m 249.7500 54.2500 L S U u 251.0000 54.2500 m 251.2500 54.2500 L S U u 252.5000 54.2500 m 252.7500 54.2500 L S U u 254.0000 54.2500 m 254.2500 54.2500 L S U u 255.2500 54.2500 m 255.5000 54.2500 L S U u 256.7500 54.2500 m 257.0000 54.2500 L S U u 258.2500 54.2500 m 258.5000 54.2500 L S U u 259.7500 54.2500 m 260.0000 54.2500 L S U u 261.0000 54.2500 m 261.2500 54.2500 L S U u 262.5000 54.2500 m 262.7500 54.2500 L S U u 264.0000 54.2500 m 264.2500 54.2500 L S U u 265.5000 54.2500 m 265.7500 54.2500 L S U u 266.7500 54.2500 m 267.0000 54.2500 L S U u 268.2500 54.2500 m 268.5000 54.2500 L S U u 269.7500 54.2500 m 270.0000 54.2500 L S U u 271.2500 54.2500 m 271.5000 54.2500 L S U u 272.5000 54.2500 m 272.7500 54.2500 L S U u 274.0000 54.2500 m 274.2500 54.2500 L S U u 275.5000 54.2500 m 275.7500 54.2500 L S U u 277.0000 54.2500 m 277.2500 54.2500 L S U u 278.5000 54.2500 m 278.5000 54.2500 L S U u 279.7500 54.2500 m 280.0000 54.2500 L S U u 281.2500 54.2500 m 281.5000 54.2500 L S U u 282.7500 54.2500 m 283.0000 54.2500 L S U u 284.2500 54.2500 m 284.2500 54.2500 L S U u 285.5000 54.2500 m 285.7500 54.2500 L S U u 287.0000 54.2500 m 287.2500 54.2500 L S U u 288.5000 54.2500 m 288.7500 54.2500 L S U u 290.0000 54.2500 m 290.2500 54.2500 L S U u 291.2500 54.2500 m 291.5000 54.2500 L S U u 292.7500 54.2500 m 293.0000 54.2500 L S U u 294.2500 54.2500 m 294.5000 54.2500 L S U u 295.7500 54.2500 m 296.0000 54.2500 L S U u 297.0000 54.2500 m 297.2500 54.2500 L S U u 298.5000 54.2500 m 298.7500 54.2500 L S U u 300.0000 54.2500 m 300.2500 54.2500 L S U u 301.5000 54.2500 m 301.7500 54.2500 L S U u 302.7500 54.2500 m 303.0000 54.2500 L S U u 304.2500 54.2500 m 304.5000 54.2500 L S U u 305.7500 54.2500 m 306.0000 54.2500 L S U u 307.2500 54.2500 m 307.5000 54.2500 L S U u 308.5000 54.2500 m 308.7500 54.2500 L S U u 310.0000 54.2500 m 310.2500 54.2500 L S U u 311.5000 54.2500 m 311.7500 54.2500 L S U u 313.0000 54.2500 m 313.2500 54.2500 L S U u 314.2500 54.2500 m 314.5000 54.2500 L S U u 315.7500 54.2500 m 316.0000 54.2500 L S U u 317.2500 54.2500 m 317.5000 54.2500 L S U u 318.7500 54.2500 m 319.0000 54.2500 L S U u 320.0000 54.2500 m 320.2500 54.2500 L S U u 321.5000 54.2500 m 321.7500 54.2500 L S U u 323.0000 54.2500 m 323.2500 54.2500 L S U u 323.2500 55.5000 m 323.2500 55.7500 L S U u 323.2500 56.7500 m 323.2500 57.0000 L S U u 323.2500 58.2500 m 323.2500 58.5000 L S U u 323.2500 59.7500 m 323.2500 60.0000 L S U u 323.2500 61.2500 m 323.2500 61.5000 L S U u 323.2500 62.5000 m 323.2500 62.7500 L S U u 323.2500 64.0000 m 323.2500 64.2500 L S U u 323.2500 65.5000 m 323.2500 65.7500 L S U u 323.2500 67.0000 m 323.2500 67.2500 L S U u 323.2500 68.2500 m 323.2500 68.5000 L S U u 323.2500 69.7500 m 323.2500 70.0000 L S U u 323.2500 71.2500 m 323.2500 71.5000 L S U u 323.2500 72.7500 m 323.2500 73.0000 L S U u 323.2500 74.0000 m 323.2500 74.2500 L S U u 323.2500 75.5000 m 323.2500 75.7500 L S U u 323.2500 77.0000 m 323.2500 77.2500 L S U u 323.2500 78.5000 m 323.2500 78.7500 L S U u 323.2500 79.7500 m 323.2500 80.0000 L S U u 323.2500 81.2500 m 323.2500 81.5000 L S U u 323.2500 82.7500 m 323.2500 83.0000 L S U u 323.2500 84.2500 m 323.2500 84.5000 L S U u 323.2500 85.5000 m 323.2500 85.7500 L S U u 323.2500 87.0000 m 323.2500 87.2500 L S U u 323.2500 88.5000 m 323.2500 88.7500 L S U u 323.2500 90.0000 m 323.2500 90.2500 L S U u 323.2500 91.2500 m 323.2500 91.5000 L S U u 323.2500 92.7500 m 323.2500 93.0000 L S U u 323.2500 94.2500 m 323.2500 94.5000 L S U u 323.2500 95.7500 m 323.2500 96.0000 L S U u 323.2500 97.2500 m 323.2500 97.2500 L S U u 323.2500 98.5000 m 323.2500 98.7500 L S U u 323.2500 100.0000 m 323.2500 100.2500 L S U u 323.2500 101.5000 m 323.2500 101.7500 L S U u 323.2500 103.0000 m 323.2500 103.0000 L S U u 323.2500 104.2500 m 323.2500 104.5000 L S U u 323.2500 105.7500 m 323.2500 106.0000 L S U u 323.2500 107.2500 m 323.2500 107.5000 L S U u 323.2500 108.7500 m 323.2500 109.0000 L S U u 323.2500 110.0000 m 323.2500 110.2500 L S U u 323.2500 111.5000 m 323.2500 111.7500 L S U u 323.2500 113.0000 m 323.2500 113.2500 L S U u 323.2500 114.5000 m 323.2500 114.7500 L S U u 323.2500 115.7500 m 323.2500 116.0000 L S U u 323.2500 117.2500 m 323.2500 117.5000 L S U u 323.2500 118.7500 m 323.2500 119.0000 L S U u 323.2500 120.2500 m 323.2500 120.5000 L S U u 323.2500 121.5000 m 323.2500 121.7500 L S U u 323.2500 123.0000 m 323.2500 123.2500 L S U u 323.2500 124.5000 m 323.2500 124.7500 L S U u 323.2500 126.0000 m 323.2500 126.2500 L S U u 323.2500 127.2500 m 323.2500 127.5000 L S U u 323.2500 128.7500 m 323.2500 129.0000 L S U u 323.2500 130.2500 m 323.2500 130.5000 L S U u 323.2500 131.7500 m 323.2500 132.0000 L S U u 323.2500 133.0000 m 323.2500 133.2500 L S U u 323.2500 134.5000 m 323.2500 134.7500 L S U u 323.2500 136.0000 m 323.2500 136.2500 L S U u 323.2500 137.5000 m 323.2500 137.7500 L S U u 323.2500 138.7500 m 323.2500 139.0000 L S U u 323.2500 140.2500 m 323.2500 140.5000 L S U u 323.2500 141.7500 m 323.2500 142.0000 L S U u 323.2500 143.2500 m 323.2500 143.5000 L S U u 323.2500 144.5000 m 323.2500 144.7500 L S U u 323.2500 146.0000 m 323.2500 146.2500 L S U u 323.2500 147.5000 m 323.2500 147.7500 L S U u 323.2500 149.0000 m 323.2500 149.2500 L S U u 323.2500 150.2500 m 323.2500 150.5000 L S U u 323.2500 151.7500 m 323.2500 152.0000 L S U u 323.2500 153.2500 m 323.2500 153.5000 L S U u 323.2500 154.7500 m 323.2500 155.0000 L S U u 323.2500 156.0000 m 323.2500 156.2500 L S U u 323.2500 157.5000 m 323.2500 157.7500 L S U u 323.2500 159.0000 m 323.2500 159.2500 L S U u 323.2500 160.5000 m 323.2500 160.7500 L S U u 323.2500 162.0000 m 323.2500 162.0000 L S U u 323.2500 163.2500 m 323.2500 163.5000 L S U u 323.0000 164.5000 m 322.7500 164.5000 L S U u 321.7500 164.5000 m 321.5000 164.5000 L S U u 320.2500 164.5000 m 320.0000 164.5000 L S U u 318.7500 164.5000 m 318.5000 164.5000 L S U u 317.2500 164.5000 m 317.0000 164.5000 L S U u 316.0000 164.5000 m 315.7500 164.5000 L S U u 314.5000 164.5000 m 314.2500 164.5000 L S U u 313.0000 164.5000 m 312.7500 164.5000 L S U u 311.5000 164.5000 m 311.2500 164.5000 L S U u 310.2500 164.5000 m 310.0000 164.5000 L S U u 308.7500 164.5000 m 308.5000 164.5000 L S U u 307.2500 164.5000 m 307.0000 164.5000 L S U u 305.7500 164.5000 m 305.5000 164.5000 L S U u 304.5000 164.5000 m 304.2500 164.5000 L S U u 303.0000 164.5000 m 302.7500 164.5000 L S U u 301.5000 164.5000 m 301.2500 164.5000 L S U u 300.0000 164.5000 m 299.7500 164.5000 L S U u 298.7500 164.5000 m 298.5000 164.5000 L S U u 297.2500 164.5000 m 297.0000 164.5000 L S U u 295.7500 164.5000 m 295.5000 164.5000 L S U u 294.2500 164.5000 m 294.0000 164.5000 L S U u 293.0000 164.5000 m 292.7500 164.5000 L S U u 291.5000 164.5000 m 291.2500 164.5000 L S U u 290.0000 164.5000 m 289.7500 164.5000 L S U u 288.5000 164.5000 m 288.2500 164.5000 L S U u 287.2500 164.5000 m 287.0000 164.5000 L S U u 285.7500 164.5000 m 285.5000 164.5000 L S U u 284.2500 164.5000 m 284.0000 164.5000 L S U u 282.7500 164.5000 m 282.5000 164.5000 L S U u 281.2500 164.5000 m 281.2500 164.5000 L S U u 280.0000 164.5000 m 279.7500 164.5000 L S U u 278.5000 164.5000 m 278.2500 164.5000 L S U u 277.0000 164.5000 m 276.7500 164.5000 L S U u 275.5000 164.5000 m 275.5000 164.5000 L S U u 274.2500 164.5000 m 274.0000 164.5000 L S U u 272.7500 164.5000 m 272.5000 164.5000 L S U u 271.2500 164.5000 m 271.0000 164.5000 L S U u 269.7500 164.5000 m 269.5000 164.5000 L S U u 268.5000 164.5000 m 268.2500 164.5000 L S U u 267.0000 164.5000 m 266.7500 164.5000 L S U u 265.5000 164.5000 m 265.2500 164.5000 L S U u 264.0000 164.5000 m 263.7500 164.5000 L S U u 262.7500 164.5000 m 262.5000 164.5000 L S U u 261.2500 164.5000 m 261.0000 164.5000 L S U u 259.7500 164.5000 m 259.5000 164.5000 L S U u 258.2500 164.5000 m 258.0000 164.5000 L S U u 257.0000 164.5000 m 256.7500 164.5000 L S U u 255.5000 164.5000 m 255.2500 164.5000 L S U u 254.0000 164.5000 m 253.7500 164.5000 L S U u 252.5000 164.5000 m 252.2500 164.5000 L S U u 251.2500 164.5000 m 251.0000 164.5000 L S U u 249.7500 164.5000 m 249.5000 164.5000 L S U u 248.2500 164.5000 m 248.0000 164.5000 L S U u 246.7500 164.5000 m 246.5000 164.5000 L S U u 245.5000 164.5000 m 245.2500 164.5000 L S U u 244.0000 164.5000 m 243.7500 164.5000 L S U u 242.5000 164.5000 m 242.2500 164.5000 L S U u 241.0000 164.5000 m 241.0000 164.5000 L S U u 241.0000 164.5000 m 241.0000 164.5000 L S U u 241.0000 163.2500 m 241.0000 163.0000 L S U u 241.0000 161.7500 m 241.0000 161.5000 L S U u 241.0000 160.2500 m 241.0000 160.0000 L S U u 241.0000 159.0000 m 241.0000 158.7500 L S U u 241.0000 157.5000 m 241.0000 157.2500 L S U u 241.0000 156.0000 m 241.0000 155.7500 L S U u 241.0000 154.5000 m 241.0000 154.2500 L S U u 241.0000 153.0000 m 241.0000 153.0000 L S U u 241.0000 151.7500 m 241.0000 151.5000 L S U u 241.0000 150.2500 m 241.0000 150.0000 L S U u 241.0000 148.7500 m 241.0000 148.5000 L S U u 241.0000 147.2500 m 241.0000 147.2500 L S U u 241.0000 146.0000 m 241.0000 145.7500 L S U u 241.0000 144.5000 m 241.0000 144.2500 L S U u 241.0000 143.0000 m 241.0000 142.7500 L S U u 241.0000 141.5000 m 241.0000 141.2500 L S U u 241.0000 140.2500 m 241.0000 140.0000 L S U u 241.0000 138.7500 m 241.0000 138.5000 L S U u 241.0000 137.2500 m 241.0000 137.0000 L S U u 241.0000 135.7500 m 241.0000 135.5000 L S U u 241.0000 134.5000 m 241.0000 134.2500 L S U u 241.0000 133.0000 m 241.0000 132.7500 L S U u 241.0000 131.5000 m 241.0000 131.2500 L S U u 241.0000 130.0000 m 241.0000 129.7500 L S U u 241.0000 128.7500 m 241.0000 128.5000 L S U u 241.0000 127.2500 m 241.0000 127.0000 L S U u 241.0000 125.7500 m 241.0000 125.5000 L S U u 241.0000 124.2500 m 241.0000 124.0000 L S U u 241.0000 123.0000 m 241.0000 122.7500 L S U u 241.0000 121.5000 m 241.0000 121.2500 L S U u 241.0000 120.0000 m 241.0000 119.7500 L S U u 241.0000 118.5000 m 241.0000 118.2500 L S U u 241.0000 117.2500 m 241.0000 117.0000 L S U u 241.0000 115.7500 m 241.0000 115.5000 L S U u 241.0000 114.2500 m 241.0000 114.0000 L S U u 241.0000 112.7500 m 241.0000 112.5000 L S U u 241.0000 111.5000 m 241.0000 111.2500 L S U u 241.0000 110.0000 m 241.0000 109.7500 L S U u 241.0000 108.5000 m 241.0000 108.2500 L S U u 241.0000 107.0000 m 241.0000 106.7500 L S U u 241.0000 105.7500 m 241.0000 105.5000 L S U u 241.0000 104.2500 m 241.0000 104.0000 L S U u 241.0000 102.7500 m 241.0000 102.5000 L S U u 241.0000 101.2500 m 241.0000 101.0000 L S U u 241.0000 100.0000 m 241.0000 99.7500 L S U u 241.0000 98.5000 m 241.0000 98.2500 L S U u 241.0000 97.0000 m 241.0000 96.7500 L S U u 241.0000 95.5000 m 241.0000 95.2500 L S U u 241.0000 94.2500 m 241.0000 94.0000 L S U u 241.0000 92.7500 m 241.0000 92.5000 L S U u 241.0000 91.2500 m 241.0000 91.0000 L S U u 241.0000 89.7500 m 241.0000 89.5000 L S U u 241.0000 88.2500 m 241.0000 88.2500 L S U u 241.0000 87.0000 m 241.0000 86.7500 L S U u 241.0000 85.5000 m 241.0000 85.2500 L S U u 241.0000 84.0000 m 241.0000 83.7500 L S U u 241.0000 82.5000 m 241.0000 82.5000 L S U u 241.0000 81.2500 m 241.0000 81.0000 L S U u 241.0000 79.7500 m 241.0000 79.5000 L S U u 241.0000 78.2500 m 241.0000 78.0000 L S U u 241.0000 76.7500 m 241.0000 76.5000 L S U u 241.0000 75.5000 m 241.0000 75.2500 L S U u 241.0000 74.0000 m 241.0000 73.7500 L S U u 241.0000 72.5000 m 241.0000 72.2500 L S U u 241.0000 71.0000 m 241.0000 70.7500 L S U u 241.0000 69.7500 m 241.0000 69.5000 L S U u 241.0000 68.2500 m 241.0000 68.0000 L S U u 241.0000 66.7500 m 241.0000 66.5000 L S U u 241.0000 65.2500 m 241.0000 65.0000 L S U u 241.0000 64.0000 m 241.0000 63.7500 L S U u 241.0000 62.5000 m 241.0000 62.2500 L S U u 241.0000 61.0000 m 241.0000 60.7500 L S U u 241.0000 59.5000 m 241.0000 59.2500 L S U u 241.0000 58.2500 m 241.0000 58.0000 L S U u 241.0000 56.7500 m 241.0000 56.5000 L S U u 241.0000 55.2500 m 241.0000 55.0000 L S U u 0.000 0.000 0.000 0.000 k 253.2500 141.5000 m 311.0000 141.5000 L 311.0000 150.0000 L 253.2500 150.0000 L 253.2500 141.5000 L B U 0 To 1 0 0 1 265.75 143 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0.000 0.000 0.000 1.000 K 0 j 0.000 0.000 0.000 1.000 k (SubRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 311.0000 141.5000 m 253.2500 141.5000 L 253.2500 116.0000 L 311.0000 116.0000 L 311.0000 141.5000 L B U 0 To 1 0 0 1 256.25 131.5 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (first\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 253.2500 117.7500 m 311.0000 117.7500 L 311.0000 126.5000 L 253.2500 126.5000 L 253.2500 117.7500 L B U 0 To 1 0 0 1 267.25 119.5 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (DivRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 311.0000 117.7500 m 253.2500 117.7500 L 253.2500 92.5000 L 311.0000 92.5000 L 311.0000 117.7500 L B U 0 To 1 0 0 1 278.75 107.75 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (second\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 253.2500 94.2500 m 311.0000 94.2500 L 311.0000 102.7500 L 253.2500 102.7500 L 253.2500 94.2500 L B U 0 To 1 0 0 1 265.25 95.75 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (MultRep\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.2500 w 1 j 311.0000 94.2500 m 253.2500 94.2500 L 253.2500 68.7500 L 311.0000 68.7500 L 311.0000 94.2500 L B U 0 To 1 0 0 1 256.25 84.25 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (first\r) Tx TO 0 To 1 0 0 1 278.75 73.5 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (second\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.000 0.000 0.000 0.000 K 1 j 359.7500 54.2500 m 434.5000 54.2500 L 434.5000 164.5000 L 359.7500 164.5000 L 359.7500 54.2500 L F U u 0.2500 w 0.000 0.000 0.000 1.000 K 359.7500 54.2500 m 360.0000 54.2500 L S U u 361.2500 54.2500 m 361.5000 54.2500 L S U u 362.7500 54.2500 m 363.0000 54.2500 L S U u 364.2500 54.2500 m 364.2500 54.2500 L S U u 365.5000 54.2500 m 365.7500 54.2500 L S U u 367.0000 54.2500 m 367.2500 54.2500 L S U u 368.5000 54.2500 m 368.7500 54.2500 L S U u 370.0000 54.2500 m 370.2500 54.2500 L S U u 371.2500 54.2500 m 371.5000 54.2500 L S U u 372.7500 54.2500 m 373.0000 54.2500 L S U u 374.2500 54.2500 m 374.5000 54.2500 L S U u 375.7500 54.2500 m 376.0000 54.2500 L S U u 377.0000 54.2500 m 377.2500 54.2500 L S U u 378.5000 54.2500 m 378.7500 54.2500 L S U u 380.0000 54.2500 m 380.2500 54.2500 L S U u 381.5000 54.2500 m 381.7500 54.2500 L S U u 382.7500 54.2500 m 383.0000 54.2500 L S U u 384.2500 54.2500 m 384.5000 54.2500 L S U u 385.7500 54.2500 m 386.0000 54.2500 L S U u 387.2500 54.2500 m 387.5000 54.2500 L S U u 388.5000 54.2500 m 388.7500 54.2500 L S U u 390.0000 54.2500 m 390.2500 54.2500 L S U u 391.5000 54.2500 m 391.7500 54.2500 L S U u 393.0000 54.2500 m 393.2500 54.2500 L S U u 394.2500 54.2500 m 394.5000 54.2500 L S U u 395.7500 54.2500 m 396.0000 54.2500 L S U u 397.2500 54.2500 m 397.5000 54.2500 L S U u 398.7500 54.2500 m 399.0000 54.2500 L S U u 400.0000 54.2500 m 400.2500 54.2500 L S U u 401.5000 54.2500 m 401.7500 54.2500 L S U u 403.0000 54.2500 m 403.2500 54.2500 L S U u 404.5000 54.2500 m 404.7500 54.2500 L S U u 405.7500 54.2500 m 406.0000 54.2500 L S U u 407.2500 54.2500 m 407.5000 54.2500 L S U u 408.7500 54.2500 m 409.0000 54.2500 L S U u 410.2500 54.2500 m 410.5000 54.2500 L S U u 411.7500 54.2500 m 411.7500 54.2500 L S U u 413.0000 54.2500 m 413.2500 54.2500 L S U u 414.5000 54.2500 m 414.7500 54.2500 L S U u 416.0000 54.2500 m 416.2500 54.2500 L S U u 417.5000 54.2500 m 417.5000 54.2500 L S U u 418.7500 54.2500 m 419.0000 54.2500 L S U u 420.2500 54.2500 m 420.5000 54.2500 L S U u 421.7500 54.2500 m 422.0000 54.2500 L S U u 423.2500 54.2500 m 423.5000 54.2500 L S U u 424.5000 54.2500 m 424.7500 54.2500 L S U u 426.0000 54.2500 m 426.2500 54.2500 L S U u 427.5000 54.2500 m 427.7500 54.2500 L S U u 429.0000 54.2500 m 429.2500 54.2500 L S U u 430.2500 54.2500 m 430.5000 54.2500 L S U u 431.7500 54.2500 m 432.0000 54.2500 L S U u 433.2500 54.2500 m 433.5000 54.2500 L S U u 434.5000 54.5000 m 434.5000 54.7500 L S U u 434.5000 56.0000 m 434.5000 56.0000 L S U u 434.5000 57.2500 m 434.5000 57.5000 L S U u 434.5000 58.7500 m 434.5000 59.0000 L S U u 434.5000 60.2500 m 434.5000 60.5000 L S U u 434.5000 61.7500 m 434.5000 61.7500 L S U u 434.5000 63.0000 m 434.5000 63.2500 L S U u 434.5000 64.5000 m 434.5000 64.7500 L S U u 434.5000 66.0000 m 434.5000 66.2500 L S U u 434.5000 67.5000 m 434.5000 67.7500 L S U u 434.5000 68.7500 m 434.5000 69.0000 L S U u 434.5000 70.2500 m 434.5000 70.5000 L S U u 434.5000 71.7500 m 434.5000 72.0000 L S U u 434.5000 73.2500 m 434.5000 73.5000 L S U u 434.5000 74.5000 m 434.5000 74.7500 L S U u 434.5000 76.0000 m 434.5000 76.2500 L S U u 434.5000 77.5000 m 434.5000 77.7500 L S U u 434.5000 79.0000 m 434.5000 79.2500 L S U u 434.5000 80.2500 m 434.5000 80.5000 L S U u 434.5000 81.7500 m 434.5000 82.0000 L S U u 434.5000 83.2500 m 434.5000 83.5000 L S U u 434.5000 84.7500 m 434.5000 85.0000 L S U u 434.5000 86.0000 m 434.5000 86.2500 L S U u 434.5000 87.5000 m 434.5000 87.7500 L S U u 434.5000 89.0000 m 434.5000 89.2500 L S U u 434.5000 90.5000 m 434.5000 90.7500 L S U u 434.5000 91.7500 m 434.5000 92.0000 L S U u 434.5000 93.2500 m 434.5000 93.5000 L S U u 434.5000 94.7500 m 434.5000 95.0000 L S U u 434.5000 96.2500 m 434.5000 96.5000 L S U u 434.5000 97.5000 m 434.5000 97.7500 L S U u 434.5000 99.0000 m 434.5000 99.2500 L S U u 434.5000 100.5000 m 434.5000 100.7500 L S U u 434.5000 102.0000 m 434.5000 102.2500 L S U u 434.5000 103.2500 m 434.5000 103.5000 L S U u 434.5000 104.7500 m 434.5000 105.0000 L S U u 434.5000 106.2500 m 434.5000 106.5000 L S U u 434.5000 107.7500 m 434.5000 108.0000 L S U u 434.5000 109.0000 m 434.5000 109.2500 L S U u 434.5000 110.5000 m 434.5000 110.7500 L S U u 434.5000 112.0000 m 434.5000 112.2500 L S U u 434.5000 113.5000 m 434.5000 113.7500 L S U u 434.5000 114.7500 m 434.5000 115.0000 L S U u 434.5000 116.2500 m 434.5000 116.5000 L S U u 434.5000 117.7500 m 434.5000 118.0000 L S U u 434.5000 119.2500 m 434.5000 119.5000 L S U u 434.5000 120.7500 m 434.5000 120.7500 L S U u 434.5000 122.0000 m 434.5000 122.2500 L S U u 434.5000 123.5000 m 434.5000 123.7500 L S U u 434.5000 125.0000 m 434.5000 125.2500 L S U u 434.5000 126.5000 m 434.5000 126.5000 L S U u 434.5000 127.7500 m 434.5000 128.0000 L S U u 434.5000 129.2500 m 434.5000 129.5000 L S U u 434.5000 130.7500 m 434.5000 131.0000 L S U u 434.5000 132.2500 m 434.5000 132.5000 L S U u 434.5000 133.5000 m 434.5000 133.7500 L S U u 434.5000 135.0000 m 434.5000 135.2500 L S U u 434.5000 136.5000 m 434.5000 136.7500 L S U u 434.5000 138.0000 m 434.5000 138.2500 L S U u 434.5000 139.2500 m 434.5000 139.5000 L S U u 434.5000 140.7500 m 434.5000 141.0000 L S U u 434.5000 142.2500 m 434.5000 142.5000 L S U u 434.5000 143.7500 m 434.5000 144.0000 L S U u 434.5000 145.0000 m 434.5000 145.2500 L S U u 434.5000 146.5000 m 434.5000 146.7500 L S U u 434.5000 148.0000 m 434.5000 148.2500 L S U u 434.5000 149.5000 m 434.5000 149.7500 L S U u 434.5000 150.7500 m 434.5000 151.0000 L S U u 434.5000 152.2500 m 434.5000 152.5000 L S U u 434.5000 153.7500 m 434.5000 154.0000 L S U u 434.5000 155.2500 m 434.5000 155.5000 L S U u 434.5000 156.5000 m 434.5000 156.7500 L S U u 434.5000 158.0000 m 434.5000 158.2500 L S U u 434.5000 159.5000 m 434.5000 159.7500 L S U u 434.5000 161.0000 m 434.5000 161.2500 L S U u 434.5000 162.2500 m 434.5000 162.5000 L S U u 434.5000 163.7500 m 434.5000 164.0000 L S U u 433.7500 164.5000 m 433.5000 164.5000 L S U u 432.5000 164.5000 m 432.2500 164.5000 L S U u 431.0000 164.5000 m 430.7500 164.5000 L S U u 429.5000 164.5000 m 429.2500 164.5000 L S U u 428.0000 164.5000 m 427.7500 164.5000 L S U u 426.5000 164.5000 m 426.5000 164.5000 L S U u 425.2500 164.5000 m 425.0000 164.5000 L S U u 423.7500 164.5000 m 423.5000 164.5000 L S U u 422.2500 164.5000 m 422.0000 164.5000 L S U u 420.7500 164.5000 m 420.5000 164.5000 L S U u 419.5000 164.5000 m 419.2500 164.5000 L S U u 418.0000 164.5000 m 417.7500 164.5000 L S U u 416.5000 164.5000 m 416.2500 164.5000 L S U u 415.0000 164.5000 m 414.7500 164.5000 L S U u 413.7500 164.5000 m 413.5000 164.5000 L S U u 412.2500 164.5000 m 412.0000 164.5000 L S U u 410.7500 164.5000 m 410.5000 164.5000 L S U u 409.2500 164.5000 m 409.0000 164.5000 L S U u 408.0000 164.5000 m 407.7500 164.5000 L S U u 406.5000 164.5000 m 406.2500 164.5000 L S U u 405.0000 164.5000 m 404.7500 164.5000 L S U u 403.5000 164.5000 m 403.2500 164.5000 L S U u 402.2500 164.5000 m 402.0000 164.5000 L S U u 400.7500 164.5000 m 400.5000 164.5000 L S U u 399.2500 164.5000 m 399.0000 164.5000 L S U u 397.7500 164.5000 m 397.5000 164.5000 L S U u 396.5000 164.5000 m 396.2500 164.5000 L S U u 395.0000 164.5000 m 394.7500 164.5000 L S U u 393.5000 164.5000 m 393.2500 164.5000 L S U u 392.0000 164.5000 m 391.7500 164.5000 L S U u 390.7500 164.5000 m 390.5000 164.5000 L S U u 389.2500 164.5000 m 389.0000 164.5000 L S U u 387.7500 164.5000 m 387.5000 164.5000 L S U u 386.2500 164.5000 m 386.0000 164.5000 L S U u 385.0000 164.5000 m 384.7500 164.5000 L S U u 383.5000 164.5000 m 383.2500 164.5000 L S U u 382.0000 164.5000 m 381.7500 164.5000 L S U u 380.5000 164.5000 m 380.2500 164.5000 L S U u 379.0000 164.5000 m 379.0000 164.5000 L S U u 377.7500 164.5000 m 377.5000 164.5000 L S U u 376.2500 164.5000 m 376.0000 164.5000 L S U u 374.7500 164.5000 m 374.5000 164.5000 L S U u 373.2500 164.5000 m 373.2500 164.5000 L S U u 372.0000 164.5000 m 371.7500 164.5000 L S U u 370.5000 164.5000 m 370.2500 164.5000 L S U u 369.0000 164.5000 m 368.7500 164.5000 L S U u 367.5000 164.5000 m 367.2500 164.5000 L S U u 366.2500 164.5000 m 366.0000 164.5000 L S U u 364.7500 164.5000 m 364.5000 164.5000 L S U u 363.2500 164.5000 m 363.0000 164.5000 L S U u 361.7500 164.5000 m 361.5000 164.5000 L S U u 360.5000 164.5000 m 360.2500 164.5000 L S U u 359.7500 163.7500 m 359.7500 163.5000 L S U u 359.7500 162.2500 m 359.7500 162.0000 L S U u 359.7500 160.7500 m 359.7500 160.5000 L S U u 359.7500 159.2500 m 359.7500 159.0000 L S U u 359.7500 158.0000 m 359.7500 157.7500 L S U u 359.7500 156.5000 m 359.7500 156.2500 L S U u 359.7500 155.0000 m 359.7500 154.7500 L S U u 359.7500 153.5000 m 359.7500 153.2500 L S U u 359.7500 152.2500 m 359.7500 152.0000 L S U u 359.7500 150.7500 m 359.7500 150.5000 L S U u 359.7500 149.2500 m 359.7500 149.0000 L S U u 359.7500 147.7500 m 359.7500 147.5000 L S U u 359.7500 146.5000 m 359.7500 146.2500 L S U u 359.7500 145.0000 m 359.7500 144.7500 L S U u 359.7500 143.5000 m 359.7500 143.2500 L S U u 359.7500 142.0000 m 359.7500 141.7500 L S U u 359.7500 140.7500 m 359.7500 140.5000 L S U u 359.7500 139.2500 m 359.7500 139.0000 L S U u 359.7500 137.7500 m 359.7500 137.5000 L S U u 359.7500 136.2500 m 359.7500 136.0000 L S U u 359.7500 135.0000 m 359.7500 134.7500 L S U u 359.7500 133.5000 m 359.7500 133.2500 L S U u 359.7500 132.0000 m 359.7500 131.7500 L S U u 359.7500 130.5000 m 359.7500 130.2500 L S U u 359.7500 129.2500 m 359.7500 129.0000 L S U u 359.7500 127.7500 m 359.7500 127.5000 L S U u 359.7500 126.2500 m 359.7500 126.0000 L S U u 359.7500 124.7500 m 359.7500 124.5000 L S U u 359.7500 123.5000 m 359.7500 123.2500 L S U u 359.7500 122.0000 m 359.7500 121.7500 L S U u 359.7500 120.5000 m 359.7500 120.2500 L S U u 359.7500 119.0000 m 359.7500 118.7500 L S U u 359.7500 117.7500 m 359.7500 117.5000 L S U u 359.7500 116.2500 m 359.7500 116.0000 L S U u 359.7500 114.7500 m 359.7500 114.5000 L S U u 359.7500 113.2500 m 359.7500 113.0000 L S U u 359.7500 112.0000 m 359.7500 111.7500 L S U u 359.7500 110.5000 m 359.7500 110.2500 L S U u 359.7500 109.0000 m 359.7500 108.7500 L S U u 359.7500 107.5000 m 359.7500 107.2500 L S U u 359.7500 106.0000 m 359.7500 106.0000 L S U u 359.7500 104.7500 m 359.7500 104.5000 L S U u 359.7500 103.2500 m 359.7500 103.0000 L S U u 359.7500 101.7500 m 359.7500 101.5000 L S U u 359.7500 100.2500 m 359.7500 100.0000 L S U u 359.7500 99.0000 m 359.7500 98.7500 L S U u 359.7500 97.5000 m 359.7500 97.2500 L S U u 359.7500 96.0000 m 359.7500 95.7500 L S U u 359.7500 94.5000 m 359.7500 94.2500 L S U u 359.7500 93.2500 m 359.7500 93.0000 L S U u 359.7500 91.7500 m 359.7500 91.5000 L S U u 359.7500 90.2500 m 359.7500 90.0000 L S U u 359.7500 88.7500 m 359.7500 88.5000 L S U u 359.7500 87.5000 m 359.7500 87.2500 L S U u 359.7500 86.0000 m 359.7500 85.7500 L S U u 359.7500 84.5000 m 359.7500 84.2500 L S U u 359.7500 83.0000 m 359.7500 82.7500 L S U u 359.7500 81.7500 m 359.7500 81.5000 L S U u 359.7500 80.2500 m 359.7500 80.0000 L S U u 359.7500 78.7500 m 359.7500 78.5000 L S U u 359.7500 77.2500 m 359.7500 77.0000 L S U u 359.7500 76.0000 m 359.7500 75.7500 L S U u 359.7500 74.5000 m 359.7500 74.2500 L S U u 359.7500 73.0000 m 359.7500 72.7500 L S U u 359.7500 71.5000 m 359.7500 71.2500 L S U u 359.7500 70.2500 m 359.7500 70.0000 L S U u 359.7500 68.7500 m 359.7500 68.5000 L S U u 359.7500 67.2500 m 359.7500 67.0000 L S U u 359.7500 65.7500 m 359.7500 65.5000 L S U u 359.7500 64.5000 m 359.7500 64.2500 L S U u 359.7500 63.0000 m 359.7500 62.7500 L S U u 359.7500 61.5000 m 359.7500 61.2500 L S U u 359.7500 60.0000 m 359.7500 59.7500 L S U u 359.7500 58.7500 m 359.7500 58.5000 L S U u 359.7500 57.2500 m 359.7500 57.0000 L S U u 359.7500 55.7500 m 359.7500 55.5000 L S U u 0.000 0.000 0.000 0.000 k 0.7500 w 366.5000 134.0000 m 427.2500 134.0000 L 427.2500 148.7500 L 366.5000 148.7500 L 366.5000 134.0000 L B U 0 To 1 0 0 1 370.75 138.5 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0.000 0.000 0.000 1.000 K 0 j 0.000 0.000 0.000 1.000 k (Sub-Div-Mult\r) Tx TO u 0.000 0.000 0.000 0.000 k 0.7500 w 1 j 366.5000 70.0000 m 427.2500 70.0000 L 427.2500 133.0000 L 366.5000 133.0000 L 366.5000 70.0000 L B U 0 To 1 0 0 1 370.5 109.5 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.0000 w 0 j 0.000 0.000 0.000 1.000 k (first\r) Tx TO 0 To 1 0 0 1 394 98.75 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (second\r) Tx TO 0 To 1 0 0 1 370.5 88 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (third\r) Tx TO 0 To 1 0 0 1 400 77.25 0 Tp TP /_Helvetica 9.5000 Tf 0.0000 Tc 0 Tr 0.000 0.000 0.000 1.000 k (fourth\r) Tx TO %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI3 /terminate get exec Adobe_typography_AI3 /terminate get exec Adobe_customcolor /terminate get exec Adobe_cshow /terminate get exec Adobe_packedarray /terminate get exec %%EOF %%EndDocument @endspecial 505 1741 a Fv(Figure)27 b(3:)36 b(Co)r(de,)28 b(data,)f(and)h(op)r(eration)e(sp)r(ecializations)h(for)g(the)h (Gaussian)e(primitiv)n(e.)p 674 2004 2533 4 v 672 2104 4 100 v 761 2074 a Fp(Precision)p 1229 2104 V 1245 2104 V 147 w(Lev)m(el)32 b(I)p 1621 2104 V 90 w(Lev)m(el)g(I)s(I)p 2037 2104 V 89 w(Lev)m(el)g(I)s(I)s(I)p 2491 2104 V 2507 2104 V 105 w(Lev)m(el)g(I)s(I)s(I)g(\(opt\))p 3205 2104 V 674 2107 2533 4 v 672 2207 4 100 v 932 2177 a Fv(1)p 1229 2207 V 1245 2207 V 1621 2207 V 872 w(3.29)p 2037 2207 V 306 w(3.94)p 2491 2207 V 2507 2207 V 564 w(2.32)p 3205 2207 V 674 2210 2533 4 v 672 2310 4 100 v 911 2280 a(10)p 1229 2310 V 1245 2310 V 1621 2310 V 851 w(3.42)p 2037 2310 V 306 w(3.94)p 2491 2310 V 2507 2310 V 564 w(2.36)p 3205 2310 V 674 2313 2533 4 v 672 2413 4 100 v 719 2383 a(IEEE)26 b(double)p 1229 2413 V 1245 2413 V 244 w(0.03)p 1621 2413 V 267 w(3.46)p 2037 2413 V 306 w(3.99)p 2491 2413 V 2507 2413 V 564 w(2.38)p 3205 2413 V 674 2416 2533 4 v 672 2516 4 100 v 890 2486 a(100)p 1229 2516 V 1245 2516 V 1621 2516 V 830 w(3.48)p 2037 2516 V 306 w(4.15)p 2491 2516 V 2507 2516 V 564 w(2.39)p 3205 2516 V 674 2519 2533 4 v -152 2672 a(T)-7 b(able)31 b(1:)42 b(Execution)30 b(times)h(\(in)g(seconds\))f(for)g(1000)f (determinan)n(t)h(ev)-5 b(aluations)30 b(on)h(a)f(SUN)h(UltraSparc)f (at)g(v)-5 b(arious)29 b(accuracy)-152 2772 y(lev)n(els)e(for)g (di\013eren)n(t)h(amoun)n(ts)f(of)g(precision)g(\(in)h(bits\).)p 693 2908 2496 4 v 691 3008 4 100 v 738 2978 a Fp(Input)k(Size)p 1211 3008 V 1227 3008 V 104 w(Lev)m(el)g(I)p 1603 3008 V 90 w(Lev)m(el)g(I)s(I)p 2018 3008 V 90 w(Lev)m(el)g(I)s(I)s(I)p 2473 3008 V 2489 3008 V 104 w(Lev)m(el)g(I)s(I)s(I)g(\(opt\))p 3187 3008 V 693 3011 2496 4 v 691 3111 4 100 v 911 3081 a Fv(12)p 1211 3111 V 1227 3111 V 375 w(0.001)p 1603 3111 V 267 w(0.08)p 2018 3111 V 305 w(0.99)p 2473 3111 V 2489 3111 V 565 w(0.58)p 3187 3111 V 693 3114 2496 4 v 691 3214 4 100 v 911 3184 a(20)p 1211 3214 V 1227 3214 V 375 w(0.006)p 1603 3214 V 267 w(0.49)p 2018 3214 V 305 w(7.58)p 2473 3214 V 2489 3214 V 565 w(3.55)p 3187 3214 V 693 3217 2496 4 v 691 3317 4 100 v 911 3287 a(28)p 1211 3317 V 1227 3317 V 375 w(0.022)p 1603 3317 V 267 w(1.79)p 2018 3317 V 264 w(30.38)p 2473 3317 V 2489 3317 V 522 w(15.69)p 3187 3317 V 693 3320 2496 4 v 691 3420 4 100 v 911 3390 a(36)p 1211 3420 V 1227 3420 V 375 w(0.060)p 1603 3420 V 267 w(9.38)p 2018 3420 V 264 w(88.40)p 2473 3420 V 2489 3420 V 522 w(44.41)p 3187 3420 V 693 3423 2496 4 v -152 3577 a(T)-7 b(able)31 b(2:)44 b(Execution)30 b(times)h(\(in)h(seconds\))f(for)f(Delauney)h(triangulation)f(on)h(a)f (SUN)i(UltraSparc)e(at)h(v)-5 b(arious)30 b(accuracy)f(lev)n(els)-152 3676 y(for)e(di\013eren)n(t)h(n)n(um)n(b)r(ers)f(of)h(co)r(circular)e (p)r(oin)n(ts.)-152 3835 y(ble)35 b(2)f(rep)r(orts)f(the)i(execution)f (times)h(for)f(four)g(input)h(sizes,)-152 3935 y(corresp)r(onding)f(to) i(di\013eren)n(t)f(n)n(um)n(b)r(ers)h(of)f(\(exactly\))h(co)r(cir-)-152 4034 y(cular)28 b(p)r(oin)n(ts.)41 b(Note)29 b(that)h(co)r(circular)d (p)r(oin)n(ts)i(are)f(the)h(w)n(orst)-152 4134 y(case)g(for)g(Lev)n(el) g(I)r(I)r(I.)h Fp(Lev)m(el)k(I)s(I)s(I)g(\(opt\))c Fv(corresp)r(onds)d (to)j(the)-152 4234 y(optimization)39 b(of)g(expressions)f(in)h(the)h (b)r(o)r(dy)f(of)g(the)h(triply)-152 4333 y(nested)28 b(lo)r(op.)-40 4433 y(These)f(results)f(sho)n(w)f(the)i(same)f(trends)g (as)g(the)h(Gaussian)-152 4533 y(example:)42 b(Lev)n(el)30 b(I)r(I)h(ev)-5 b(aluation)29 b(is)h(up)h(to)f(150)f(times)i(slo)n(w)n (er)-152 4632 y(than)h(Lev)n(el)f(I,)g(and)h(Lev)n(el)f(I)r(I)r(I)h (con)n(tributes)f(a)g(further)g(slo)n(w-)-152 4732 y(do)n(wn)38 b(of)f(up)i(to)e(10)g(times)h(b)r(ecause)g(of)g(its)g(use)f(of)h (expres-)-152 4831 y(sion)j(trees.)78 b(As)41 b(b)r(efore,)k(the)d (transformations)d(describ)r(ed)-152 4931 y(in)32 b(Section)g(4)g(are)f (v)n(ery)f(e\013ectiv)n(e,)j(impro)n(ving)e(p)r(erformance)-152 5031 y(of)i(Lev)n(el)f(I)r(I)r(I)i(b)n(y)f(as)f(m)n(uc)n(h)h(as)f(a)h (factor)f(of)h(t)n(w)n(o)f(despite)h(b)r(e-)-152 5130 y(ing)e(applied)g(on)g(a)g(v)n(ery)f(small)h(p)r(ortion)f(of)h(the)h(o) n(v)n(erall)d(pro-)-152 5230 y(gram.)k(Similar)19 b(tec)n(hniques)f (applied)h(o)n(v)n(er)f(the)h(complete)g(pro-)-152 5330 y(gram)f(ha)n(v)n(e)g(the)i(p)r(oten)n(tial)f(of)g(approac)n(hing)e (the)j(p)r(erformance)2040 3835 y(of)39 b(hand-co)r(ded)f (optimizations.)69 b(As)39 b(anecdotal)f(evidence,)2040 3935 y(researc)n(hers)32 b(ha)n(v)n(e)i(sho)n(wn)h(that)g(pure)g(ob)5 b(ject-orien)n(ted)34 b(lan-)2040 4034 y(guages)29 b(suc)n(h)h(as)g (Smalltalk)h([31)o(],)g(SELF)g([8)o(],)h(Cecil)f([9)o(],)h(and)2040 4134 y(ICC++)c([28)o(],)h(whic)n(h)g(share)e(the)i(same)f(computation)g (struc-)2040 4234 y(ture)d(as)g(EGC)g(computations)g(\(and)h(whose)e (execution)h(times)2040 4333 y(are)19 b(often)h(t)n(w)n(o)e(to)i(three) f(orders)f(of)i(magnitude)f(w)n(orse)f(than)i Fu(C)p Fv(\))2040 4433 y(can,)35 b(with)e(aggressiv)n(e)e(compiler)i(tec)n (hnology)-7 b(,)33 b(ac)n(hiev)n(e)f(p)r(er-)2040 4533 y(formance)j(within)h(a)e(factor)h(of)g(2)g(to)g(5)g(of)g(a)g (comparable)f Fu(C)2040 4632 y Fv(program.)2040 4857 y Fw(6)82 b(CONCLUSION)2040 5039 y Fv(Our)24 b(Core)f(Library)f (represen)n(ts)h(a)h(no)n(v)n(el)f(API)h(for)f(robust)h(n)n(u-)2040 5138 y(meric)41 b(and)g(geometric)f(computation.)77 b(Its)42 b(most)f(striking)2040 5238 y(feature)24 b(is)g(a)g(nearly)g (transparen)n(t)e(in)n(tegration)h(with)i(con)n(v)n(en-)2040 5338 y(tional)f Fu(C/C++)e Fv(programming.)34 b(W)-7 b(e)25 b(b)r(eliev)n(e)f(suc)n(h)g(ease)g(of)g(use)p eop %%Page: 9 9 9 8 bop -152 -69 a Fv(is)21 b(a)f(necessary)f(prerequisite)g(for)h (robustness)g(researc)n(h)e(to)j(im-)-152 31 y(pact)34 b(programs)e(in)i(the)h(real)e(w)n(orld.)55 b(This)34 b(pap)r(er)g(has)f(also)-152 131 y(demonstrated)24 b(the)h(e\016ciency) g(gains)f(p)r(ossible)g(using)h(sev)n(eral)-152 230 y(automatic)20 b(optimization)g(tec)n(hniques.)35 b(In)20 b(general,)h(researc)n(h) -152 330 y(is)36 b(just)g(b)r(eginning)f(in)h(the)g(area)e(of)h (optimizing)h(Exact)e(Ge-)-152 429 y(ometric)39 b(Computation)h (\(EGC\))f(tec)n(hniques)g(in)h(a)f(con)n(text)-152 529 y(that)34 b(m)n(ust)f(balance)g(the)h(demands)f(of)g(ob)5 b(ject-orien)n(ted)32 b(de-)-152 629 y(sign)27 b(with)i(the)f(need)f (for)g(co)r(de)h(e\016ciency)-7 b(.)-152 827 y Fw(References)-116 967 y Fd([1])36 b(S.)25 b(P)-6 b(.)25 b(Amarasinghe,)f(J.)g(M.)g (Anderson,)h(M.)f(S.)h(Lam,)f(and)h(C.)g(W.)-5 1042 y(Tseng.)55 b(The)32 b(SUIF)g(compiler)d(for)i(scalable)h(parallel)f(mac)n(hines.) -5 1117 y(In)21 b Fc(Pr)l(o)l(c)l(e)l(e)l(dings)k(of)d(the)g(7th)h (SIAM)g(Confer)l(enc)l(e)f(on)h(Par)l(al)t(lel)h(Pr)l(o-)-5 1191 y(c)l(essing)i(for)g(Scienti\014c)e(Computing)p Fd(,)g(1995.)-116 1294 y([2])36 b(H.)31 b(Br\177)-35 b(onnimann,)32 b(C.)e(Burnik)n(el,)i(and)g(S.)f(Pion.)53 b(In)n(terv)l(al)32 b(arith-)-5 1369 y(metic)19 b(yields)g(e\016cien)n (t)i(dynamic)e(\014lters)g(for)g(Computation)h(Geom-)-5 1444 y(etry)-6 b(.)28 b Fc(A)n(CM)23 b(Symp.)g(on)h(Computational)h(Ge) l(ometry)p Fd(,)c(14:165{174,)-5 1518 y(1998.)-116 1621 y([3])36 b(H.)23 b(Br\177)-35 b(onnimann,)21 b(I.)i(Emiris,)d(V.)i(P)n (an,)h(and)h(S.)e(Pion.)30 b(Computing)-5 1696 y(exact)36 b(geometric)d(predicates)i(using)f(mo)r(dular)e(arithmetic)i(with)-5 1771 y(single)26 b(precision.)36 b Fc(A)n(CM)27 b(Symp.)h(on)g (Computational)h(Ge)l(ometry)p Fd(,)-5 1845 y(13:174{182,)d(1997.)-116 1948 y([4])36 b(C.)24 b(Burnik)n(el,)f(R.)g(Fleisc)n(her,)g(K.)h (Mehlhorn,)f(and)h(S.)g(Sc)n(hirra.)31 b(Ex-)-5 2023 y(act)d(geometric)f(computation)g(made)f(easy)-6 b(.)41 b(In)27 b Fc(Pr)l(o)l(c.)j(15th)f(A)n(CM)-5 2098 y(Symp.)d(Comp.)h(Ge)l (om.)p Fd(,)d(1999.)32 b(T)-6 b(o)24 b(App)r(ear.)-116 2201 y([5])36 b(C.)31 b(Burnik)n(el,)h(S.)e(F)-6 b(unk)n(e,)34 b(and)d(M.)f(Seel.)54 b(Exact)32 b(arithmetic)e(us-)-5 2275 y(ing)e(cascaded)g(computation.)43 b Fc(A)n(CM)28 b(Symp.)h(on)h(Computational)-5 2350 y(Ge)l(ometry)p Fd(,)24 b(14:175{183,)h(1998.)-116 2453 y([6])36 b(C.)53 b(Burnik)n(el,)59 b(J.)53 b(K\177)-35 b(onnemann,)60 b(K.)52 b(Mehlhorn,)59 b(S.)53 b(N\177)-35 b(aher,)-5 2528 y(S.)29 b(Sc)n(hirra,)g(and)g(C.)f(Uhrig.)45 b(Exact)30 b(geometric)e(computation)i(in)-5 2602 y(LED)n(A.)65 b(In)36 b Fc(Pr)l(o)l(c.)h(11th)g(A)n(CM)f(Symp.)g(Comp.)i(Ge)l(om.)p Fd(,)g(pages)-5 2677 y(C18{C19,)25 b(1995.)-116 2780 y([7])36 b(F.)21 b(Chaitin-Chatelin)h(and)g(V.)e(F)-6 b(ra)n(yss)n(\023)-33 b(e.)27 b Fc(L)l(e)l(ctur)l(es)d(on)g(Finite)f (Pr)l(e-)-5 2855 y(cision)38 b(Computations)p Fd(.)70 b(So)r(ciet)n(y)38 b(for)d(Industrial)i(and)g(Applied)-5 2929 y(Mathematics,)24 b(Philadelphia,)f(1996.)-116 3032 y([8])36 b(C.)f(Cham)n(b)r(ers)e(and)j(D.)e(Ungar.)63 b(Customization:)54 b(Optimizing)-5 3107 y(compiler)30 b(tec)n(hnology)i(for)e(S)p Fb(elf)p Fd(,)i(a)e(dynamically-t)n(yp)r (ed)h(ob)t(ject-)-5 3182 y(orien)n(ted)21 b(programming)d(language.)26 b(In)20 b Fc(Pr)l(o)l(c)l(e)l(e)l(dings)k(of)e(PLDI'89)p Fd(,)-5 3256 y(pages)j(146{60,)g(1989.)-116 3359 y([9])36 b(J.)25 b(Dean,)g(G.)g(DeF)-6 b(ou)n(w,)26 b(D.)e(Gro)n(v)n(e,)i(V.)e (Litvino)n(v,)h(and)h(C.)e(Cham-)-5 3434 y(b)r(ers.)61 b(V)-6 b(ortex:)51 b(An)34 b(optimizing)e(compiler)g(for)h(ob)t (ject-orien)n(ted)-5 3509 y(languages.)g(In)24 b Fc(Pr)l(o)l(c)l(e)l(e) l(dings)k(of)d(OOPSLA'96)p Fd(,)f(1996.)-152 3611 y([10])37 b(O.)18 b(Devillers)f(and)i(F.)e(Preparata.)23 b(A)18 b(probabilistic)g(analysis)g(of)g(the)-5 3686 y(p)r(o)n(w)n(er)28 b(of)e(arithmetic)h(\014lters.)40 b(T)-6 b(ec)n(hnical)28 b(Rep)r(ort)f(2971,)i(INRIA,)-5 3761 y(1996.)-152 3864 y([11])37 b(J.)26 b(Dolb)n(y)f(and)h(A.)f(Chien.)36 b(An)25 b(ev)l(aluation)i(of)e(ob)t(ject)i(inline)e(allo-)-5 3939 y(cation)g(tec)n(hniques.)33 b(In)24 b Fc(OOPSLA'98)i(Pr)l(o)l(c)l (e)l(e)l(dings)p Fd(,)f(1998.)-152 4041 y([12])37 b(S.)28 b(F)-6 b(ortune)30 b(and)e(C.)g(v)l(an)h(Wyk.)45 b(E\016cien)n(t)29 b(exact)h(arithmetic)d(for)-5 4116 y(computational)c(geometry)-6 b(.)28 b(In)22 b Fc(A)n(CM)h(Symp)l(osium)j(on)e(Computa-)-5 4191 y(tional)j(Ge)l(ometry)p Fd(,)c(pages)h(163{172,)i(1993.)-152 4294 y([13])37 b(S.)28 b(J.)g(F)-6 b(ortune)30 b(and)f(C.)e(J.)h(v)l (an)h(Wyk.)46 b(LN)28 b(User)g(Man)n(ual,)h(1993.)-5 4368 y(A)-6 b(T&T)24 b(Bell)f(Lab)r(oratories.)-152 4471 y([14])37 b(S.)27 b(J.)f(F)-6 b(ortune)27 b(and)g(C.)f(J.)g(v)l(an)h (Wyk.)40 b(Static)28 b(analysis)e(yields)g(ef-)-5 4546 y(\014cien)n(t)g(exact)f(in)n(teger)g(arithmetic)f(for)f(computational) i(geometry)-6 b(.)-5 4621 y Fc(A)n(CM)26 b(T)-5 b(r)l(ansactions)26 b(on)h(Gr)l(aphics)p Fd(,)d(15\(3\):223{248,)j(1996.)-152 4724 y([15])37 b(D.)29 b(Grun)n(w)n(ald)h(and)f(B.)g(Zorn.)48 b(CustoMallo)r(c:)42 b(E\016cien)n(t)30 b(syn)n(the-)-5 4798 y(sized)18 b(memory)e(allo)r(cators.)21 b Fc(Softwar)l(e:)31 b(Pr)l(actic)l(e)21 b(and)g(Exp)l(erienc)l(e)p Fd(,)-5 4873 y(23\(8\),)k(1993.)-152 4976 y([16])37 b(U.)50 b(H\177)-35 b(olzle,)56 b(C.)49 b(Cham)n(b)r(ers,)55 b(and)50 b(D.)g(Ungar.)109 b(Optimizing)-5 5051 y(dynamically-t)n(yp)r(ed)25 b(ob)t(ject-orien)n (ted)i(languages)f(with)e(p)r(olymor-)-5 5125 y(phic)g(inline)f(cac)n (hes.)33 b(In)24 b Fc(Pr)l(o)l(c)l(e)l(e)l(dings)k(of)e(ECOOP'91)p Fd(,)d(1991.)-152 5228 y([17])37 b(Cart3D)25 b(Homepage,)f(1998.)34 b(Homepage)25 b(for)f(adaptiv)n(e)h(Cartesian)-5 5303 y(mesh)e(generation.)i(URL)-5 5378 y Fa(http://george.arc.nasa)q(.go)q (v/~a)q(fto)q(smis)q(/ca)q(rt3d)q(/ca)q(rt3d)q(.ht)q(ml)p Fd(.)2040 -69 y([18])37 b(CGAL)f(Homepage,)i(1998.)66 b(Computational)36 b(Geometry)f(Algo-)2187 6 y(rithms)29 b(Library)g(\(CGAL\))i(Pro)t(ject.)f(A)g(7-institution)h(Europ)r(ean) 2187 81 y(Comm)n(unit)n(y)22 b(e\013ort.)i(See)h(URL)e Fa(http://www.cs.ruu.nl/)p Fd(.)2040 174 y([19])37 b(CORE)47 b(Homepage,)52 b(1998.)101 b(Core)46 b(Library)g(Pro)t(ject:)78 b(URL)2187 249 y Fa(http://cs.nyu.edu/exac)q(t/co)q(re/)p Fd(.)2040 342 y([20])37 b(M.)28 b(Karasic)n(k,)i(D.)f(Lieb)r(er,)h(and) f(L.)g(R.)g(Nac)n(kman.)47 b(E\016cien)n(t)30 b(de-)2187 417 y(launey)23 b(triangulation)f(using)f(rational)h(arithmetic.)27 b Fc(A)n(CM)c(T)-5 b(r)l(ans-)2187 492 y(actions)26 b(on)g(Gr)l(aphics) p Fd(,)f(10:71{91,)g(1991.)2040 585 y([21])37 b(G.)19 b(Liotta,)i(F.)e(Preparata,)i(and)f(R.)f(T)-6 b(amassia.)22 b(Robust)f(pro)n(ximit)n(y)2187 660 y(queries:)52 b(an)34 b(illustration)g(of)f(degree-driv)n(en)i(algorithm)e(design.)2187 735 y Fc(A)n(CM)20 b(Symp.)g(on)h(Computational)h(Ge)l(ometry)p Fd(,)c(13:156{165,)j(1997.)2040 828 y([22])37 b(K.)23 b(Mehlhorn)g(and)h(S.)f(N\177)-35 b(aher.)30 b(LED)n(A:)23 b(a)g(platform)f(for)g(com)n(bina-)2187 903 y(torial)h(and)i(geometric) e(computing.)32 b Fc(CA)n(CM)p Fd(,)23 b(38:96{102,)i(1995.)2040 996 y([23])37 b(S.)d(Oc)n(k)n(en,)j(J.)d(T.)g(Sc)n(h)n(w)n(artz,)j(and) e(M.)e(Sharir.)62 b(Precise)34 b(imple-)2187 1071 y(men)n(tation)e(of)g (CAD)f(primitiv)n(es)f(using)h(rational)h(parameteriza-)2187 1146 y(tion)c(of)e(standard)i(surfaces.)40 b(In)28 b(J.)e(Hop)r(croft,) i(J.)e(Sc)n(h)n(w)n(artz,)j(and)2187 1221 y(M.)c(Sharir,)f(editors,)i Fc(Planning,)i(Ge)l(ometry,)g(and)g(Complexity)f(of)2187 1295 y(R)l(ob)l(ot)h(Motion)p Fd(,)d(pages)h(245{266.)h(Ablex)e(Pub.)g (Corp.,)g(Norw)n(o)r(o)r(d,)2187 1370 y(NJ,)e(1987.)2040 1463 y([24])37 b(K.)27 b(Ouc)n(hi.)42 b(Real/Expr:)c(Implemen)n(tation) 28 b(of)f(an)g(exact)i(compu-)2187 1538 y(tation)i(pac)n(k)l(age.)50 b(Master's)29 b(thesis,)i(New)e(Y)-6 b(ork)29 b(Univ)n(ersit)n(y)-6 b(,)31 b(De-)2187 1613 y(partmen)n(t)d(of)f(Computer)g(Science,)j (Couran)n(t)e(Institute,)i(Jan)n(uary)2187 1688 y(1997.)2040 1781 y([25])37 b(M.)25 b(Ov)n(ermars.)37 b(Designing)26 b(the)h(computational)f(geometry)h(algo-)2187 1856 y(rithms)16 b(library)g(CGAL.)22 b(In)c(M.)e(C.)h(Lin)g(and)h(D.)f(Mano)r(c)n(ha,)j (editors,)2187 1930 y Fc(Applie)l(d)29 b(Computational)g(Ge)l(ometry:) 35 b(T)-5 b(owar)l(ds)29 b(Ge)l(ometric)e(En-)2187 2005 y(gine)l(ering)p Fd(,)18 b(pages)f(53{58,)j(Berlin,)d(1996.)h (Springer.)i(Lecture)e(Notes)2187 2080 y(in)24 b(Comp.)e(Sci.)h(No.)h (1148.)2040 2173 y([26])37 b(D.)32 b(A.)f(P)n(atterson)i(and)g(J.)f(L.) g(Hennessy)-6 b(.)57 b Fc(Computer)34 b(A)n(r)l(chite)l(c-)2187 2248 y(tur)l(e:)e(a)25 b(Quantitative)e(Appr)l(o)l(ach)p Fd(.)31 b(Morgan)22 b(Kaufmann)f(Publish-)2187 2323 y(ers,)g(Inc.,)h (San)f(Mateo,)h(California,)e(1990.)28 b(\(with)22 b(an)f(app)r(endix)h (on)2187 2398 y(Computer)i(Arithmetic)e(b)n(y)i(Da)n(vid)g(Goldb)r (erg\).)2040 2491 y([27])37 b(J.)22 b(Plevy)n(ak)i(and)f(A.)e(A.)h (Chien.)29 b(Precise)22 b(concrete)j(t)n(yp)r(e)e(inference)2187 2566 y(of)d(ob)t(ject-orien)n(ted)i(programs.)j(In)20 b Fc(Pr)l(o)l(c)l(e)l(e)l(dings)25 b(of)e(OOPSLA'94)p Fd(,)2187 2640 y(pages)i(324{340,)g(1994.)2040 2734 y([28])37 b(J.)22 b(Plevy)n(ak,)i(X.)d(Zhang,)j(and)f(A.)e(A.)h(Chien.)30 b(Optimizing)21 b(sequen-)2187 2809 y(tial)31 b(e\016ciency)h(for)e (concurren)n(t)i(ob)t(ject-orien)n(ted)g(languages.)54 b(In)2187 2883 y Fc(Pr)l(o)l(c)l(e)l(e)l(dings)28 b(of)e(POPL'95)p Fd(,)e(1995.)2040 2977 y([29])37 b(J.)j(Sellen,)k(J.)c(Choi,)k(and)d (C.)f(Y)-6 b(ap.)81 b(Precision-sensitiv)n(e)40 b(Eu-)2187 3051 y(clidean)21 b(shortest)g(path)h(in)e(3-Space.)26 b Fc(SIAM)d(Journal)h(Computing)p Fd(,)2187 3126 y(1999)i (\(accepted\).)36 b(Also:)c(11th)26 b(A)n(CM)d(Symp.)h(on)g(Comp.)g (Geom.,)2187 3201 y(\(1995\)350{359.)2040 3294 y([30])37 b(J.)30 b(R.)f(Shew)n(c)n(h)n(uk.)52 b(Robust)31 b(adaptiv)n(e)g (\015oating-p)r(oin)n(t)h(geometric)2187 3369 y(predicates.)41 b(In)27 b Fc(Pr)l(o)l(c.)i(12th)g(A)n(nnual)g(Symp.)g(on)f (Computational)2187 3444 y(Ge)l(ometry)p Fd(,)k(pages)f(141{150.)h (Asso)r(ciation)f(for)f(Computing)g(Ma-)2187 3519 y(c)n(hinery)-6 b(,)24 b(Ma)n(y)g(1996.)2040 3612 y([31])37 b(D.)24 b(M.)f(Ungar.)34 b Fc(the)26 b(Design)f(and)j(Evaluation)f(of)g(a)f(High)h(Perfor-)2187 3687 y(manc)l(e)g(Smal)t(ltalk)f(System)p Fd(.)31 b(MIT)23 b(Press,)g(1987.)2040 3780 y([32])37 b(C.)26 b(Y)-6 b(ap.)41 b(A)27 b(new)g(n)n(um)n(b)r(er)f(core)h(for)f(robust)h(n)n(umerical)f (and)h(geo-)2187 3855 y(metric)20 b(libraries.)25 b(In)d Fc(3r)l(d)i(CGC)g(Workshop)g(on)g(Ge)l(ometric)f(Com-)2187 3930 y(puting)p Fd(,)35 b(1998.)58 b(In)n(vited)34 b(T)-6 b(alk.)33 b(Bro)n(wn)f(Univ)n(ersit)n(y)-6 b(,)34 b(Oct)g(11{12,)2187 4004 y(1998.)25 b(Abstracts)f(in)2187 4079 y Fa(http://www.cs.brown.ed) q(u/cg)q(c/cg)q(c98)q(/hom)q(e.h)q(tml)p Fd(.)2040 4172 y([33])37 b(C.)25 b(K.)g(Y)-6 b(ap.)37 b(Robust)26 b(geometric)g (computation.)38 b(In)26 b(J.)f(E.)g(Go)r(o)r(d-)2187 4247 y(man)33 b(and)i(J.)e(O'Rourk)n(e,)j(editors,)g Fc(Handb)l(o)l(ok)h(of)e(Discr)l(ete)g(and)2187 4322 y(Computational)c(Ge)l(ometry)p Fd(,)26 b(c)n(hapter)i(35,)f(pages)h (653{668.)g(CR)n(C)2187 4397 y(Press)23 b(LLC,)h(1997.)2040 4490 y([34])37 b(C.)24 b(K.)g(Y)-6 b(ap.)33 b(T)-6 b(o)n(w)n(ards)24 b(exact)i(geometric)f(computation.)34 b Fc(Compu-)2187 4565 y(tational)29 b(Ge)l(ometry:)39 b(The)l(ory)28 b(and)i(Applic)l (ations)p Fd(,)e(7:3{23,)g(1997.)2187 4640 y(In)n(vited)j(talk,)h(Pro)r (ceed.)e(5th)h(Canadian)g(Conference)g(on)f(Comp.)2187 4714 y(Geometry)-6 b(,)24 b(W)-6 b(aterlo)r(o,)24 b(Aug)g(5{9,)g(1993.) 2040 4808 y([35])37 b(C.)16 b(K.)f(Y)-6 b(ap)16 b(and)h(T.)e(Dub)n (\023)-33 b(e.)19 b(The)e(exact)g(computation)g(paradigm.)h(In)2187 4882 y(D.-Z.)g(Du)h(and)h(F.)e(K.)h(Hw)n(ang,)h(editors,)g Fc(Computing)i(in)f(Euclide)l(an)2187 4957 y(Ge)l(ometry)p Fd(,)i(pages)h(452{486.)h(W)-6 b(orld)23 b(Scien)n(ti\014c)h(Press,)f (1995.)31 b(2nd)2187 5032 y(edition.)2040 5125 y([36])37 b(J.)25 b(Y)-6 b(u.)35 b Fc(Exact)26 b(arithmetic)h(solid)h(mo)l (deling)p Fd(.)35 b(Ph.D.)24 b(dissertation,)2187 5200 y(Departmen)n(t)j(of)f(Computer)g(Science,)i(Purdue)f(Univ)n(ersit)n(y) -6 b(,)26 b(W)-6 b(est)2187 5275 y(Lafa)n(y)n(ette,)24 b(IN)d(47907,)i(June)f(1992.)29 b(T)-6 b(ec)n(hnical)22 b(Rep)r(ort)g(No.)f(CSD-)2187 5349 y(TR-92-037.)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF core++-1.7/doc/papers/hypergeom.pdf0100644000175000001440000045113107520303617016532 0ustar joachimusers%PDF-1.2 % 2 0 obj << /Length 3564 /Filter /FlateDecode >> stream HWr8g}-&ndbǓq*M<&@˴č$*"}AuMm,@Ӎ/NvR>uӄd4.4s&Nj=Izh'$NZO>hU4U?]4jlj,ӊVYtLJnhu&2jdz?W yf^xh[)A W8UJ RiDg Z}Q֐B_Wo`TLID?߿}ͼ-Բ/NOjVFśyCWXm:Yn{#uc<.5^-S6E}V@;d@ye.|libo(VUEլnW{I~2yW7>qZ|Jc37.~N1YJeLDFbR1LC3WrWL{^"+3&4qq݄?8cB tg,ls3gV?!ME^"D]nY9mLQIdH7򼉬Ք|֤;gKb,HrQz2K{JD!t4ޕψ,毋ﴍȠbG(̜ZV农JKm<6 !7hMg$u~pKГ&)DOjsSjF}Um446 HBX@Vsli$Ff ad].Au"x]D`ޛH3tgF]nڮlNUwӜLLM+sSaӿfGV. GE{}7|w׫a,[Ph!ev_dBIJNCL=[l9ҟ)y۹8s86VB4WW(81,U dYˮm$:>Nj,^B)/F[!IՉᠵK(|]Ʃ.5` d4&ccrj7{&LF٠:e~dޣ@Ou" [7אjt2r.L<$`!{l56V/Ⓚ!TATw΄fDrH>5^z)\W%DOK|ŻrYz>$(olzGQ̎rL-dy* з;f\ G!=('dO8z\3cx?qSVI1gEsnαׁ3(&a dC7צ6oe\DL^hxH8KwC3_lِѐkcՂLs'l#ͭIZvqc[]]0=?FE"oDk$S( *2 hQ.{ (8{u+`c3:0\ֽ eM$D['h c׈~R w-Qn@agXc$gk0Rm]"T=l2(IL9yzp Rh8wn0%3dd0:0dr'~(66le}2n(,d [:#@PU ӑkh*~a?tT HsPx 2bGmZ n 0`w~}Xyѣ56ϸ,Ĺv?=UP!PXT_"|p+nO:&gC98H,)w/hb(ȞN*QphiL|lj'$+$Y0 !kg"fhE rt~ՃnSmC󸙮l7Jzb'|&z;Y?Ho-Qjސ?.hc*BYɝ5 Awʡq=2dqu#0jkW.« WLëͤY^m`&5-ڐMo`ܒr o=5ዐzetptI9"\AI :ܯu+Au;1)i3JnٴU3ŠmKGᣝ!q?'Pde% %Y;m (m_²{]wT!z3h ]dn۱75D\y6 _Ae#7wէZK4H=sf։X{ݙ3|@ rmXʁ 2T:@'L* E}9nWj^^~ f@MZo[o/ZE)5`% WEt/S3.\r'8XKL6R-Yof4Qy^<% ߲ iE]Itdo3mQ!YuvX&tselu%$-5i ;-%T?n+ q/c9l[_h1Deb?SGҼn"z\Y%J"}.=4ޠ_P3C#)rubnNrSD$5VSki#^ËK"_^ MI-0@d>s1N}]*WZtܦwe>>̙ex~.VBL{]ݱ Rg)B|9^Xʴ+"t1}Nx|V҅cTI.t$ 1Z}K O/0t\Ut5dr1:Z]dC9НZl4#nToFiwͺ^7h^qԧ&3V*Kێ.RJSЂv>BC҈-OfZ>I.dycY>Xe8P Ga1*c '*{Ucʼzo^"{F}#+"䖕H˪Y&:, qcnj5Z:LwmÒYcV0?*N endstream endobj 3 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /F1 4 0 R /F2 5 0 R /F15 6 0 R /F16 7 0 R /F17 8 0 R /F18 9 0 R /F19 10 0 R /F20 11 0 R /F21 12 0 R /F22 13 0 R /F23 14 0 R /F24 15 0 R /F25 16 0 R /F26 17 0 R >> /ExtGState << /GS1 18 0 R >> >> endobj 21 0 obj << /Length 4007 /Filter /FlateDecode >> stream HWێ}S3 oӮY8XA" ~kRړϩnxabO:jwwuZ>y2KKs_:.}?tҬ&YT:&==:`xYְJ,)Um͝V;O?*C߬o\da#=[NجqC`M&/lQ<:ԧ4YZ}1zXh6oQ/UCnj~8Έg=ԖiKZpB&s'NP%>?4?^i.8Cm@-AV'KÔyi}AR%V3;]7p %tD.qojHphӮo.Υ6lZ<},[2-)9^<ޑrd[$"F-FȚG\)u U"kjkWWɶjW.Ǫf)Ϫ\tH}36͸+ڰ!eʥaAs;jǡZ@)(ծ=E9> ~#uSS qsJ( P<ֹAce~( ISnM<ѫG;Վ:MuUkσڞCx$M120Tl]JAd?'RS ضG۲׆0eQmVBSqX))bRYZJ;c%L>fQ[+tzCi(*ШNhOҷUkj+|w>އ,mgI\o eT"/-hr=$/F^ Ir^b͘yGzccJ$y@3 fJ"U}kq/  ED`S ![! dfKOtdbH/ h 5o3yÙ;JLFk&XW.G\F;[_S~>2@<8CsV{ F т65Lvj;\rTܫE(CxV'/nU-D0p^~xy˫GXm6dșY>X?Zq Ũm.Ibe/m1r4_m.d ƟY!)LG:ߙǀ%3>n|pl--|;4L: nH"ۀ8tˆ\1?vthU2j!K'7tcо{>1Kq4^B7͖=H{%ᶈ]JAݶ&ӱVi >De#)ŋvx(۠ 'yUGp^W&bfZl+D4\3x5Q{82JṁEx^-a)3Hv(}3κdgV/D ?2Ѡ&Q T(޿C*1ΔSt4(kXӎ#O HFe,r5Ti/\}B$LsJc^ 3"RvыL}3@@s \TyN*sq~gҼ)h)L X! +9m=o\ `8^f_.6(yЖ& s[=vAfu($ !N*2/au&0f埨;3QIoyvD,Bza*b9c/a/S (iV Gaǀ!Aֿ'yk=P]0kQWAR|3&+n/~tQt5" 9\Lg C>?g>4"i9si |,E34&K)r݇IC8nA@ Wf.c׻Xlhu?gJYK< o uSSi$SR9OW1b^Èp :P]O^BS8SZ^K҉b, !ߗ,=LL -(XXqGJ=YLJ"Yq#ⳐݰHJ*k%V_U Y&$ԫTW BnD =]i =/'s= E^+WB^¬!~mMbz&!lI#pjF 8]5`@C&^sziЋlh? Q8KǠUWtгmBL? EFM7H[ }nT.\_˧m#~ )K.) *@`@IĀ& tof%5CJݙ7wUa~*C K&h$[N'Ɂw8(9CP'#3Ќ}:VO"zᎷhd(u GF_ŝ$U"xE7w9j(ݨT__%䴁@B#:R̼-[( '< /s.| =U(2t"&oQ]MEyv&Y\rl>-Vgg>e>N̳PiJGUc|hUbNv4fX) o^M,{M/t:YsnL2tz 5ĺU8>QADe-K ARV__V+})uvah.М1 \V\1T(Z qSv!% zo>j1>JTJ%6*& C(ַ9OEEoL9^>?ҽt..: )$!MK"6/_qӰ$l_C "0Kb򛄆XJp`QPqIZ^Z :JHuA# ؋r|j%b{ZB K5P"ŅAx5 F:|kIwAcʫ "Av%sQ+?óvfg:&Ǟ,tzlUmu$큓e L䡚6n"˓pf`:>y)!ПثpiFWĘQZyjafH _3=]݄C2n: $0C8> /ExtGState << /GS1 18 0 R >> >> endobj 28 0 obj << /Length 3962 /Filter /FlateDecode >> stream HWrF}Wqk"syfSªT|y(HĚ$hOq"L_N>O1\/ﮪZd+pU^J__opй.Vtr1yyE'jsrz9& ,ԐilQtQ+VQmJuwXhƩv8Og⓮q -d [%_u}N3vXW֨v w}jE}n`HSlWtH.l h ?SvYv[v@Yz_ߴv ]dEw PYsSެv%*N!zGy 8 ȗrhgF $DrT/%5 :^/&| [& 0]'"[Gz ԇKVVHaY3|CɎ Jh{<YGsO =x۔jО+٩^R\s`FK06c{m,v\Hю3<SƘv ֿuAZua(:[8p7!op{G2lUQҕD.{sW 8I9# 20. oLHPlRb"P[SÕ9[Ҕz]t-Y.墰UZΧOun3&wU3#x؀sh[Y0K(3^4ϲ8lbOIƨ179YwҌNT.H1HpH qHZ (nn]74g66Η@8X򔎉_QJSZg1܆P( &7>SC#9s5}:mݬtE5ɗ{=A"^swsp&k2IaBb [훳m ا9 `"H#TK(is~\#G ٛsFDl4;HA]JMfq$hn38.9i6YiIC Uz4CO-7>=P%}<ic- &1:h1z0P?P;mr'14@ yoU}ΰ6B==^Fg ǡE}0F[ #f 9i&JhvKfb&p? .ݸ*X$XUZ.z<ϼLvIwR9Ή4@{aI j_/Rf`7#ZX`ɳ!7룿Dzes[><;MY8s8og*kI{q<.x󞉡! "fDT.gE$QLwuuuQ?pVfE֎xOwK]b}^ 8 M5Jp3X[ H2Ce,:1OivtY:I,R[g6L=QCpGYcSQc}Z#k:GHp9n[.ل#Q{SgϧPi*ok/h)ުw&oU)}6Lֻ1.~]= Bsq/LA QD*JeY(qX>hVe kBc4}]<1k1קb^(Bɍ+bFIۮ{e.Tz]XC<,bJ́˘Rs7+ lmc6Z2774"4yf/ٚM:zm|Y%]̥~.5U7Lax*#3#x PNQypHhPv=0_ݷOW7 S؎U.HlN75b\UO4 ӣQLojZu߮//fU`C|)^,=xFb`gZ?\Fjg㴒T@;c*^`V]x9&Ҙh( rn[et51vHL ?܍ а @XXu -|kͳJI$d{ VY yy$0Pt Nhό)VlB]c;)2fzB?7nOf0.Fb +prIzǺːYdVLfu6_xL`h-W1!2ЄLyoM.?.X(쁉9:g$F Q2DeSTGxyޟ(eɃz{Pc Oϐ'.s]S(c F<͕P0ِsWJ'<Zgcoy:9;)@%,sP'sv9khOhL^daD)H& |9A!}*=X٧._N:sOēWB]Sp~0l NS^Y?c0^۳ i>AIS> /ExtGState << /GS1 18 0 R >> >> endobj 34 0 obj << /Length 8327 /Filter /FlateDecode >> stream HW]s3~$\'v=T38SvҎZ%6")Sm]@ G&$b~{9e'?I3,PNM2C6\0]e|3S"'% G) pnrns|jg|*\n'kUnvY%Tm [S=Η/bt~]>UV)$d'fH}<Vʐ^`y:xp1\p3 υid@Y|̵eڊ" ~gw兑//XԸhDNӑ1k\{3WW4R9=al&BQ1ywokQ#&B.J%j4V/uz3K!d$ʄ/\J@\>Wկ炪Dڠꣻ]P8!{^(ԽƁEYTau,s$_ˮiq{i{W*}Eܥ&pXnrY&eUCpZlb7U!',TKY}OϺnI%oUI#Qӫ19S {U9/D? 5&>HlKol{nl{3L\#C.pU&Jxģ-]RMr]՚aY>t(8EK?)z6pcpr?$rʎfG{QyQBd;9:bLGzrѺ::5jhε?#4bM 6<ģ}G$Q- b逖Ie9NLv[\-mq]&?5:|I_aL mq3=X mc 6\4\wyJkI4νrMm5"Bou!rlkfS>W׋MjcKE@= 1}iIa660Q=_SWkz/+{'rj%\q8{i!IZprϱ&=T0 NC68ևDG*%DJK;dS65 Y=jER̯M4Edߕ?Aa`,]T4lBpf0;@ Ckv ֛Sx)s>EV@&7pQWE&IK:' I°d\5g9x>֡]G"KB M]yZFr7=?Rufz>-j5W_?FOY4>W۸>dhNЭB )Ǝ؟7+t3Ėq#~vUsBOmk>FtikC C;!7qe/g4ɍxǎ( ,~_EnHJm= [SڷpzZ< $-hL)Z_]&,{*~ CyFbf_9_k4Y{g2ޟx{[ʎ{ `%>1ٞo ֈnpr:|:v|(ۮ͑ p)'9TS3"x`8Li!m.ey@a-!L9PBI #'P[K6TfM{E Icz̴xG ~=R6eS.vSy{UfdӃs6/t`ESrGnInp-^!6$"`U&f#^ -K4|3d_ѣzkVRkvy-Z6ey2|_{ q柫wznL6Xby"(=.̞L(ONle `P [̀cPLI5=gaӐ 9 '̏ݷn7q$RXnGAYL$ $pS$+!m%] ,@P [9t|/L5Pw!Y}@6q{MR؏lF 6®Q`{m\Cg9 0$ F[;?|F AL_U{m&.TrtphnX:Ws޾hF\>`Qq{5ySTUJ0'b@&'A:ao U8z~IVӿiZU9^SYԢm Zc3sDZrnUF7%<Kqs6}^L:ލ]7_6M3>yS@=*6 zlPf{s)3ps U˵"KcTKeOR_ϙ#βziIX kl!kۃ#)3!3F Х҃+EՐT&j0Z&j$^ٌW9MX۩2]-RYp3/sM;t!8:b߰h^Շy/m+ ?w`.]g#*ɥL$/+Ig~MwlA;6$"iIN1hv-' Lbq[Dc'j'=Õ-Xzuq06C~&f?*[pB!Wℷ*MA99 ͊fe7e Ӻ-Kh,d5&"ˉk9揚X7#tK.\֧m\x%^ѳ_wW`\xsq*Zqsd<Օa_0gEZIY[ZPwZY2 8["|00ߟ_ReiO@gq +u5yvÐ7HḝVѢLDy}RJ>26^jjj`4n[5^)❐=LY-4" ʱJ-PwO&!d=~sik; s^3TTe}ڵsj{HӢN) R~b=O߇-fxU!#cx !@]CAQAaڽVP|~ MԅkMVz. -z ) aE@Q-W m"`sʆ&NBSa%͖/%QF&m(mP7]kaX$N:Q 8{v$sefy%Vgv2 H!# :-vW XLnҗ!i`*`ݥ긄OQoz=j'cV?4?-#I-U@mHomO߀S3o'^um2yQ?U7͙1>&EGljspGqt.ՐAbMitH[$N$ZrFN94wp%$h VGB[`:F6nj|E X!]XyojA z2 Zʃ`Uh&`+Rbv{j3~ v2{ƯʐZU.x~(a$ w#zc.]$Vc`.H#EK5QAQBHQο "`_+B'Ȧu0 ?o˝&\\> /ExtGState << /GS1 18 0 R >> >> endobj 43 0 obj << /Length 6079 /Filter /FlateDecode >> stream HWrSGg}fTP ! SIMjj AaDٲe?kwK$cp"dӻu>f.'fGo*ȃ\l?z\8?9b]V UžٞΔR%rt???/~7ً={1{9{zr80ܹS6pNJrmxuĢYIycO\G{j'=aɍ6дj9nT6V:e? 1iw(6 kUB|Ul4qؔ \SVNTϺ'$sv|F~MWߘ@Uv{g:HS_oný`襤w^*W-7gYZO @z|UvS>Wڲ} q 2)J\x0CpXOphI-\M|ԉ#)BP 2@m܆ZȽ$*t"W\D|L4bZtDjd ŭ*o3Z *O Q4㓯`/bvx4wDXdb {aTí~n95fphFUӨI-FU;ָQ%àިzQ5K d,zwaY,F$ eJ}tC*/.D61^Pu~/DCH@c A*,Vd{v[_ֿ._vWa`蕛)޺Ǟ+8H&h'<'^MKzH,<4"J4R_Yr fiM^W(4N/aQJ62Ql^F-r+zdq=0@ee`T$?m*DjpȨ'bK5&lKg8c|:hR&|4!ypp-MfsQ,톷 }\CcvЬ`) &SwY1{]eGSQrғ+pLAA+&B~e^Se*fh6ԍh]~@@IMD)o M,+̫4']6EOz ъh1"^-F~TH@C 2U?aErvB4S r̵#!4X{ZϠH vsx4-ãhjI^iBFC_pTxB]5q07ˋn} {ݒP>䧛uݖ$uz^$?,MȀTaaW&EDgX]v 2=n4uiAɹd  Ag1X׃G=UFZ:NQhIa'k;%m[:'^$@}x< 1z>Md|(*#³b RxgEM&!3GSc,Od1 > npݰ]6"[5 H™]?xw~0эP8V Ҹˠ]@ ys(dЀ9} p=d Ҋ:i,rZW#,z0W~xYǻh PЦ()֛S,JEC|~N*??6^UB{TiVb3:Hf%KelF9H.lIeF UJۺ\g}%Rdg7WpKX쪢?=UvVz|S򠔲6ma__(GzG2JG1=~Q%{QqW3zAq1{0 [M>l ]% [ۿ3(`7 P^,7QԔԔX#>UY+VX3ZE띍 iYSr @SMN M!@X h\8:ФhB=leEiA(tü:VCTܛ~o]5MeiMSt[]WE~ܯ2>j-]|mZzjݥhϹ2M i0D߄+ MWTYAƤ#BLjZ&cuBgAiNi;7s;XHy EmmRaؿn. Fَx{ivK.nv.O }ѮWVj0x-,I e(rdX9/tLDݮݺC{v?G;9U;JmV\GS{G]m;Wx#X9W>W:2in#9 CbOU FD{AKɶU;^^ I} 3剈 e;9!>3,(|+^mE uARLt F:\ nCzUǯwV5_= ;Gwjլʠb] _6xBTe< JB#6퀻'D׾F.ڳCv0#:[V\nn[V!4&u"x qYΧV$I 7Yz;њ̍<&J(%"C&tUʽzO5wc7'7/)ޫ (X˥~SV-iXH=h4}WxGюFvCE͆"VС<by2UmMLI1ڒY\2zϥ3ʼn 8D$ 4DNˮp؟]؟]욢pMvêny__! nq7х(LAd (<8jW߇y>HA`Qbn 38@[g7JEO.Wb2D潌SqS%&y&o-VauRa& k.9ȶz3Vu"e?.R5m2.:D!D H칺k@S5swP60/ Cu xmfayA!{S- Gi6ANNjiU}60u8]b2`z٘߮J67$a=uU\(PsZՅ”K=wQT@!*0[]'vzQϑD^Nig-m\Lc~dS҆:F/)ks2Rgn3bsWJDPMKǛh$}iZiMȨ$oyXVj;W[(b f\;1$b #Myu=l"J Y28Bi@@chEߟ78%#A/T 1T<=p3AcOF*@1^1W 5&a(30I~_m3c2.P}y >"$}F*AncqRŊo?-韻6OU9;BPs\ 0^T ·8Jʹ)'>lvƣLIoDA;gtT=яKL"Xx붉Ni(XvkڰR#E':eaH}( DG发BBP Lf%[>y:S}e ;IY;R'q rBy\}-^s-VL7av5f9K``(:T>䍋i(A1u%T3cz x^6[# 5 dMtź/GBj9Mm0 عCχ@E5<loa6G\#]d|~_܏FIFF(7pYsR )zT>\G;Qի4t$XL% 3JprEjRVW}VM*"ҠO;.&f/ouͣY:uYh8.-u7aG\Ńtrs'%&cJםJt'*(_'NUIAa_uAz%'*$\r,y`yHTw2! {n8O@\>7~*P=&*9-J n$ eADTObfk}uE@ $a,}NgH^}#^# P3~q?OWc]/g^ѭ F-,˦ P>ܲ@)8c@xJhZ9 4 N'Hq=wc ,gXvk"nnO;ɇx{}+~8 ƒe-w qi[ Tv$"GdnҘ 30c0Qo>zء|ym1\*'6O{9_7ZH"6#4T*4 [S^k8. ^KFk R\dH(=цq VX~̄a?2]IX:f>WꫢI8gEG 4IȮ'܃GˎA+J97zel1x )ޒhC{DX\"a}b*鴵; ~͌#"?fVuiSo}OLo2#|)+0rV/KZ-0j8t((9@\[}d\D)~ e7y` @ՒHTi O JEPAy޼MљR{$ ޑ([">o3qڌdluV8I}kTKm]> /ExtGState << /GS1 18 0 R >> >> endobj 46 0 obj << /Length 4955 /Filter /FlateDecode >> stream HWY~*>ぅ]kX+ H/n] ԣ/3~f(AIEýzypb WGKn#1FA㿓듒GkQ #4 \H#i2=e#=g#flddNWf=? yr3MJ7i.Bh"שrf%Tz6J*fOo99}Ȗ+:b 3}LfzH}˴fmF*w6IƌJF+a,Y"r#.W?2òy& JՇ2 [ͬeoN3+E!i0ܟ''Zn$K;B]ǷƟJNR:eO0(U f._z|g73rW&a2\^Km+_:lR(֋Tp%clF c,?uF pE~0%YE0$SX'emmO~mMth)1=W)9F@Yé"yYQ#iuΜ7k"Uf>]Wz'X3jzQ"7 Hj&KvJ>rn[Qj+қDY2 %?qM_ uA *F\{5-/X]AK\h]^1+XH;`ii͇ޅRڮUNW¶hpyE uwGP-@>/;j^A,޽3O,=*Յ^-=]pӾ(K7t$mSB_хa~U'>@c30T?[t[X$u)Ȣ?NstEST|}ME2rZ.v{MDn8tJ#@#)]zE=5x܃m@b2` T *u01bn3.2m*"JU^ұYȀNYU hUmHa+_ܨp2%aF vXzf$}d;^ 5 :k&d~hs \|8/rS;Y+QL5Z %ȃXr htdmۼ,'U9qs=O0Zኙ=>;;ˤ`=r.weʵ⪽go!CvΚ3c*|^h-yr?Eʥ\5,ߟhݑI/AuݓU`Qz`new*qfz r惑TÑV89YXFxa}փp 4-.Xj,թz6hxચ81,b1hD*e[ ܩڸR?֖YL:y/]@bѻ<}<3}p^e~Ne2PN,Hh8_ڨS>ujb *pR wܰtQN5PlUSZ]d:5eZks\x(uI4@B WLiB֏+ԯ:xjBR[*CQn!px š꾛`KeH/ cF 5BZV_*8m4mO TFִ/ I~(ܛ[h(A$ U$sTjCo 1A (]d)rU{{ t2hG% ~ ؒb!uSt>\FCD=T)L-z!* w{Gl I95CÞIk>%T;Uo+|L1yE姃iЁ(tLyy^S`8eyTFs[\5W#UpT7 2s@Dkʟ}YBpZ1< 63+<Qɾͦt)(0"j_$2N\?"D~tIȣ]}I("4ڼxy]jp'B~[(%qwzXtLs]P4ˣ,n.SG̈́UtCA]ͿN%ӷu"EzBUl~IAEȓdxTQyIV$=N^<6c3Dҕ9ѷrkE=ChG2䑝1f &My?%. 5lr_a3Kd|̅W"7XxZӮqkec>ߔYjWX<97n@QmXluU<+-ɋ>EL(&q0W9Oy,ZtfѫbG}Qb -uu`::KnP-;$<mraa FP#9)]}fjBׂ܎?=OeWMW{j"$qd}0s%GCI$&`IU{c)ө4dC2ͿLbC'H+jXÄ61)8'0) KvBП&(omn>YDTIN$C eFBw.5Ƅ8FeɀOQfToCђSQf/1Սa1̐z0F^z}x=fIǜ/D\,Ӆ{x@L+GK;Dnva6;M^͞[^Q7^.-K Z8z5ӥ Y-ff):x7x]IQV\[Fh8>̛sNW>~,W,[X6USc$q'T:X#F_*ؙtbEy!:2`}M:T .HM7?Ô e}?([Ѹ`RiUP6Bd,|Qp7iܮ'u2TVI%,ۥO=}tL>z3j; ibӨ׹v:@u @ګ s*]Cr3@/C;zzW㯚Bur-@~"#L@kV! 2P%>}X+eكiBjwBR*;ʣ2v+2SWQGKӺ5!>i0lRk+'e+?X=L8$G-> /ExtGState << /GS1 18 0 R >> >> endobj 49 0 obj << /Length 3778 /Filter /FlateDecode >> stream HWn3SO `eDA}4 G|Nu!awuթS/Wof`Ք/=ɠK'N|=ɫULow/ r}QƈL66g]&t`hg<G1t8jIAZ0-V1e13\yscfufօ^:n;NzUIܟt"9?Lή{B 0rBz /٧~sOF&8y.U6-ݮҳvU&BZ^ aSxzZfLq _>#a1g֑32<nw_y(N$GuŅ]{/1\$_%rzioConO[>oBm׶^ ̎}>ƫ < Y~_f*H6Vȸ&=knG| @XK/2g { 0V'N"4k)[zj QÊ!L-g:oݺ]*-%{Wx3rUq.1Yl;)0Py ޤԱUDN9o g u &}=&|;\..ХϐOsa8{ŦWȻhv-|Beq6~~Zt}"!T&4hJW\5ȼ}̳좈#ؼhr8q)ج$.w/"VBFd(v7-#Cgy )ږpF5vDKCᱏ7;t_1`ɕۣ1^~$B˛Mph >3H" %{ѠNd8{]eӶ.Q\ǴA2$ N > ,Vr&ьc %螸 wxK%g&%E!}U /3Yz'8:Tr"'jC*VCa✟l Kפrz3s@8X#uh踥ҋr=z7W }\qڵ/&o.'\̟229I#; ?:W<:ݔ!%y?i|4)J~ {N!rH(0&0UKi¨>Fw.56X1 3`q"BYuwqO<ƮPL4EŁ Ell }^6}9 =ovU螻^ e/"i!ckTr|D^PN@H@|rHrEA7?E@t23d ~^1EwhA^̗t<>?}'!wR'iRU%׽%6uӘED#r=W z<=R R$S>SՑF]Q JZӦkj,ӓy: "+ WK:>h!Se5<GmD\Ad,Z툄3ʶ$HN?=> yKE~  4mʐytKDU,6׋: HSqС|47m,4Nj,وuoEEC $UZmk̕?TX#u)]"6y zXƌQB}/v\y~㡋Eݧ#.Lp~E2 t-L:MAqX}C(<[њ-&'2~$&ݩML'| Rggد޶ zq4ʭE 9^ؒ@Ɉ_"w)#1*=\̛7oR_>y-* ͽ&Lqf*h\kC3 7hzpo^л~f<56XJ!Nf^i^u4؎+`[d9e' yVQ@1v:2ANyKN㼘o@S0QeÐW\9e6./:^eL"5R0DְION}Tksfwl'9bHe% >+wy<o:׌׫Y~T)E{P}z ;Lťoo3}=\QHu^0#1cP#UAxҙU vj[|xK=݂֔X`U/כ/% ^n=|`q3kv\ͽ!۶fnޥjnz$AYD1Hr'To}yH)=m @r[j/MRs^p`1bV_HBxh&uXzIwqK3$&7>utDշR(}M 1Pv$Z;G4l"u,H RA qz \ǃ>EN}9+eM/Ԡ*P܏]VS4m5.~/=ױL#DCkv=%-3繪5wԲtk萒jvR}\  endstream endobj 50 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /F8 30 0 R /F9 31 0 R /F10 32 0 R /F11 23 0 R /F13 25 0 R /F14 26 0 R /F16 7 0 R /F18 9 0 R /F19 10 0 R /F20 11 0 R /F23 14 0 R >> /ExtGState << /GS1 18 0 R >> >> endobj 52 0 obj << /Length 4533 /Filter /FlateDecode >> stream HW]̳~ab;;$w `72o%QRZڰHtWUW?Oz*7PJ]:9u*N T=R dFP:>i?VH1_)ophpR3QJ =S,fhk WU?4ZIBK9 5%ϵ."05A%<]ru\T;<֤ZTw`+R|OuA0lJ3M(3m Z4tϕEQS Y=hܱ(/K%uE0nb}"I*FON*+?ڊ,RdQlru;j\ɘLb v"+Kc0P;7{MPRxWN==Vקӗ‚ -+nn@#&"Iz3KmRE?(dx= :: GζC)9:q~vq,pbgJ[mtzj~bE0j."85t;~_W5NWqa )z G -i<.8#YGu]-j}MЯ3b/[Vpׇ"L83VRʾ8 ?:!^uŒM\Aq Yk\T(/ݤ?AE=S9\d@/ QuFGC!ѐpqQWT٪)rzy52 0`g ]6hi50^ԿzDj~ :'尪+2;ZilC5hNFysIה G3N s*";%dcՒ 'i"RlM;ۻJ-ΥW-IfZښ$-A!VPD4kj[ z+g2ަQBfG&ޛ]c]cmӼ^ > Zf2i C/G=w=py=P*h/- c|8Un ]k34J?7~=GY!Y1XE3F^ q$yV3b ωlugP_@X"N(C.דg/'O5'gawMcl~VL cWd짺)\n/g `5>%fG+`yVl'*`h2G Tqsh̔ eT)KJ6t JaAI%Rh< g)!'Hi V6^(u 1I;!4U@]ؚ \F]Flu54+.ɡDvCwzS$cB.z&u*C:SWshm(:'X'GC\n>>](:l$|Jճ{9egjccQ֫EРoyF\;I&\sWEa"M $>-"HM1s~X 2liS5{B[JBK|Z}]y;QMhj%5cJ> AS}Eel<4[42P+IZpw+ς8NWT+Z",|pBLGq}nB=~7*5%["gn1) s~MJsxԼ*yJ$~9">ZWmH,R/ d;.dt$ ~_7=[|fʜH܇K0%RE'oTޯ) S.3qHQ'difc:(qn~A2zi/>,c~A,#:8,z˘)1zi"U>ݡc\Hy+хMw] 9L 4r\灂s *Sp%1"P  =f!ohJmS&֙wZ xʹ! ځmbr wmJ4Hd8twn"k~Te,YsƗwMZpUPܑ̔nK/m[?xu70cm3kcۃ TSd#^s|CԵ1TdZEL,%.Xh`e'wjt](̷RS&I Mgw0: -70bA-3LKH0UofS `'fM\E.{~td+p ݶǞ͊n$<+ëMkվCZB dmA7DDz#4쥴h:b"\vE?XЏϢ)I221ϖp*PSl0Oދ[* 3PwhmsTwᗛs?tsPIX}^Ws(\)n?/fNw<9Wz,6E@o^[B۾"*f(|Բ$~q3SJ|q6$NfU/t Y*LJ9Շ{9{=jpX jƖJٗQU)$u_HmH'J*|ٴÙ~Ġntg0!R~f97m> .٘1ǕNym -n+A8y,R[`Z޾b ^ endstream endobj 53 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /F8 30 0 R /F9 31 0 R /F10 32 0 R /F11 23 0 R /F12 24 0 R /F14 26 0 R /F16 7 0 R /F18 9 0 R /F19 10 0 R /F20 11 0 R /F23 14 0 R >> /ExtGState << /GS1 18 0 R >> >> endobj 55 0 obj << /Length 5022 /Filter /FlateDecode >> stream HWr+ts!/%Da$4 Ջ/3 IDkrϿi.o/R*w|^.Y]\l.fuUsߛ==c??ʄ5DyXvkj b{VU#R?(`ժ{YΪjTGo(Z] Խ3iB/n~YKp;%u]WӋѹ9M]!ʴQkRSonhx$%mEn+qUwe^n+DX,.ٷ0>2Q z$q:鈘 |Q%]9Ą 3SZxż]OV-|hkx`c3}\o'dպw:ڗ"ɬ|Ћu(HIJ:E_Zh^~zSI7B'qNYhr"BF6ykL(3ɼEf:1".yIjA ͺ\~/w쫙 e*5Cx>z'p{gzy~=~l`hH yrʱ=wڸ+Q}. ;m=%5mlGSr_TY ǩ.4ŽB@+RɲN:uCײH@Y=FR;ͩ†뀲օG}ڇa""}IJ~>Mbnt2T0@W28lWn^v|LaZPQ ̗su.>cACyp~Ṝ7E I!n t;v'r1"Է⤡1$]G#*ʢ *!@f;r_Vf\r}/SSE @< զv+P٥YiQ&?%ٳOCy0$Ek2~>EjvQ mo#OXo=/sV[&ui1PSCF {ɶCT:9bs^zՀgk[ʪ&vB o}Z 1>;1TSsdNY G56"xje%Z%OK,ȠFոcCOsL_¶aUjpq2L\Ɖ|r֖ncHOǤ 'BO B0-[^f(Wѫ7r&1`䶘[kKcR5P lwMʣ{c}v}EgD6 ƤM Bp{1a y@?1 Ҕ[ +3&Y< #iOqnj:$N\:fT((EƝ~& zZMzE& nz34OIr&<@{ vhVfGCM`FGf{q# ?7߹`˫vE DkZf^"($;d%+f8@ȩPsZhk]eXӴ*I,KF4čI ~s--uJOZݣJ!99?@u~p3!Aôţݦ~q_(M)j6PtU$h ͔(:S3(SAQ{E*.sO3$set=01T `zCx6;DAQJ7H¢[֙L( A0Wgf*wv]W>˗f74Z}T4Y~#$jr /)}۝3`beٽa#:a#|P#RZ(|eR;?^V 9PQ!Ft # &r[ lIbX.N& lRQBL!IE#i$+`0G}T/(Ka2|p6yp21T;b$,x|p>R2D&d|MQ+*VJE]H TEgI2~=经q<0.Ir_?Wz9-$;UT޻%CQҭ0q-J&azU{Wh!"7nCѧYQLM. EŸ`F CC4p%ۆJٵe4 ٢l@bz 3.r-vŶs)Q#4f҅y{&4 *%V{>Y\E55FZ' *u\Rab:ɜЍMb{p?u#gÿm1dl&hGPBƽla8gA1Ny{;v ܎%Wgvfgv Rq1 HZМy+kp"/iP(HD/)Wk(t&rPhGSc@gJ%&Nb4,zV8H` |E}^X`̐Ӏ$ļfd)ä%4ڂ+ЙyDqĩGs GX>4<؄']y( ;e>#AfTP2AĖp<VM(xLz%cq\miT<ڋK>"CRΥ ̍ڙ$b_G>:p;a4b+c8?t1$-]>R^iڂ^m^_} v۟??h_\}}wrr҂χLygSmvgxA0/<(!SFcd{']\ My[A;ӲucLJѺzX5iT,8X5EDPiYt5HS' HSUETS.=y-Z$R_nY`!h Z8=[w-:Ws8cؑR7eE?pY%h X$3#<7*P^^o؂ңcrC[y$GY;-:/ .*Ig= Z "P6k\ %S9^#;FI)oC*f`$SgJf)_Ӹʕp|(WE24]ގ߈qaOmsM4UCD'ɝNҚt@ET.n7Oc^%l ,PH 'j$ '7Ŀ̘͔rBҀLgīay!-!ǠoMڹFyGQgST +IyhNSw1@T%?<4_AQO5VD׊?hcx7#Bm8%DSUEt)9,KgV!/wE%ptᖨe[]{Wӗ<W;zR6Rm^vn,AzoI.Dl0qlH"!8p:oq`yy~.|?# r2-ve8wg>IO8)|9ʩ?Ƒ1--805ђM@nɐl@zv}.A( 1`z wmfx`GHd endstream endobj 56 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /F8 30 0 R /F9 31 0 R /F10 32 0 R /F11 23 0 R /F12 24 0 R /F14 26 0 R /F16 7 0 R /F18 9 0 R /F19 10 0 R /F20 11 0 R /F23 14 0 R >> /ExtGState << /GS1 18 0 R >> >> endobj 58 0 obj << /Length 5237 /Filter /FlateDecode >> stream HWn3S5`j_f3ā )D-pp0[M6(32{9/:g]'tW_Rp^G\b_d~ .|^t.ٿE/X⯝.:ui#|eBW ]7ٯ]9;|ԝOO6H[aI[逭dy^9V)x1m\]J3]/,,(L٨P]=`Z#xvKˢ'}9^ ͕z[\fb3~-V `Ra{ q2l1n WA7=ƝǢ;4%jǣj3-5'4ndjq8N.񘭶fB MOh 0Kz`VK%x'7_XvÉҢ# 8ʶQfMBBSYfÉ۴xiƇSYT5xc!8A.n#]=<\.T`BAQl0OЁ?>i)͔1ģnԟ|{n>c"yK?yM}pO {hC:@ج`f"Óz[4jit€DnXpE)z"㞈j8?81nDRqxspTOd0ĚqA}APvGqAb2wpL6/2RnVyb?rT X.sbڛB9Lltr=xJTѮ1ې뢧"x^yІ ^a3SdȾoB2VI 7l2l.Bdw0D'=RQnOƒ1J僧:{̧ i $<#Sjؙ[9 ֆ,82YVu2F D,<ѓ o.- 6,|FwM+4CzB(INYJ*tԔP>LJ"C0a@Gm8e|FFVq+uȷ{m7 [)u(kdo%Ze0U .}+a2n9ѰPl %IC-+s^8ج_|oS਍j)7WT\.UN7M=2Xlޖzz*#6*1('o TAv`cڍڑ*i] eځIW'/(]& 2LB̐ ;ca ;z\̫iWsMp]\4Qj%6l%{+ c{Ñޖ>U;`w Q r%^k02|/zHϲmY߼~siQ1rCj?{? J96&B9.ql'ÅQ^0 {ZРh* 1C*&f U-F 4muҞh.j-EkzyoaX iUQ v[\9{'[еu*O;݀-M{9.BʃOzqho$v_Wwͮܓ *!hV ǪhPR .O$3'rkL$ӊl㽈bG{8 P ($_Zn@yNJL~ 'B{A7Ӭ>7ZYU3Ҭ1f )^f2n/è+R7 * Im>R'u+%WgL'ٺmH(6R"Tm:sTЂ ݔI*V_j-U+ݫΩ i^rnv^68kU{U|H|jͱA;nW/+Yv!ktYHR$㣫+jŘg2oǛD26xc+kMrJs5YU\NF=b^NƵl@wqp<,epxkۭy2` 0"R d|wիɴ/!*f 7Of2i3Dwd 1{!ŗ# )2ʜY`ЊB"Bw> WeS/h׏m٠U=݃L 4dUK%T׆"+gMuz`fu4Ug]jcZ4GɆ&uvP*13 $@D^B7eW/%5o BL# vSw0TB Xa[~M^fn v;cA2ʯ[ʣsoiuSu-%*` :WZ_1wuOH 궢jrQwuזmM3VشբcĖMG ?PWٖ$sZM>2q p[8.ce,aP\ּ+8jNZ{#a2IXaՊ6)m6jܮC7wHF8”H8;sV-_pdJ2Gv}bK,׸ų͍B/Q娴ܼl=&>5' .ID5]j9bxȀ>Հxf53cPJi˰_(UpJSئ( I3TXzZ {{`A)h޼zZ]'{?UWWzs{~$m+:6s?_*D|AŽ[ƀ,f8QCoׁ>mȒ5#_wrU=QT1y4"ۛr`A. 8b5Z 3Ӻ<*x,sT~)er4D{ܰ9ׂ?QF(r.+6 VF*GEӄ( YM&1X^.piwK.\tMz{Y8ݚ! CrdHngljA'iņHc!CGcr&GKLԫ?sFđl /Kf6ibdÄaCi")DK~]8XWg1A|6?Payf;NO{{819b ݐQyΡ[E!UF9tL0i1zqjfC:';ͺM(tp^wҤe9bD{91”y;I&3 ' t0*))X +)!(eVE }sjM ?۽ȟ362΄=]c8ȟc UGws&tg:"_3s tx ߼xzAg@b>H/?GҢP/;KP T(MA~mMi$Ā1_WN`Qp ~B9uP3=c%:Ld?yLgBg2?>G64F*Yx n1Y!VD{q(Qmm}肗BW*9Gy >v%株^O endstream endobj 59 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /F8 30 0 R /F9 31 0 R /F14 26 0 R /F16 7 0 R /F17 8 0 R /F18 9 0 R /F19 10 0 R /F20 11 0 R /F21 12 0 R /F23 14 0 R >> /ExtGState << /GS1 18 0 R >> >> endobj 61 0 obj << /Length 3929 /Filter /FlateDecode >> stream HWMsFW8!0onW"!5 @P~dS)0_zLn/*,ÿ2Ky[e1^dջk=[/YjvUɼ.x ,:\ƥΊ A(X$NAQJT <jzxL\]&sej@K%M2@M6Ynd-_5֫hG-VcruuD6d. '=l/ȕ>Y=RYXxkz U%|Qc,rr89kCIȘ6!cFF`/ِ7rco@&Hs\O;t۴]S"0D$>:GQ6HG~g*8C*pHjퟙvzl,5X<f>nsm w|.?<=flBB$zLa(1:h&jV^JMgB|lr_erVEZHɫ4*Ժ"eEMVuESQTա"AQ/RᜋN4Bshp6ܼMh"By 6$$,x9q^[SӖ9A 4@FR3VaK5[w% 1 ,|6N5b0gTv gK>֟ 1Ha3(~67ipkGaa(-$ߎٴ!,*mE^Dk?%fs^p~K6 :o &ޑhQ9S9L*5 #|> 5pNuCJ8culѐ>mu쨛1->jpjEl\6z`=@6R哧ΟOzn*VJ9EV4 o+YHEK(*ҫw@bD#{^.̜*&1{ E5^ mZx)+㧽 ?*PBsP9|i?Th,I'ׄ-ul ~9 E9 # ߚ/(+!xk8]TmAtԵj5 uR+Ԉz!6δ" c&ˎ!<#L <8 ̢㈽"u&g؋$aH.]VCS/M"K5Ȁny.6E-\wsi<cLVsXXA˳KeUz$p[L3ff(c8ÌaƋfoD.ꩁsOK5 p;Žpdž7Hk{ xȓ-G*bt1?(/CΕ:[]wtVU Y{v6^!Ņ(x4SL#F\&=h*ZoiP|`w"aUVÇXo`7G;]<߃R洲4?_O=6"UD5j-$pD4W~ ' 7>sK++,~k/DLK&iF*&Z_&Q03}%ڋn2+F"D}~ 0$q3 f g`: eX8 TłM/6lLθ` @IenZ):%$j֖rMHi~꺍wyAW)DXSC̄9*2$]sVL%#8 0R%4D*@k;8BN ;f3"r}HyB6{E&͖g$4ERs)༤Xju]Pd@VM2y1vvS#\/,TbpV\yCDE>ԟ+S`}]ImGBizڷB)q#G]{AȯHR~:QPQ؞uERFY21uꚅ[8B"BnJM-KuV8 n+7&InަźIVT:p$2K N q]6qʷ+h[&Pg7v맙x>sBV2)|MӤ#Nqw J떃/hb4īU(zo;Τ8 MtZ֥X4_ldv:@iiƎe&YWc\)a_~4_dR8V`C| >ȂiVSvn$ŏ<^#91 lw~A]8dS[*(>0i %WؕF_YޥL2#4'KnVPoYN w::N Kچ:"榮~ܹ?MjO JTTVfƼYT-7j"\j?qʓaAda(D0QLQQm!F޻Uը{+ b1FȨ$~ƦUA1]eXft'c^ϋ0fw5 "R۶rhaJY%]ʟ4^Ǻ'Z0N& %6Q;b_ڢblT}q 0n endstream endobj 62 0 obj << /ProcSet [/PDF /Text /ImageB ] /Font << /F1 4 0 R /F2 5 0 R /F12 24 0 R /F14 26 0 R /F17 8 0 R /F19 10 0 R /F20 11 0 R /F21 12 0 R /F23 14 0 R >> /ExtGState << /GS1 18 0 R >> >> endobj 66 0 obj << /Length 4256 /Filter /FlateDecode >> stream HWrH|Wm"pMG+Z o8<~HIpAҶ?C'vB!guUVV/ J2\ZAal099ӃdYQ G'է:Z&_`?~C]FФUUvd/fzv TSg1nfXʪAo˷{flr`L}&P5[|ێ_pl϶/qþ\mnEV&ƫe24Y$vn MiO \E8-NYAhMw )YsSa3>)aM2j`|h3Q:5[|88sʀ&]R\hs9e,c2t.C[rUOhһ1J[n01:CMܨ_뾞ibqs8×q[@&1e&3.b%rSRe^U \ph w}s}?1Z=qsmaZspf`k^`/ZSh`1" h<=0ŪY6 t?&\7d6"ഇ9 ? 'C/VgÕƠ4Z[p! p_N(jsZ/Nc/Q6oP24襠0!r6yXtՇ2&1S%u7C*sv6Z1~w48*s35A d"M͚ 8R'[LХ(t9dA%Q*̪X Q4˴,J6-5M4PPMC@tF~?TO|@~߷HD_G WPb7e{Nkz!+!FBiz/<=̚1ȁe8ك :m7lX&LBܥ< CÌvn4&>sK7 ]~Aeҽ/b]"@ENLCPdWWPXj:YOњơ ܑ %:E6?z4G[qER\V13SHTzv)rۿ(dZoߩ!VLAԉ\GP"(⋀o_ ট=5րrN0_S Jf\ynw/f8 cܛ}i~l/ޖ|48_u ^޶q@ 8\YE2@4S']K fL^>ͺ\Z\ARwBq-+ÊfkPY@ a.RF=Ue\j=;?$"*շ_^qnC  [ 9/]GY 2^36;Efc@jŵ=WI,  /M'anu$n;谓X<^ =$}!JF|pFА+=el+ZHlMbQ:U gp+ zS3y :n= 1.)|D!Kř d9xK^@o|cZ"æ7A^X@8=4;Qiu*xlE1^){>Wm#yJo r&31v;Zd\lv!gSV*`9O]\'n֛-[[itE=+b9)MU&^]HT 58*h a:hZ?B94R9CÈxOBQ09&aI ף'ej7mjH?_CLg i2)3 w>ơN"60Ƶ!"N,[X%^ysr j$AS*bQxR+v6]}cP uթtlD|UI‘"N=\S%.pZ/NdXi/5D˳B4 =5$aZ(UTNݡQH*n5ua8GBt&vq%gH J&[UPP'O&B Q=g&n/p8,Ѧ%`&TP0[$дAJi2Hob1{|Zv\cc665vq˿u/2$zXa l^!!bǛtej3lIR>UXh(ѹzIagojX<ɼ-ԛF@@bvw]da޻se} в _ZɽcxG}> /ExtGState << /GS1 18 0 R >> >> endobj 68 0 obj << /Type /Halftone /HalftoneType 1 /HalftoneName (Default) /Frequency 60 /Angle 45 /SpotFunction /Round >> endobj 18 0 obj << /Type /ExtGState /SA false /OP false /HT /Default >> endobj 69 0 obj << /Type /FontDescriptor /Ascent 615 /CapHeight 0 /Descent -230 /Flags 4 /FontBBox [-4 -235 731 800] /FontName /CMTT10 /ItalicAngle 0 /StemV 69 /XHeight 434 /FontFile3 70 0 R >> endobj 70 0 obj << /Filter /FlateDecode /Length 3134 /Subtype /Type1C >> stream HlU TWjT-.DԸhjF, kDnYfo |Q\XٷqEįęQ1f&8щ+󙓩F SSU IR<\ 00~#X0"Z[Oޏ_Ƽ1Eiڻ(qaqaꄰ]Ũk^1{"z!$q!$ &›RZ•$lIbx $\X@ \/ GJKTBBGl!zOt_&4ZntlE+{ffe˘Snո:'[4}I 0GJؖfRc {R!-},VT'礦YlEriP"&&0ٝ}yo!(a|wWŻWvl r*ԟ︢|+Vn,+sOs_áo<ոvZ͛z}ʆk8q WAuCxB1Ye \E劚dC:1E]`*؊Ysc)?Kg9z$]]ϳء^nw9۠I,ꢎsr+f)|XnH]'UwELK QRo,]٣EaY?liP3:T>*jPSs" T DTՠ U^;~;G v%J6 M< I]jU2sQnڪ!*`[`A|d?8A{r99Be/`.ybr.@9N%L=*xiV-C\հ.P <{XK\<òvZ n< [1-!A&!!8C-ܠUEFDv-6SdH{dZ)[$̛5DcXRQb BNA&7ǢTbX궷7r-8P}c{fG΍hzkX{r֩G+G֊z㐖SC%*PL WCHUͪ'k5Zej*ݝ.\gUkEMvA VV]kcPsd<́Rvo!x&rU5 ŭ|C_r3Rsv96O־CllW4(aW2:B`ˑ`TX%LU\ij;?\D%1ZVrlV ?A#0Ym=}tǚYq!nP*n؃6MӅYv뻋 x eqX?bMxl`܉'+nk?wH%OՊ"(Q)yGcThY0yOx4E-e>No=í?w^d"/߁Ra5J 'x27o6Og S՚%ge0Ν\~/_r-OPX엱=/2; `;/.*Mfū%t%}X|ɝ존E T=*I2J ‚#,gUb %Z<{ĵc'jp~vo#Xr ` Ub6H-ԏcc(pn9[f%$.96K&G&ev*ז*e+XPh낮%mun(2#DM~^C&w}>]}oWrEFD9˕p|y\dFNn$̆ ( r%c/ jNVup0fGnǚL ؞ϬۆO`sLCInjҮ獴*^EI;\fx _}2GbX D]狖cjfڬӪ]q0[/UTSQܔ0( /8 9 MAYm چȥ{JnA%}TS/]6?nA\dֲihsmC;n/o۽Nj1 XInAqӇobg0>’Q)a0o>6x\DRy9spҺ.nPz}`}xdj醷Řrf(%ɺ,jgG=mPSK.OoyFھC8otY#y&|ΙaFhPqwDTY m${:\VN[ 7]_+\M_nxOK?O WR9KgC&}w" mT4DJibog-4@(eN2/L5;A¨@#lx͉maoLqsö;`U Ʀ:0'̱7'тXvt5y:3H>-5 az -yQ@@8*jC۴xj>VM݁ .bn {(1$2Ӊ7EGu*+P4L<,w:W֑Z[)џbwow\cN(f9x> endobj 72 0 obj << /Filter /FlateDecode /Length 6928 /Subtype /Type1C >> stream HlTiXSW7!!nE:UDPF܊@]V !,$0` Ȣ2ťUNJNZL9<j;9=w^`8nݵyJ Y\pZf#689i\lr{ |*Movq~v˖Sbb]~uCbTj\Dxبt&u(".*={놄4QiQ"%&gGnEF&aa1n]0 y;6Mb86aK5|[gb09v{W8|M+^em{Wawx*GqȜɿN5Ԫii}qNY3s2.^)1>xl\ B7`v_n0-WrJTjV^)j)<{\b FRaeIFV. |9}SʕR)+tzF_jhjcwJr? ʈbվV2J-Zkj*ӃeA>=G`@aW8=hag=@c%kA+Ml1 6d&bKf$?%\JC3}Lcʘ}E f7;=ˬFh̢%V?-m %~pntj=U:ǵsߵn?Y0oAL,IUs笏BI۟R`RВy#[ksU rзo~1V_H,>.+\rݟznxTd̳9 [\ RRv R JMyLVYBVJ)qI1& nw<3;ZZlf'>eTv4Ϙ*zXO+D4,uO-NOor9}#rkEq ՙU ݬ-j\=-њәȳuLf][+0nO͓~SֲUoƭ Gܷ_w0{x[y_#Oualq.RwDG JY|i54n |+`=AcGe#KL W? mWS/ݞu>X HX0ªh,=)E~hEl G)=ql&~(cڼg@ڻo qE ]l!Ij?sMC{t)׮a VKjeBZAb,fTgrs8qTrſ&t_ʆp*9B?I~[BZƻBk!}v$NJ@AI׀`O(]Z_e[;d5%k8=UY:r ?∯±k*w!{8gisXq !7S!X!V WOhO]\cf#֗k@9-m<Сyd5忒 Kzg񪳪wb0;&PZKNvZڟ,萙&aQ/E=. \YJvCWq(\TJ"Ma!_cZ)=U,dS [#/.M+|WGET2q_"Mc;f1wZ̈́hJ?e$lr[5:% )]F&B&? בk6eNX#n$XK6-8!W_ {H5p&c;BNӡ0HkfCcZNy,Pҗ^k`F(qēRV+ V"dD+J3a4RRx ҷw` Hk>E2r]1`n)GhԳѮ(2h9(`˘{0v}~1d5H(XH:.# U*h "_'dL3Xߜz܊+j 9T+T24A R\h2 ]ӹF[U#6oSdw2]Znl\؛:^5^G5h-Om.w_LX., d2܎jAjoi309d s{Weeh͉?_VM_,20q[9.䡞TK/򗬧5ZG#inj Zb+L#*T) kѕ1癄\g?'2"tAy 7 UR cv7=3DyKn55zL!4vx6+׌:<@8u|2@*/a DjrуZj˿}!ԗtǏ4BΫDmv\IT+r%*eӲjU,7N%EIւPBOQBk󤎵O]Gcu,)SՀ&4L-WbSltѳ`S^"q:W^Ǐr忡cRz()q*Ht@'Tѹhi#b`ՙ Tc>/ߧ630tMOm'oRًtC%@rl&2EFyϬfdcrO ϒG`]k_ WS#ˍX]芟Š#> endobj 74 0 obj << /Length 571 /Subtype /Type1C >> stream CMR5+ Y7=DKO^1.00BCopyright (C) 1997 American Mathematical Society. All Rights ReservedCMR5Computer Modern123BSXZ8"jKDwz_̎l!Y_䋇Y! ַ UaxM{7|Xͼdz #(=)WqlũQ)7QK>Jcmeu   R(%LU2 Xojkmva# [8B %(W1\g䎠ԿfGQe0"oq|zu?nbD endstream endobj 75 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent 0 /Flags 68 /FontBBox [36 -250 1349 750] /FontName /GCCODC+CMMI5 /ItalicAngle -14.04 /StemV 90 /CharSet (/k) /FontFile3 76 0 R >> endobj 76 0 obj << /Length 462 /Subtype /Type1C >> stream  GCCODC+CMMI51J  EFJOAKP_1.100Copyright (C) 1997 American Mathematical Society. All Rights ReservedCMMI5Computer ModernkLBMUUr^X.$|{zzy|t~LD}Dg#zzyhn>UfI¶]{bzs¼e[GQ]PBhojrc{u?aD endstream endobj 77 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent 0 /Flags 68 /FontBBox [-4 -948 1329 786] /FontName /CMSY6 /ItalicAngle -14.035 /StemV 93 /FontFile3 78 0 R >> endobj 78 0 obj << /Length 687 /Subtype /Type1C >> stream CMSY61 !J_  H1[aj+ dixasteriskmathradicalinfinity1.0Copyright (C) 1997 American Mathematical Society. All Rights ReservedCMSY6Computer Modern1p,Wt\tr}}rqq~㎭e!~XXW)x~$1%|yz{~z $~xuv*O)O{wu$}h*z~劐8R_U10," "$ɻM#0 -$,#M[eн5*1>?'BOnXqq4`FY4.">[oYjo|HSrdDƱ{C|;}~s?O endstream endobj 79 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent 0 /Flags 4 /FontBBox [-20 -250 1193 750] /FontName /CMR6 /ItalicAngle 0 /StemV 83 /FontFile3 80 0 R >> endobj 80 0 obj << /Filter /FlateDecode /Length 1108 /Subtype /Type1C >> stream HT{LSWfn--p>Bܔ4]L&:ZJaC(Ў*ֆ˫{PH.CE)R32,/5H52W+hyoخė yxj$(yZaݦT\_`ƥ꒒jܜmF@_c6m1PoܤM67ʴ2B Xl* c\ZZ͉ܺ;($C(BjC(!>Ԃx<5';(CMO(ou$x :K=Dp,3d*+O*'.+d /.,2]~N,TŐF, z_' a$|s76bO8[[IDGII¥S MnFB>mw]Uܽ8bgIA2L8k`7[::X" 1XPb- [y2 Ae+,-f+GdVe5N, *,UrOMjG`A NDHI Npbp3WWM߿e֯{5_^/uo{ϝMDZDzDcjM#8 zHx{sikq&O%\ݓ"\e)5>{p5IHҪ"۱UC+{|?NNF~> QDqmx GsgOn7G;>N:OlXa\Vܣ|^wGWP 4 #0O1Ŝ4]؁2_XNȲe{zx#+HVr'D&L]}&nlW|N3:]aUir56WjmBT@<$ hq 1)SsΑ?|ȃ鷤Jkr%yJAfAJT[qK?[MeV=S 1xwn}'Ieӽj$O(A1m]"4SiH.Ư++]^"48%ud3j\" endstream endobj 81 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent 0 /Flags 68 /FontBBox [10 -250 1241 750] /FontName /CMMI6 /ItalicAngle -14.04 /StemV 85 /XHeight 444 /FontFile3 82 0 R >> endobj 82 0 obj << /Filter /FlateDecode /Length 1161 /Subtype /Type1C >> stream HL}Lw(NeK-3[0ff:\ HeNf*Ж+}rZZN _6c&[F64e xI>Pa0J ~YNsXAvb䰒G١5cjS/AE0 E2=wWIeMM$/)ۈN2?t? _lC'\E੒vʺ/%^iz BCǡF燊!|+XLÂf&ܡ{<-۸D53v!XF]عHe\u5-W&"E{NKK\1xF^N">e/Y^³ `mKVvnclHkH 63PV-( ":+`IWX(R.1FvoЬ`RԔ7D9\1<_>}xJwSwPFz6STЭvںS-M]Bx!}_?[>(ѥlf +zBwȅK2 :A5:$M2mLrIjh4#H$ `aOsG{ _\|39ɋƦҳJSwiZN(Kl-=f섮c'Ӡ.$\xTQ,QSŞȂןKx9+.t՛)Z6pD"Q{$a7qA< ?&'7QPPpa$in=NDǓiA#HV SH7`f玉,13=^q94DL2?A ϯvYFHz7LٺEӏ]QBaŇٛ`yeݻ-*f)TY?}iSyxnHPilLFOr]WQW“t(x4ē` ePWM[U8;6r3Xz M˛3tI z  endstream endobj 83 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent -205 /Flags 68 /FontBBox [-24 -250 1110 750] /FontName /CMMI8 /ItalicAngle -14.04 /StemV 78 /XHeight 444 /FontFile3 84 0 R >> endobj 84 0 obj << /Filter /FlateDecode /Length 2603 /Subtype /Type1C >> stream HypWeDM $dWPv2Icmmld[떅d]ֹ^ݲaKXCv B$ɴt(=3'nl3ӤIgGgggo~ϳ~ (5b0iYYMM,/0hJc&MEܑx^JXF;=4O %-Xaڗ׮Y)UUkׯ!KyBnO~/ɓQy_zQS͛q2T! ĵr%K-L߰q^YeUP,ʕ@OAOC+Lh 킲(ʃ@~hQR(4jơGWSSzSE߰}>piON>fdSK`1̄p9k,Q׀+, Q&!& l&襫nd|KףaB|C9K[`4F& Zh f ր7҅_~Y6#`O'ztT%RUb7CXb D =VolG Ey\pPO)_JG4~ftڀ(To$MRO)q!9@"dID(&.mVJp6#%g8FH6B&]Ϲ0%1GN6{N؍{z"{ʂ DnĚ혻=t ܍qذ nUzuƊn;8[( {tuf$r-H0]1EN 1| {L@L3 o5)GZРA-r} TEiWw O2O;msRYR9_w:1O'r)?FF Kr|IQi1$dc`s,1$]3'XgrfDU*Li/'ڻzo@gVT+y|JHe6 }-p*-ϻ_n޹B%cU(f#_P 㗇s{*r=a-+ WuϳvqfF&LDMrP&mRvtuSLx;Ef[5V}\8X! L4t]mpu:=yٍfl}/h@Nvv#AUdhXoJ:rJo1kXMD&$ʐ#ց)ܑ5N3j2u_G, .zpygZK$$C75W$ w $iUX4uAmto ',וyБZ+{᎞HmhgMpX'VH,΀jlNg1}t M F~Tq\۬vvGds Jwgwů}qo 8^{@fח`fI6X,)ZZ!s5>?5zoQsEABp)u2MVo׎G[*JL;ȁlu^첹(V*0YggKH[Z*MiƵf6k,RI?R'l~$?&%MY)Ǥ* |!:a.݇TJ5iwg%dcO?9b"M69ލVs:nj!mӶM;iEτ)K,]±b s)Ԛt r+(\3 u jԯ&S5ߝ3^&JoMzJހmw%V'H-ZR טԐܘġV s䟲nam-jʨߓyۉӧ56t״EGI\3oZ PA&Ը|q_1,ЙµsR"w4|^oF߂ N0OʢKo^^ۜ-ߒWjVZ'^=L~*rfiA^Ij}6l^=W.jΒ\kAY ΟhaI+>0cuvHOX]@lON6wTv.y8Ws^` endstream endobj 85 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent 0 /Flags 4 /FontBBox [0 -2959 1387 722] /FontName /CMEX10 /ItalicAngle 0 /StemV 47 /FontFile3 86 0 R >> endobj 86 0 obj << /Filter /FlateDecode /Length 1753 /Subtype /Type1C >> stream HdTmPGȅ3b.XANb5&p)#'QpV$ R._"0. GF,$^aEC(8Y&jRԺӻTXgi,zQ"yP: 0.+aYp(x EP|ؓ2wOhͯЛ!9FI Qxj%Fm,TUMy(?uQW9rح-^\,9%Vd7Zk) "2O(((.rv:痈\G Gn9!Y JOx@M_,rkM]bNHNN2Vhm6[P\ݼ8樌7f7e捶2fgEjqaI&Ӌ6CH 2@Q%HB :@pxn~ \@ 4@٩ `=8~Dj5YګtQHY1 p>N`7Zaͣx֑,0qtG~0$ˊv8eWM憚:Y2 0 ;άy.w4| #VW]뾫44{.>Gre쯛-]۰9ce&IxXϳgtw i_B^"iWS k;v6 R N)"2p'&L0cWVlG\[kjx| Oƨj2FK5C9w)r7WCQ-:FmGs>a=rIntqٴb`"_T,ޟod<ʯ1+VX,qFխ==<'l,S;1&Nhlw[I Z'p~>L$0[7^.ܻZĥ ,da/.$v#AS" R:!ޠ7SN.S=oʾEc\`":[cfڛ*S3N~“X`HG5U_٢X|?@ܓ<.4o}C9axC ß&;hT,SnQ_6ޗkKBEcECUm;#5 }PUP!BGg_7!3@iUpt;ht\M -w4.@X0T컧ɀI"<zu8 d$JkoC}VLh =]uz2 ٰC0Wn endstream endobj 87 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent 0 /Flags 4 /FontBBox [0 -19 2332 900] /FontName /MSBM10 /ItalicAngle 0 /StemV 40 /FontFile3 88 0 R >> endobj 88 0 obj << /Length 702 /Subtype /Type1C >> stream MSBM10) x 8=D5 SY^tildewider2.1Copyright (C) 1997 American Mathematical Society. All Rights ReservedMSBM10EulerNZ^/;d8xFx|VyXz{y/{}T^DÔ|y&y{yzÊwV,tBy|y|{}qGӁ [ɮ|y^kq|~}ȱю ~yY|w9z=+"" p|xy %BwgG UU; lzJUF\rw&${$&L?:J8Ex}JF&jZVa8EwAbD endstream endobj 89 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent 0 /Flags 68 /FontBBox [-30 -955 1185 779] /FontName /CMSY8 /ItalicAngle -14.035 /StemV 89 /FontFile3 90 0 R >> endobj 90 0 obj << /Filter /FlateDecode /Length 937 /Subtype /Type1C >> stream Ht]L[e߷~Hh9V&ffm58]H06a*Zʡ #1.u f"&,1&d ^-jųqw'OA@Ey 5 #R)B/ptZ y4T&^(v>ʑf[nD/c484 2Ga,.2&4c49<yuui0@tq}N3ڍeg:#%#3H4Zc#0 ! `C?U(w{z vYBzG"u8,%ۇcD "GkbrZ-/HپY97=k%s3N+o\>wc$S=jT<\P$K}$njCDŽ󱱂E{'x_(=#CL( V"[1Idkaq02XT(uy‡yt$VWj,RAb|Zsf=IIN'3@" ;)_>o* S/`hDK2L:6_UG:\Fd۷RbY 60?Zo`HA6D:#?Qզ'toyz {= Va筵6,ܦdŝs"|hZL:嚭TԫM endstream endobj 91 0 obj << /Type /FontDescriptor /Ascent 615 /CapHeight 0 /Descent 0 /Flags 4 /FontBBox [-1 -234 524 695] /FontName /CMTT12 /ItalicAngle 0 /StemV 65 /XHeight 434 /FontFile3 92 0 R >> endobj 92 0 obj << /Filter /FlateDecode /Length 2200 /Subtype /Type1C >> stream HVkPSg>$'A=㞓uoLZRD"3T(@Hp-pɇ" @^F;TOj(ҵZ;c HGgv&9ߜ/<^Bb$IPТ ! 9H&.t<;ƀ3~X1 6NN]1I}-r[譌ת"wEs)yz.S WE)C!j!FAֺ)V(~ O W%lᭌרU 8F.'Vk@"DAƈU|CxD`b&Ar !%%&|I_LlHbE#!%\pF6;WJD`_FJKf{zE/ǥw|_<@BB0HDUoVcYj#yY%6JkSӓtٹ,yRuVe:"o!,A dC_ t.O?,R&T=*Pss"A,w%1_Qsa%]z|R*RW|dk,^O#tSjs?cu:m~=42f% eepxnvN*$k/w~cA)*6t t3tuhNEVT}(=꣣PJClHچjni~$Kee_o; SҲV&F$ ̠]-tFKPPuQvڊe`tؖ`<.f3f }pzS!Tj(au:5} ZPRSߡ e+W;Bq5lBUcz mݸ`blA0m<:{d7p͉Ƭ2^wzr6` ra9'̐b 8};.fB?פו9]a r(RqJ+X,۔GՀ+(cG d/!yOIV65b+gh=ū0.A8/|EkSev[J7b^=)0qO ޞÎ]]曼"WV|xXd~'I7Ne4ϛA Ӛj e\iA!WZb(aj*bvN ?bSUiG?b~^ϜBPlB50{zznϯhӡű K!A<X:`"XRPIsUkrS߫~^4w\eQi h@ >=<%@~B}~9ɗG8-T:-j$pc-_ F*9Y2&74 ,^gئ+܃)[B r.<ij̰%xg~v;_kzg./. |zC ^3kNlaq$eb=hC+2aaųEleN:֯boLӎ5qLjC1s-5ի'[iߵׯU<,>۰Emrv^ /L263N1o<*.AbvWRLHզc7s'?ۆ~o?-33GeHfD‚Q2i<"CMʣ)\9~d 7IlEncq,i./C*s[GxRRnIeݖMs(~O8y%1#ma+qutbZM2hIb j=a)ȋ<}4E-, Z_h6Lz1Pі*9f'@d3!jz 9Fxj)LIpnx\c*qY-F d<}G$kIdm;cl +2e*.@v׏}FyAt%VmR,+,**9 ORSa?z_U.@9*T~ɑg;9'^U]b endstream endobj 93 0 obj << /Type /FontDescriptor /Ascent 698 /CapHeight 682 /Descent -205 /Flags 68 /FontBBox [-36 -251 1103 750] /FontName /CMTI12 /ItalicAngle -14.04 /StemV 63 /FontFile3 94 0 R >> endobj 94 0 obj << /Filter /FlateDecode /Length 3838 /Subtype /Type1C >> stream H|UiPgfaD5lҭQ1v5F= s5_ws1(xǚ7ɮVܭM*ٯr{*?R[?}yBC0'oHLKB$J%,xF4os9уI: D}s; M[c._/*-Z~QTL|ʨ K233Js 3JT}f^viҨ RRfgg=^_X\V].)0̅X|K6l'--Q㏱u86 f`a/a ư {0lKR|E1a=9|2rK3Pz#lIبYiiqL=}bљf#6D&rdYWg%hG V!l PTuOM?Q'< :M(9I~s+"ٳ՗Amlj fyVHsu5m%ʦc=G{pgrky`rY@I]/.p[!ڠJ%JDRNsR$A!

@b %G~\W"\?$5`O [sbOG[TCEi0*Q}bX%nfd8F4đ5Y=v$ |UbJ[ YIq#D Hx-JT -&Z S\3mLV_z 'N ۃ5Yo(&\)}r;ݟNM)@ffe ٤Ũtt#@CEj^"EJT|22^S^AE*#<م&d*!C4=/+Q@<zvt=[ ]n ht^7vc}#[iٵh<)sҐ$霽F?A'ZbU1TiCԂ<M4,4ԃrcX+C(De]ZtpKtBfqlаa>Ŵ{ ]w3gqULP:M R0-D=K;&_ CÂɻVY/ce􅂞`9e:dPrTir~ n2.\6?L`IӦkxc c):Bb\5O0*fX+Yi Z?6$>@cʡ!#NV䗖)[腢dj5 Rk,&e\cǓ>>q0=m$G@hh|_$lG+\=vmo;QpSGX+#KDH;pAy}8ҜGWT/tVQ ZUϑlg\="90Kll45Zk"w{3 Kxr;zo@ѣ\sl߷#5O]^_%]Q6ѺΙIAMKJlR%UԵ$!tc 0z|w}`.`(Cʭk{~(T~xL8UQ?| 4yXm#q(-0A@p[L:~ޕV6]7 v+ %h ?2.᫑Yz,u?=ɲB&D:8M0Gp#2э|uŚuK( XE0HgqdE'?Gt^N_VF :'q+/M}SNz?Y'y]M(4uq9)L.AuQun'EȭIN yjLH1Q]Q:ݯ=LE%z{^k&Ho]芎-?0k"[aa !pB se&G 8:S2:LO3$ T^eIhPhz9gDjMJf"p~33N7v#wT;L0Ҡ*[kѷO=h馐S/5_א=26 BEY ]iZ9CM`װC(=K8x6#!J> endobj 96 0 obj << /Length 592 /Subtype /Type1C >> stream CMCSC10) 9BIIP_1.0Copyright (C) 1997 American Mathematical Society. All Rights ReservedCMCSC10Computer ModernYapB:BQ py-%lcplQqlpFUh@e`]alžpvWg>slҋҋt>UeUU$џ}~51pz^LracSwiogzrƍS~nO-2e| Q~?rΐbbHrčÉHMQ?cd>u?SD Ӝ endstream endobj 97 0 obj << /Type /FontDescriptor /Ascent 698 /CapHeight 0 /Descent 0 /Flags 70 /FontBBox [-62 -250 1123 750] /FontName /CMSL10 /ItalicAngle -9.46 /StemV 79 /FontFile3 98 0 R >> endobj 98 0 obj << /Filter /FlateDecode /Length 2616 /Subtype /Type1C >> stream H{Pw DDb6wVuTj.XZ B"@H6Bx">j}amUiޱuq60]Sgcg}~{ (Eĭ Z $"DA.}ab@P EXH Ǵ|<EQ5æFeӶS**"2iI;1TefZPe%)yء9Xe2[LVU+1YMtm\֤dejZƎ\M3A^G&!0d62B KeH4A q?dDn?d bGQ\ gߝ77oWkĴ>CcDwx*JM*3S]nq{wz%B!ѯC YG%is0|lU% 8'#+&lH_Y |: jZ~Wed9,v7mqGχ`FL7#g>9 xP x˻0e`nuPN L[,54 4NKAɃv.~;@98bn ;m _ GPp 󜕯Nb3fD΀(͇=mΓxW}"!0c'ǯ$h|ZGޓMj"݉b`9q'~uACs SDtcML|2gl! _/Tu6+"'H@A8qϝ>HR{"i=eA%{S,$rte)+-eR joXʨ~׭zwOi0dH|xڌHD7YH9klOQ7\kbǔ'x[ӧu-Z'[<ɳ\~V_ YS1țJ-2/0Ƨ$~^uYI*s{ٚ*ex=`Wf$!ױw\~n@oQn nxGMWIc2XkP"s;uz)Χ`ՠF!pS6Ye%%\`Ym-1xtXmrjTS)Q!AzgYs6-XiRΣ ,FY3$/. N-Z-eXK5Q#mw|<~EΤH\NMSm"i6K&@O.t:\@5 ui^k^ja   VS1Ǧ@n9@G3~K"\Cv*Rd8ҁ]KK)J@T`*BV-r| wqN#Mظc=Z;NP:7#o7DLTGә ҉^${`7hjywr_I_031}61M-,TRrHݯj$\`VDφ;dnhZ6'auVZ>y5ك՘h6EI-Ma[^͹N*=Qz섽ӧ[:m:|yPi 4V2Mq0 PWB42lQk9 D2IJ7? n6;yf-hHuI@yV yH^fv"0lm@;ЁpRk(]6aʤ> endobj 100 0 obj << /Filter /FlateDecode /Length 1663 /Subtype /Type1C >> stream HtT}pevXji ZԱc0 8Q!m#h6nI$4ɦNۤ6AŏcƻAqěgt渙;mZsn}㷿=8V!pWhw=h .qXG?xML|}s&bx'] NgY/6lgMѩ3 :6٥~̬s6ɠ;m`6X-&f28lF4m39p6?-Gm5 =֨du.)AJ^^da˄P( 9q.B\#CX,ioe~5Ip>شCA7Ϥb1aS&җIl*ͧ1/T霨JvtR33g:{@=(dSl5/e4M]Y7 xi^hdܦqqƫ*k2>,nCK~QA.MIؖ|Bk~EoHI0.D6̰[~ kj괹`4m','faK_v_z8M8fӖyP3ԡ KQe%.0 a]]@!;@ p7B;܎  h7~s鱅X+~Me78Ptm4D[YZ | pj>}qO)aS離)宮S?5O4IdU~ΗK@ ^O24d'$7yCݖl~:|հq"K뗯|Ys̔)l)}QJSƏtAk[X(GrT֣upZ ?Wɑ)A߷:.xqqI*,}(N HN'[%hDVa􏃜Egun+VC |R^BY([&Dd3E#x)QKԭ|F#J\;Ye__KLy5t::Zh LD92ăi|Hqghv?+a4pJh}3w`3tȎ1iB+gӭʸT!<уW*`U)nN} 쏰lyS/ŷ`-sʁhfu& Y$6.=6FFݴ}椦kN%)̊I?aU}@*M_x,m%]XWǸFlL&h4!1xB} ]ݙݘ |bEš 0 endstream endobj 101 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent 0 /Flags 4 /FontBBox [-27 -250 1122 750] /FontName /CMR7 /ItalicAngle 0 /StemV 79 /FontFile3 102 0 R >> endobj 102 0 obj << /Length 560 /Subtype /Type1C >> stream CMR7) p39@IM\1.0Copyright (C) 1997 American Mathematical Society. All Rights ReservedCMR7Computer Modern123BRQS9qNjoLK0bg͋j~'ege'9qNjJiuP~>}L讧Ǻ !74/XWҪϡ=:4MFkgo09qw!¨oU CfQc3asloozb-N K06U;ixwlЖu4a}]qljeoYr}w?naD ڛ endstream endobj 103 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent -205 /Flags 68 /FontBBox [-30 -250 1026 750] /FontName /CMMI12 /ItalicAngle -14.04 /StemV 65 /XHeight 444 /FontFile3 104 0 R >> endobj 104 0 obj << /Filter /FlateDecode /Length 5156 /Subtype /Type1C >> stream H{Tg2nD@8cgoGĢ$QDDcBRrY}w}AD7jjMTJzHoGK&ǜ3s}<~8a8KNM]p6Vd1Q2q\`VN桺&%4GФЌiQ lj)ZT)ek 3s 2c_I/(eo*V"y:6>~:)OޒUfJUyCz}lMqK\cE75E]fy%:5F0<< ¦c3Ŋ$|95D^(a"1,~a1Ű86bR[A`kpl{[͕,a~ llݑ \ѫ'ǥT^|䰯&pᯇ9bs':Gm'&N9A.S#FeK=Ơr?<\4iB3&i}[Z\7ZYя#dRM@3{MLİ5('fq N3(b0mDŽPv@[bE5M^73oRfQyJ|ʹV)hr<}` +A.h2bd 3>H2IVCQ&M<>T*|ųы,MJ3 ԭA׉2(3@E`6pjb=O9i3.ˌYS,&9 5NKyc}JAFk<?>.~V|]r]V;t8 8^kh49r3%NRtݵEhjҿI&3\c)%xn $H҃BJ m-22H>Vu:, m2028t:Ҵ|bܐdtv7΢Uon` WG=lՉzSS`Kx;>FjF#2S]97i/=#"dBӌKdXubt͏Wڰ$XF-.bQV p ,#)3*'eL~h!?|V\} 0^VWMammtk@e VY:۝st)fFCВ7;s|Q9+-+Ƙ=0qĩACdFbt( `t^I{W/9EsŰX4 ZN. eO'!<`7t"w h9~>;S%G5rCyHGpx(c"Pd l.%e0!.2J B#`E)R'xjeO 긔H E*XiƂ2w=Y8R%FX-V/4'| [TU6|8 u[g@KE!<#\P`;s9 Rl ed?\Pu̞mqb;>4Kn"Πߧ_]C"h+e5Iiɬxkvrfgm8ZO8L˲x(9͡)>otV?3Ld_ys;!';cR`Ɏ+"%k%]^ۆ6[=lk[Ln; {+ nBՠ C=OUЋt[RlZDt0NX3]HI>18̺ZL.:=1w~bq:At=p`m5B el1Ě[G8Z5` !ZV<>ҁP1pjOg-]xal4&JRk k 峢eV+5:+ie?:3݊OIPwF6Q.89 <6sTC}8$aDёP?zG:3#},WB^dK#8~R: ~\WZKp\7P9>9pws1#$^ mu!Ɨ6(M?փ 1,bjD5)цv7;Tf\)­,҃o$@y|e1~nylj4˴_^L (-dP D!Q["}x vd#zgb*!dIwhmN)b`b8l4:BRT,R8"XNlk>i 9bΘ#%- ӄaײ2]K;f`t-i<#\?igd[^/!(;1)vnztJĆ;m%BCh 0kA;^wT]!ɏ{6_'v^7>Fɇĩw:7S`9cE{ R J 6$EKjr(RffYqVwV݃_?|+) ¾@+& NR0Y}dTZ>(+o!/GXH4%-QpU[H֩Ff]'6MKhTs̥HiL2R: jݏz$\pqR9V )v1 1 kdZs!GNJxΈL.֘49,LBw=a%Ǐ90礗8عR Q1m"i6IMzL+(c"dX)3 #?B>5 =ѧp<oI endstream endobj 105 0 obj << /Type /FontDescriptor /Ascent 698 /CapHeight 681 /Descent -202 /Flags 262150 /FontBBox [-53 -251 1139 750] /FontName /CMBX12 /ItalicAngle 0 /StemV 109 /XHeight 447 /FontFile3 106 0 R >> endobj 106 0 obj << /Filter /FlateDecode /Length 5120 /Subtype /Type1C >> stream HlTkPffzA@vQDPKECaD: rcx(0jL\MZ*+n&iVV*{{GR$Iypx'~ ' Ra͸b4}<_Sa#9N3!%Iڏv%P R/Uhu TuxLnmJLޘIfd&o7hӵLm!RiqZ]*A!mćD"&BQ$+H D$aoC8SCj ~RbA)p%IKEW7+%)I^KwJeJ@Pw ⶭmrn))gs8t<:U3uisP6gl{hG:`$p@J%.+1( QA%XR&SYYʤGEqj$?bydon{ ێ;0NI)ޞMky}b^qrc*#acֹB VZQcɢ,0)* 0_!ΕcRH=޳N0{&}]>B#]p50ǯq??ߪD&}) l72jqc Gȳc5Ʋ*3gfu0w_KZzvJI޶R0=34QI}'zA!\$oEUp~ =5nMyG5ufqcHqzO{A#uv:,*[@YDqAd E$ARZ-zh-9g0v3$]~~^'Y僴@pPQ*nwjݢ۾\Hsg0/^׫_7r>a#EI(3CD :P& irwCEïb~E e934C7n-N-1M8O( rEP;izjQ+zQ$NG[=3<8y2m`vb:c7gǮ-€50)>- )N~U8>!%/`N|e}b_6ʉ5ZQ@$HajF4[z1u, ZpBI\ޞLnehUkFbR֧B @p_ah2M)SNY"EH+(3uAH:">zhsZĵ,O{aδ+@ }F |aE h3 ̈́2AQf1Bp4 aCq(8agWЈXV[ _XUt VO`bwk4R@E]p {||kZ3j^ Ql OQk39XE![MLFcYymbSLJ 62K=8OH)tԇؗ^2 a:VLh13)&z(5 k{}RT3T<9s2Yq7Sg#LdQxYz= R,C3O) +w YVSW_#2~n/呰kK70,)$&U202Pg}٤(ѕ莗9nhp C–))}؏: Ox%=f6wi`Ly>粲TQtP]bX{.#)f+= y?DK ⸷)tFOOu -:SQ275p@|jU&U(B0J 8ٕ[4M0{dU 댰$9IvDR幨&Vu֐U` <;7pk,)NF$>KG(I FMX;e0 .^.[ $(= 3xL|qSeSڄ*lch9X;3> $.p}]Y܇ޭU} ~>Wwa%96H)=$w8h?6bv]a3tU3'.`^Zv9{x7ɫꛯKkloFi?o7Cr i.^؞$F_?%H9^p8o-iC~Wa g ~|Uv%J%TC}'΂9gDCsԼ/+ EJ3LB i* ÍqwgM{+@/aVftmgۇZ4fd )DP_QQԹR yz}Ʉ 7'tu9t'+V5)9JQ*<GZ [\O/d]O.;&& ^wi__?,;aq3QY]{d5hr(U8nb&3HJۨhyg_(p)Š.*-fqdx)³ô&n+GǢ힏yf/5unݠl/L||VZNIA>P: D"{Hh B ޫL ުlY2حWb2bb,coq=WCmO~/-טGD=NR󟛤vPkǾ> endobj 108 0 obj << /Filter /FlateDecode /Length 7558 /Subtype /Type1C >> stream HyPYǻ 98<[x"j22*⊠+83AH #! !QWb,utQUe Kİ:aX 5&lxܭ{^>o?xlahH1ͣœ%ZUwa5'um2ۑH0jŨ7G~|?w1eca\'9©Bw| ~.QE#?GI+&ݚ09 I>iVpŷ]DRh;q Gxn7 03,aA/|v w)Z"TRUѺ\O"!ϸ>_rDQh`PQϖ7&6|iC^awɸ# \ҼM r 2'U3.wEBZ21 Pī'_qɯ: t #L:Wk rHYYb7Fg?LИvf_Vm G/|eA`H(sc!0Hu?,Sev8ņp|JPa!*0_C#/4Rdіjq>/%QUG< $ZS$Un{,6vQ&iC̺T<3%.^砇Nŏpk m<8}EkH4f8Wp2{J/V]<؋t510n$(t.`2Z./(lZ:vj SbyQAXL .>h"z o A)P%󯩧QH/'Bt["'!I/sY~; )cZ%eslPȉBU6VԀ*r@jH?~a~_[iTURJŠ2vy dtzA7(j5(H{ <W]sỹ#Þ&HKZQ勉7 2_po;džJ`2<:OKC<`0eJsyEP"mXcWnO{s[ݷ)n-j[YdAHmKE.;Oq2mMϐh#FlB\=?-32 x){(j RԬ. A2o '$ hc;Xڤ :z}jɜOֆD/gz$秳z;(z'$N+CJ;Er_ [ tc D5u ӗg=uN.c/!Ÿ` 2+lS̹Ƀ} )1XůS31Բ8[1r̔0So<3ļSscuAd.[ݢPA %  OGPZnUZpCm=/s lO'_y~C:]a>WWXĞR{u yZmc7|k lv)`@k*iO7[{F/S1c*m MC355I\b]jbTIW< q!0\Y2\Y~Yacp1{#Z/_|qk#62F!ދt^ن4~GSTGS[:i9Yw@fȽv'Ix< գ#E\ *Ax:M!$pN'dNϜ=%8?:+Hi25͖zHڞ00 yU_ʯ\rybnJ{+;GǫϾ~KW n2cmF+G<MV^TZԴރw`$B9t:8Gt9=yI#wg,MF'Љ:Tbΰ_ ky{Mt/OAQ{韼;ٌ|fq)qrNM\qQѯ9lj„Z3QfprHȨ Fn^k l&c{z7hG傞h] "z]DY܀Eq)l,vf'Z\.t5l<֩njz~,qX΀ wH^nzBCQ'Hd7 'm OZg*K_%pm9<`@O`(mX?M⒰~4O'֋L`v,*L Vj5TN1Czw!O/Oom2$i;y쒌es9xy=4@=,93v0zQBF ޓKA8졤IL`fOISx ^hl|vO!7x-vv&^v ط\b y|H/ti^]5-A~a C2sAGa%AV̳ Amz̃9}hj.1-H+27 hL)x 8BʳXs/ *.Uy@M5JX]^OJBJ?FkZ~KɁ\6v+l/S SJR!}$_mƧy6$ڐrN7>B$g/;Ξd5[\ҍ0YNz9atM;OD1 ?xW"MU $~[-Y$|(/m3* Ro"bW>{xQǩd]}*k>mfC_O,]vyy"_))8$tEq+ut8Z7"RU-"u*kPhH}WiRVfJ>.6n~WE ^]"V;RZ+{5JѩR1f'(Yfd%ut/i{? K :B^"0Xo8Vuc^Nji5v JƆDz:%M[M#<2@$U< l+x?xp/8|?`>#@hoNEсJ2 dT askV{L;Rz2wg%Ӡ驸}G,mc8|u@u<ڮdԑڤ00̕@c܎s읢2KRT_ ~nҋk X,=~C7bߕ*kڿb|J *[dZ>lJ%t.+6XPs)A`{!! 0_ګ=+1 V[^Z[|U|PV*V+* #$ I!@ B@]E;kөhVœq >v3+su}-z1N%< a# }t&CkBØ兙bi-nZ@|/;Ȱv~JW*( 7ɻ  Ӈ5.NH#[^;ߦ]668'}2^~\o" ațdv k]'Y"`JPK!"_Jl} \ D~CO p:bLG 8%h;q넾nJ](\PJR&UhSgWYu=r(2RG'cJ3Jc+hs$4qe:ծ b?/@d9Pnz@Ki3ЗEN=Xj5=sHy~tTvK(C!ƻTa/7LQTBZuG./VV m. ~>EY#C\1l`p؆Ʉ:HyYnXrK)8| sPi-<=4p(7΋=9=q`*"x3pO҇WOv\W*o3\jP*+HGk!c.Y v:&kuMuO|F=_,5\`Ȩ'>3 smi'Ꮃ} D/p ѡ0jIj4*[x8l4:##0;h%iC6*s,3zQ4/]۷hꄓ&l3Gxp9p`,^q޶՚nug-  '̾8BcUvު}zE6 ؔTPtcMajv>mV~z<"3 *m&܊N_4 4?^ 'Zm(r棤=ATo}|4=Ƽm<́=.n%)9 MDn{&1N)+sK!?-!ri-! Ш2rSovwSC1i@!yT .7{SvL'*`t 澃&<r8R"S*d2A*q8>.cLB,s4?kG%hJL Vk%o^ixHf".P&I~R<$o]8]]"]f7= baWkbxDt{ TYꔌp 8a9Пuɶ=j+h!{F![ub:P! [v ߍ ݬJܸu"(.9)>T]goZN tbXc24(1M"ڛoIY.s< k"Eph$ 4d^;^hR$l*1}e}ۺŹۂ 8%!&sY_څP'd:1 r@!`XW8$z-n<N"!D\~'~F0o*si#t1Lu\Y'LʊWC[\[4KiOg.}|'L۝}CGґpv2Pȉ%f78@(>ѾCC؎N:" |:KDwIWi2 D`W;t  ޷ /9ʊ܏Ԍ+-rLڽ9^4jCw0  (_ w nфxk{u[CYzԚ>Y5cuOT%i %=%Ҋq`q7 V0X"W7UTd6TN{; M_G,HA,j'z_/6TL\P~bmk^ll\K7nW]g endstream endobj 109 0 obj << /Type /FontDescriptor /Ascent 698 /CapHeight 681 /Descent -207 /Flags 6 /FontBBox [-251 -250 1009 969] /FontName /CMR10 /ItalicAngle 0 /StemV 69 /XHeight 434 /FontFile3 110 0 R >> endobj 110 0 obj << /Filter /FlateDecode /Length 7535 /Subtype /Type1C >> stream HyPwǻgd={լ`,nA]9fqa r *P@TSo,]GV6ڭM쿺}ᘍq\/m"8g+!7ˆk?!K0zLA0>q}@%ޫRRU8lwdnʼb"e~ʸ%( JQ\e^ ,0F3&ڪbUJRj2&]a@ޕxIX(EPy%` iE2 [a09X b(&:ՂXGB6;m6]6cDqPD>ۊ.m)=S3unIӈiz*jGcSt %'OޛI̬%;vvs:)7@= ~\\(,`/ebvy9O2Oq`ׂEF`K u8C߱upOȍdQxa%JSzC7kQXN(FN!`04wz8ԕ41zMJcnSkkM}^. HByxU"֤JK礼_L~5PRe"vAx<.r vN\9q(8h(Uevqx- 77ʬf3jo0ZE[BsI=0*[t*#Lh lA^G͝)h}"ʨj,f8W p 79dUEeM-ըjTe-1I@8d_D z8JQ]0vlE|}G9,Z*RcmUSPu2ORrv&rQr%({򨎅KE> i)uUAMqo ?C>"^36Õ8mH9l{*5-!TW]^Δ] r E|ؼj5:oR?,rG1EtZjʴA Bmj= twSOr֧lj4ju(R3 ҁx lvOƍɺ`3.Α srBlV3O?7Kȭ{ܳK'o8ՕUW'2Z^n!^"o߈< 󨏠\#لO?^N,sdy>\N!9DF=R!06H} +3Ю۪6cXJ^ϼo7C8߂Bx Jz?w@'M`Y>\$$wAs:YKMWNT ?jO?B.z⤢l¢ FkD?p d?r@ : U c.G-Xy&?mB;'M: [ԧ_9Ac?JSsGˮvV͜ {?poL gBu[CB_D Z][> O÷lc;--GTS"!'|Ƀn^XYBEɫ>==HشT$׫<޳;teK_}">,B&PUy zOH':n a ?25tq''9vO=+N54\[Sd]1[%s VѼ5t>(b) U˘7maJ>4z3%}L"6-<75lݶ#'(mGPZr.#=|_ulx4a9uܧoaDsvKC@4"Q+}Lv(!'}Ćf򣌾%}iXIpv4Ƃ-T(ؼ['+';pcB.'L!9* J#U'JLGqC+$*J%. 0"{X"nfhF@LbTF3CI%^%UsY)swwR*{+(yf>ǂ7M͖a6s%ȳ:ʋdbfgld]<BZzoZ\a$ϖtNc-HcD!3s֯lYJfZ3?Upη.xl>P[?ͪB6IVﲷY{awmϣ6{TiX&1` i qlv(øYՅQ!I>뺼SP˷x<#i `2@WF~^҅JMy lk]g!dEBkn$!t'o%yo9zTĄ"ǍN\ɸU1 $s*Z2O"D_0yTl4%G>C6legZVә&%ۆkDER#WW1 ^$*RR%!PNڛ=*Kk518U]KĸO(~kXZ)L!t6 B0e@F)TmO 5fE$fFmɓ%_Qr"-&~;,XP0cP'w(3x垦iYy+tQ"7#BXHH"UBjp\ۭXې݋/M`x0A(3 ﮇ]D+HGCET&7mx 6O ݀Թ]2<{9HGA;,Y x`kpu_`]@ƈCN$WV˕k(e}W#??A=ǝOAMq8@4$&@'.x'L,"gA+4t %}%+~xIin8wx^8 5gj2*)fx "X2K\Luq5Ш=NunݼYHQ/*&m̝g|~w hW#1.tܗ  eLeF&Ib&sCZS3HB|A5hmφńsbAaag~lք?HO~K= ' Ԏ0J(/C,v))ބ uly{sPI^iHTêYt2f?壽$,I''ÎT8$8tب1R*/grdh eL*EKFZ!qL.KO>H\b󑪈'Qۈaf@7`D 0~t=J s}{1 sX.K3V` ~+,|ȅy>8-'= GDpn0H{ᗖ#ZMCR(dḽuXYn YDDrJ)' ~a .CJNSA~vSl3C}$/0#!m^N:6o:ނ&?Ny7r~SjؾUHMb-)Y;DnG;~m/A:Rړ\Z5޳>d>]ݒ]xg&"G)j6eadH2"j^bԎ#7f%9g׵v_8%irdGG1\k*V2~A11w6P:.aPTVP"#Z `zci+ jWEǐ:jTTC>D+:H̬jTq@9T1\}O &P(n8ȋo+H֛1:o?koRp&Wj ]LTҥ!@:DǾ=5ڐM)SStel3Vށ}%X~*oM^@; {wL<8'ߣK"?my(X{p+ 1K ;1G`=ヂk\" kG?#\keV;|Oח`8 :";T"qj7XX,A=5O #dRa,wKR#hy`7zx2rYJ&j2jc\elW)yD Vn.LV`γm$%NuW,@v?nBJ >RK2O0"hS(,^Q(x x]jI1H6)h6 R)% [p-6g^̡?䙢AQP4c0Vf jJ?:o-ag]\QKC53ɔ3P;ң`;VIq;@dVNx=!xY3gNDaIvˬ2[u߅y_Wx Rqk@G݄;z(D6RFc4?k b]MU M43]'& dѴNy=px=.n [5u8jRZR,-r k*j md1DKLZ Ye7$ cIaU5؞ms}Ֆiچ)Q2ՆR :7CvVO*0{ KZ<+ ~.eI퉹#C ن78/5̺6M%R94$]nYz.cp{l` $p8﷎sDn)ΤDDuNkLٺ, i#wB0=Ӓјژa46Z8Q+xDN!pTISc/U}NZύ8yj'~LYWVH BL&rr[zh P*}\9Ͽܕ)95]ŢTXX u6~Iayldџ8Kq#ڟCKP׫H \e;P II7TFAgR2liKcƋqȼQ Pp +UP#(}w:)>M]n:snsށ>%6hjG]Ā-y D$A' '~ƧHt1o*nTG!.+Sw@ifaA*0JQvQ ƓYnnmYFӸ5[t ޙ,x)Y FtJmY ݪ_~50Kp OsOLk=WэW  QIty$**q/g ;A|7^=|E◟& ׯ{xzR*@u}1|qy2y$vk3@C10(B\-DFA_sC9$"p:T5pF/;2f!$юN38ϢlGI{tRHj G66b/C #\/cDIHs0yW=E%U|m\Ű DI B.v};+B18N뛜lT̘{Gf\RBMs0:L !]vky&?02h·u h/p Y>JtM=y2s DQv|%&~VK.k!r-9ynCrP1[㢏M TQDRu1< )zNOz܏%rz=_݄y=' ~`z~Pl֠*NeA( ^7KZ5pB[bt& SSiFֶ54"!`ÓJV!qq9\V,ڡ endstream endobj 111 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent 0 /Flags 262148 /FontBBox [-301 -250 1164 946] /FontName /CMBX10 /ItalicAngle 0 /StemV 114 /FontFile3 112 0 R >> endobj 112 0 obj << /Filter /FlateDecode /Length 1038 /Subtype /Type1C >> stream H$I:%CF !bDdbW-ԇzJp@‡$3$kR**ƒb:2%Jp urXRX`Pg&Pή(,ћ̱2uF:K_7ubTW֘FuFNo4D4(%АsBe'hCId[zC*+H\<;l-sH'> endobj 114 0 obj << /Filter /FlateDecode /Length 4272 /Subtype /Type1C >> stream H|yTW_uuW J%.KuTdTL{K@hPyMH4-Э-1%3h-̭#)S[[REQt{Rr/,rw)z KBg(EÇ NHLKY k"c/׆.GG-+X휄1ڠX/VigGLND>2YydrThW'kiʘ!/{+QN:O\ϧ>u>w| u7՟ZXЏ@_ST4Dx9wĔ -oI+eͲ"'qDGN3fZQ)U1bV:N|[mيn̷dJp10 xpQZ,My O $D@/ &W`~L&:m ]O֙rrykZң|L&=|5-"uB1QQ}+\#|mdC #́ (#ذCHHk4`ށm('ƈ UUa_|s@1Ą]۱˩&:xв.r:Zg\/SQZ1

?ڿiغt1y9L)"e5{' o%ğ*/)/f39b)FB: ̫4|v-eV t/R{1e"F[AhM%W4;Ĵ^zYlGn^{VM 폛%'?dVǢ5/IB"l tcY>}}u5pV`<1>}'ӯپyh8o 0#0Q v)qA;>yT!]{oIu2H$Wi1pVWTv{%^=/9%FknFf\nY9'ц &4@Tn/–s+lf-%;ۅۘ }:<;=d&5T9xpˤab̈>  PԷŤ GiLU* 4P&c~ancZ@YCD-ۄ͖ڡFGlO8nzzYmcPwyƛ@Xcf= F2U h5BA Ʉxs&>m#TVέA4/W}F{?3&,TYpl噏@#ކjRC ˤ""tjk4Y{wϥдU ۽fyX|B X ,qp5_)',UպjJ)G8Qx쐕uU2TZDD}_7j!7kM3yCDR)NJ'6- Kngt)q ԍKD6v~iΑ:;/C"$Z_&6{bԦQÿ _!W7ENO/n az=/^4$FRH'C ax\[zVNnF#6; C;t850u͔&v?lꏽC4u?o$$v^>&׫O6 b-*~ش |PD+SQ`+]?>\s! ly> 1&rxAЏ#?&2v?~($F\;|,"N mn Ojv']\*`/Zz?EvNGq,'UXcS_Ь1%l_h+Sދ&cZ:.ׯ !ݴxP-6Nzi90W}~T<[,;þo۾|J/_rC0z<ᾄ*"J(+JT,}#|ԑU)2[dʮo!Rr◾u㌈):۷YT*S#ڀw䳓YG3iuyT?iUj\&=q \0yid^[ uPW.KZD}Y14 _Svó)w<s[vg`hQ _N0lXyZJ? Ḱ-A>&A$~3{^$tH$3 &*9BB,PHEH ic*7GDR2/ Tf2/&z)!v4z%&ä0Tf1jdzHUeYi0Dӏaci5%FASxwo9E(nG{v[/Ц(@)T&F,"DR\G\tjBWehUyA$G/ث*t;םLL 'E(ЁnR}ȏ1 KtDcm}%ZlmV-ݞaKh Q.)> DyR3g>J{p̷ٞ2T~QOS.) š/%*(8PkS 3љ ?827m"E֩[žo+;9^^7?0#f#85ct]88_ A~ endstream endobj 115 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent 0 /Flags 68 /FontBBox [-32 -250 1048 750] /FontName /GCCMOE+CMMI10 /ItalicAngle -14.04 /StemV 72 /CharSet (/comma) /FontFile3 116 0 R >> endobj 116 0 obj << /Length 298 /Subtype /Type1C >> stream GCCMOE+CMMI100J  kGJMKQ`1.100Copyright (C) 1997 American Mathematical Society. All Rights ReservedCMMI10Computer Modern; NMUUU@I_rdjwropq}AhOjj u?aD endstream endobj 117 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent -205 /Flags 4 /FontBBox [-33 -250 945 749] /FontName /CMR17 /ItalicAngle 0 /StemV 53 /XHeight 433 /FontFile3 118 0 R >> endobj 118 0 obj << /Filter /FlateDecode /Length 2355 /Subtype /Type1C >> stream HyPwǻiD6vO PJ"hM(SbdB NDiƒ\&Ҵ>ur$tTI,U.T4iI2V 9s7oJUJj&C@֣;!d!&AbHARpy_^bV>vg8O'% j!^zR[tSSqt}f4tۥPp-\` Kb+Py:0@=P7A+?+p z&ʩ lci~:80؆=6(!8d7PKy ޴70=f `-ίflx*PMl3GDA#t{BN._MN800pbǀDi y>/yāWK Bہ8L¹#OY.aHɪ(jIƨ;?stp ٫W\j ޅ`;:6LSOnG9pr︊y`OjJ).̨֜):@!&N)tv#ra4lY/6my800*ɫlot?}0ʚ@ |PRT֒QqX_`42z#L$ݰA:^G&^@qt^ӑ6謾ÌjC*]V {nLD=~y>:Re *"5:߸eCxNf(xeF5oz¹p(6Yzf:PeX޽521#|aM P^N bl?9=}Xz5 z:XjR1r;vZl!{k@WK0zPІ&o0̬><@ݹv3N7d:MTq [ha<qVy^UM>!IVҭ8k*8$ ;Κ(٘*IwgH8py E운T@-mr^o$ihY:$,~Mz9G:L]F8CYy,>w`` ?Aڵ30Mchۚh8 hٱ} $d-jd MBm71<.LurᛒZN^slvji#~/{-ZU751V C,GqìYȰE_πp*ۼEP|E0/:r?Mɣ^nK7էW0>$`Wsz94Q~i[2\8:$>i> ]jDJ|3ӹ,Q2j́j6T_ &n#OW`m{JS|%d5.t>h)!gU\liegKjłɹiO |2vif5jqj}nM+!am\P~)AB5 ('\.]-P> \W~wffӅB')ttǘYv}VTmĉSw._ YNhMaYHЫ:ޡjͪdeʍg,H2&*giBih@0E$pPB=wAt/`+\E_ІA҆/j >٨4u+?> endobj 120 0 obj << /Filter /FlateDecode /Length 1974 /Subtype /Type1C >> stream HUypߵ0f]dr6.1NC nƖׇlIF9F6OeRd66B" .&ui56?2ә>< I_lvD!Q8:Dde=\zՆ-ǿ 9!P0iT;9I8uҔ}v!#-ݤYUSy] $*>ɔkLzWMyTQYYFUo f>6;Tޠ##&M% %,Nm0rȧD4I !DN" $E$ĻH% &Ir y%-}$gBoP#);"OqG0iHb_ Cj}fYzzl#E;^3䯷PPJ"uZ=NY0S _4\ʅ xcA6S3)V鴽ܾu뮍/y;s߈KYzrO fhӗy(C9N.ǽ~ywnchM ̠"N~I)rcKuRū/xZѡOxh}wzBI$^>[<݀@>UlXW4;k,5! I=cFnSdߧRp# Fq!W}+>?%s6&Kz%~.)h<;ʉc% P]]0ũx2/oh_2cJ1}A˥chc ȺB w,_O Z 5@̣bgN[q n&C!GlJycI q6yϝrjTO ~6?`Ae4?y47dBQE;Pd+*&r^O[E"xx3[cXcxd),HRQWj~Wpdĩ})V)c+߮Ynܒgg3=9(_%2IfGsr"7ߓlƾƹ&;PVC9-gЅG/- Jm硦&_^"ܮ궹{G4d!"@A@ІDI+KWqI[ _#dZ |2jfmVjR~c0suSZ COa *]f7stk9g*w*픽h\{Sۀ[+D ;)]~4|(O endstream endobj 121 0 obj << /ProcSet [/PDF /ImageB ] >> endobj 41 0 obj << /Name /T1 /Type /Font /Subtype /Type3 /Resources 121 0 R /FontBBox [2 -116 69 3] /FontMatrix [1 0 0 -1 0 0] /FirstChar 16 /LastChar 80 /Encoding 122 0 R /CharProcs 123 0 R /Widths [42 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 ] >> endobj 122 0 obj << /Type /Encoding /Differences [16/AG /AH 80/C8 ] >> endobj 123 0 obj << /AG 124 0 R /AH 125 0 R /C8 126 0 R >> endobj 124 0 obj << /Length 232 /Filter /FlateDecode >> stream H= @49sHJL!hBZ"2xA!fSH:@޾ٝ!D3&h !7 fbX?L6,D` YtC2CjLT2ŕ('7dRòrcɘEm֪BvC4ёMdݛxJwue3$7{2k uׅ)վ7Oz>1XG4G endstream endobj 125 0 obj << /Length 229 /Filter /FlateDecode >> stream H= @ 49s]wUp A+A,!Yo`B\gξ:[hum\j؀超Z4Jb } j&5*tn_b{'"#.ĕ"Fag± B intP6\/~us*Rz~XUZ,n"ᜮ[&9rT+,!מ endstream endobj 126 0 obj << /Length 277 /Filter /FlateDecode >> stream H|=N0T"KP_H+J$2 TV""f$+?^3CS>v/[5WZ+KCseOJ/kTUCuw6ݨ"mF]~a*|<\3@ 2q q)##IC|$!!i}t9| QN # ޙp='='=+ Qƒ+S_;_¦ ƿݒ7vH Jk endstream endobj 4 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /FirstChar 46 /LastChar 121 /Widths [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] /BaseFont /CMTT10 /FontDescriptor 69 0 R >> endobj 5 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /FirstChar 39 /LastChar 121 /Widths [307 358 358 358 358 307 358 307 358 511 511 511 511 358 511 511 358 511 511 307 358 358 358 358 358 358 743 704 716 755 678 653 774 743 386 525 358 627 897 743 767 678 767 729 562 716 743 358 999 358 743 358 358 358 358 358 358 358 511 460 460 511 460 307 460 511 307 358 460 256 818 562 511 511 358 422 409 332 537 460 664 464 486 ] /BaseFont /CMTI10 /FontDescriptor 71 0 R >> endobj 36 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /FirstChar 49 /LastChar 51 /Widths [681 681 681 ] /BaseFont /CMR5 /FontDescriptor 73 0 R >> endobj 37 0 obj << /Type /Font /Subtype /Type1 /Name /F4 /FirstChar 107 /LastChar 107 /Widths [758 ] /BaseFont /GCCODC+CMMI5 /FontDescriptor 75 0 R >> endobj 38 0 obj << /Type /Font /Subtype /Type1 /Name /F5 /FirstChar 0 /LastChar 112 /Widths [963 0 0 639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 ] /Encoding 127 0 R /BaseFont /CMSY6 /FontDescriptor 77 0 R >> endobj 39 0 obj << /Type /Font /Subtype /Type1 /Name /F6 /FirstChar 33 /LastChar 61 /Widths [352 417 417 417 417 417 417 481 481 417 935 417 417 417 417 611 611 611 611 611 417 417 417 417 417 417 417 417 935 ] /BaseFont /CMR6 /FontDescriptor 79 0 R >> endobj 40 0 obj << /Type /Font /Subtype /Type1 /Name /F7 /FirstChar 25 /LastChar 120 /Widths [727 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 661 333 333 770 333 642 333 333 333 333 333 333 333 698 ] /BaseFont /CMMI6 /FontDescriptor 81 0 R >> endobj 30 0 obj << /Type /Font /Subtype /Type1 /Name /F8 /FirstChar 11 /LastChar 120 /Widths [682 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 295 295 333 531 333 333 333 333 333 333 333 333 672 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 564 455 333 333 333 333 506 333 362 430 553 333 940 645 333 535 474 479 333 384 333 333 333 598 ] /BaseFont /CMMI8 /FontDescriptor 83 0 R >> endobj 31 0 obj << /Type /Font /Subtype /Type1 /Name /F9 /FirstChar 0 /LastChar 114 /Widths [458 458 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 736 736 528 528 583 583 333 333 333 333 333 333 333 333 792 792 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 1056 944 333 333 333 333 333 333 1444 1278 333 333 333 333 333 333 333 333 333 333 333 556 333 333 333 333 333 333 333 333 333 333 1000 333 1000 ] /Encoding 128 0 R /BaseFont /CMEX10 /FontDescriptor 85 0 R >> endobj 32 0 obj << /Type /Font /Subtype /Type1 /Name /F10 /FirstChar 78 /LastChar 94 /Widths [722 300 300 300 300 300 300 300 300 300 300 300 667 300 300 300 2333 ] /BaseFont /MSBM10 /FontDescriptor 87 0 R >> endobj 23 0 obj << /Type /Font /Subtype /Type1 /Name /F11 /FirstChar 0 /LastChar 49 /Widths [826 295 0 531 0 0 0 0 0 0 0 0 0 0 0 531 0 0 0 0 0 826 0 0 0 0 0 0 0 0 0 0 0 1063 0 0 0 0 0 0 0 0 0 0 0 0 0 0 288 1063 ] /Encoding 129 0 R /BaseFont /CMSY8 /FontDescriptor 89 0 R >> endobj 24 0 obj << /Type /Font /Subtype /Type1 /Name /F12 /FirstChar 46 /LastChar 121 /Widths [515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 ] /BaseFont /CMTT12 /FontDescriptor 91 0 R >> endobj 25 0 obj << /Type /Font /Subtype /Type1 /Name /F13 /FirstChar 40 /LastChar 119 /Widths [400 400 350 350 300 350 300 350 350 350 500 500 350 350 350 350 350 350 300 350 350 350 350 350 350 350 350 700 350 350 638 350 350 350 350 350 613 350 350 350 663 350 350 350 700 350 350 977 350 350 350 350 350 350 350 350 350 500 450 450 500 450 300 450 500 300 350 350 250 800 550 500 500 350 413 400 325 525 450 650 ] /BaseFont /CMTI12 /FontDescriptor 93 0 R >> endobj 26 0 obj << /Type /Font /Subtype /Type1 /Name /F14 /FirstChar 89 /LastChar 112 /Widths [814 378 378 378 378 378 378 378 613 378 378 378 378 378 378 378 378 378 378 378 378 378 378 558 ] /BaseFont /CMCSC10 /FontDescriptor 95 0 R >> endobj 6 0 obj << /Type /Font /Subtype /Type1 /Name /F15 /FirstChar 46 /LastChar 121 /Widths [278 333 500 333 500 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 708 333 333 681 333 333 333 333 333 333 333 333 333 333 681 333 333 556 333 333 750 333 333 333 333 333 333 333 333 333 333 333 556 444 556 444 333 333 556 278 333 333 278 333 556 333 333 333 392 394 333 556 528 333 333 528 ] /BaseFont /CMSL10 /FontDescriptor 97 0 R >> endobj 7 0 obj << /Type /Font /Subtype /Type1 /Name /F16 /FirstChar 0 /LastChar 112 /Widths [778 278 778 500 778 0 0 0 0 0 0 0 0 1000 0 0 0 0 0 0 778 778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 444 0 0 500 500 0 0 278 0 0 0 0 0 833 ] /Encoding 130 0 R /BaseFont /CMSY10 /FontDescriptor 99 0 R >> endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F17 /FirstChar 49 /LastChar 51 /Widths [569 569 569 ] /BaseFont /CMR7 /FontDescriptor 101 0 R >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F18 /FirstChar 11 /LastChar 122 /Widths [623 333 333 333 333 333 333 456 333 333 333 333 333 333 555 333 333 333 333 333 333 333 333 458 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 272 272 762 490 762 333 333 734 744 333 333 725 634 333 333 333 333 333 333 333 333 748 631 776 745 602 333 333 333 333 333 333 333 333 333 333 333 333 333 514 416 333 333 454 483 469 564 334 405 509 333 856 584 333 491 434 441 461 354 333 333 333 556 477 455 ] /BaseFont /CMMI12 /FontDescriptor 103 0 R >> endobj 10 0 obj << /Type /Font /Subtype /Type1 /Name /F19 /FirstChar 40 /LastChar 121 /Widths [438 438 375 375 313 375 313 375 375 563 563 563 563 563 563 563 375 375 313 375 375 375 375 531 375 850 800 813 862 738 707 884 880 419 375 375 676 1067 880 375 769 845 839 625 782 375 375 375 375 375 688 375 375 375 375 375 375 547 625 500 625 513 344 563 625 313 375 375 313 938 625 563 625 594 459 444 438 625 594 375 594 594 ] /BaseFont /CMBX12 /FontDescriptor 105 0 R >> endobj 11 0 obj << /Type /Font /Subtype /Type1 /Name /F20 /FirstChar 10 /LastChar 123 /Widths [707 571 544 544 816 326 326 326 326 490 326 326 326 326 326 326 326 326 326 326 326 326 326 272 490 326 326 326 326 272 381 381 326 762 272 326 272 490 490 490 490 490 490 490 490 490 490 490 272 272 326 762 326 326 326 734 693 707 748 666 639 768 734 353 503 326 612 897 734 762 666 326 721 544 707 734 734 1006 326 734 598 272 490 272 326 326 326 490 544 435 544 435 299 490 544 272 299 517 272 816 544 490 544 517 381 386 381 544 517 707 517 517 435 490 ] /Encoding 131 0 R /BaseFont /CMR12 /FontDescriptor 107 0 R >> endobj 12 0 obj << /Type /Font /Subtype /Type1 /Name /F21 /FirstChar 12 /LastChar 127 /Widths [556 556 833 333 333 333 333 500 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 833 333 333 333 278 389 389 333 333 278 333 278 500 500 500 500 500 500 500 500 500 500 500 278 278 333 333 333 333 333 750 708 722 764 681 653 785 750 361 514 778 625 917 750 778 681 333 736 556 722 750 750 1028 333 750 333 278 333 278 333 333 333 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 500 333 333 333 500 ] /Encoding 132 0 R /BaseFont /CMR10 /FontDescriptor 109 0 R >> endobj 13 0 obj << /Type /Font /Subtype /Type1 /Name /F22 /FirstChar 65 /LastChar 116 /Widths [869 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 383 559 639 511 383 383 383 383 383 383 383 383 383 383 383 383 383 383 474 454 447 ] /BaseFont /CMBX10 /FontDescriptor 111 0 R >> endobj 14 0 obj << /Type /Font /Subtype /Type1 /Name /F23 /FirstChar 33 /LastChar 121 /Widths [295 354 354 354 354 354 354 413 413 354 826 354 354 295 354 531 531 531 531 531 354 531 354 354 354 354 295 354 826 354 354 354 354 354 767 354 723 354 354 796 354 354 354 354 354 796 354 723 354 782 590 767 354 354 354 354 354 354 354 354 354 354 354 354 531 590 472 354 472 325 531 590 295 354 354 295 885 590 531 590 354 414 419 413 590 354 767 561 561 ] /BaseFont /CMR8 /FontDescriptor 113 0 R >> endobj 15 0 obj << /Type /Font /Subtype /Type1 /Name /F24 /FirstChar 59 /LastChar 59 /Widths [278 ] /BaseFont /GCCMOE+CMMI10 /FontDescriptor 115 0 R >> endobj 16 0 obj << /Type /Font /Subtype /Type1 /Name /F25 /FirstChar 67 /LastChar 121 /Widths [668 302 628 602 726 693 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 459 302 406 302 406 302 459 302 250 302 302 302 772 511 459 511 302 354 359 354 511 302 302 485 485 ] /BaseFont /CMR17 /FontDescriptor 117 0 R >> endobj 17 0 obj << /Type /Font /Subtype /Type1 /Name /F26 /FirstChar 46 /LastChar 119 /Widths [531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 ] /BaseFont /CMTT8 /FontDescriptor 119 0 R >> endobj 127 0 obj << /Type /Encoding /Differences [ 0/minus ] >> endobj 128 0 obj << /Type /Encoding /Differences [ 0/parenleftbig ] >> endobj 129 0 obj << /Type /Encoding /Differences [ 0/minus ] >> endobj 130 0 obj << /Type /Encoding /Differences [ 0/minus 13/circlecopyrt ] >> endobj 131 0 obj << /Type /Encoding /Differences [ 10/Omega 13/fl ] >> endobj 132 0 obj << /Type /Encoding /Differences [ 13/fl 127/dieresis ] >> endobj 1 0 obj << /Type /Page /Parent 19 0 R /Resources 3 0 R /Contents 2 0 R >> endobj 20 0 obj << /Type /Page /Parent 19 0 R /Resources 22 0 R /Contents 21 0 R >> endobj 27 0 obj << /Type /Page /Parent 19 0 R /Resources 29 0 R /Contents 28 0 R >> endobj 33 0 obj << /Type /Page /Parent 19 0 R /Resources 35 0 R /Contents 34 0 R >> endobj 42 0 obj << /Type /Page /Parent 19 0 R /Resources 44 0 R /Contents 43 0 R >> endobj 45 0 obj << /Type /Page /Parent 19 0 R /Resources 47 0 R /Contents 46 0 R >> endobj 48 0 obj << /Type /Page /Parent 19 0 R /Resources 50 0 R /Contents 49 0 R >> endobj 51 0 obj << /Type /Page /Parent 19 0 R /Resources 53 0 R /Contents 52 0 R >> endobj 54 0 obj << /Type /Page /Parent 19 0 R /Resources 56 0 R /Contents 55 0 R >> endobj 57 0 obj << /Type /Page /Parent 19 0 R /Resources 59 0 R /Contents 58 0 R >> endobj 60 0 obj << /Type /Page /Parent 64 0 R /Resources 62 0 R /Contents 61 0 R >> endobj 65 0 obj << /Type /Page /Parent 64 0 R /Resources 67 0 R /Contents 66 0 R >> endobj 19 0 obj << /Type /Pages /Kids [1 0 R 20 0 R 27 0 R 33 0 R 42 0 R 45 0 R 48 0 R 51 0 R 54 0 R 57 0 R] /Count 10 /Parent 63 0 R >> endobj 64 0 obj << /Type /Pages /Kids [60 0 R 65 0 R] /Count 2 /Parent 63 0 R >> endobj 63 0 obj << /Type /Pages /Kids [19 0 R 64 0 R ] /Count 12 /MediaBox [0 0 612 792] >> endobj 133 0 obj << /Type /Catalog /Pages 63 0 R >> endobj 134 0 obj << /CreationDate (D:191020725160812) /Producer (Acrobat Distiller Command 3.01 for Solaris 2.3 and later \(SPARC\)) /Creator (dvips\(k\) 5.86 Copyright 1999 Radical Eye Software) /Title (p.dvi) >> endobj xref 0 135 0000000000 65535 f 0000147711 00000 n 0000000016 00000 n 0000003653 00000 n 0000136867 00000 n 0000137314 00000 n 0000142127 00000 n 0000142575 00000 n 0000142999 00000 n 0000143149 00000 n 0000143745 00000 n 0000144221 00000 n 0000144844 00000 n 0000145475 00000 n 0000145828 00000 n 0000146329 00000 n 0000146481 00000 n 0000146845 00000 n 0000061321 00000 n 0000148716 00000 n 0000147792 00000 n 0000003906 00000 n 0000007987 00000 n 0000140696 00000 n 0000140973 00000 n 0000141422 00000 n 0000141888 00000 n 0000147876 00000 n 0000008156 00000 n 0000012192 00000 n 0000139272 00000 n 0000139857 00000 n 0000140486 00000 n 0000147960 00000 n 0000012426 00000 n 0000020827 00000 n 0000137790 00000 n 0000137939 00000 n 0000138090 00000 n 0000138489 00000 n 0000138743 00000 n 0000135432 00000 n 0000148044 00000 n 0000021115 00000 n 0000027268 00000 n 0000148128 00000 n 0000027535 00000 n 0000032564 00000 n 0000148212 00000 n 0000032785 00000 n 0000036637 00000 n 0000148296 00000 n 0000036859 00000 n 0000041466 00000 n 0000148380 00000 n 0000041688 00000 n 0000046784 00000 n 0000148464 00000 n 0000047006 00000 n 0000052317 00000 n 0000148548 00000 n 0000052526 00000 n 0000056529 00000 n 0000148934 00000 n 0000148853 00000 n 0000148632 00000 n 0000056726 00000 n 0000061056 00000 n 0000061198 00000 n 0000061393 00000 n 0000061587 00000 n 0000064812 00000 n 0000065017 00000 n 0000072036 00000 n 0000072213 00000 n 0000072853 00000 n 0000073056 00000 n 0000073587 00000 n 0000073770 00000 n 0000074526 00000 n 0000074702 00000 n 0000075901 00000 n 0000076096 00000 n 0000077348 00000 n 0000077547 00000 n 0000080241 00000 n 0000080418 00000 n 0000082262 00000 n 0000082437 00000 n 0000083208 00000 n 0000083392 00000 n 0000084419 00000 n 0000084610 00000 n 0000086901 00000 n 0000087092 00000 n 0000091021 00000 n 0000091199 00000 n 0000091860 00000 n 0000092045 00000 n 0000094752 00000 n 0000094938 00000 n 0000096693 00000 n 0000096871 00000 n 0000097501 00000 n 0000097703 00000 n 0000102951 00000 n 0000103157 00000 n 0000108369 00000 n 0000108567 00000 n 0000116217 00000 n 0000116417 00000 n 0000124044 00000 n 0000124231 00000 n 0000125361 00000 n 0000125557 00000 n 0000129921 00000 n 0000130132 00000 n 0000130500 00000 n 0000130694 00000 n 0000133141 00000 n 0000133318 00000 n 0000135384 00000 n 0000135774 00000 n 0000135845 00000 n 0000135904 00000 n 0000136211 00000 n 0000136515 00000 n 0000147286 00000 n 0000147350 00000 n 0000147421 00000 n 0000147485 00000 n 0000147565 00000 n 0000147636 00000 n 0000149026 00000 n 0000149078 00000 n trailer << /Size 135 /Root 133 0 R /Info 134 0 R /ID [] >> startxref 149292 %%EOF core++-1.7/doc/papers/prover.ps.gz0100644000175000001440000037030307443425527016352 0ustar joachimusers.9prover.psku%~_qۦL22 L2U5Jm2D(!YZ |&qOWk߿߽z{O}7ӯwiYz/ط}W_xݻ~}Cqu,7q¥oۗ_w^}߾{/?<z/{G{/|Ͼx~E_g}kO޽^ۯ߿yՋ7_=ٟ޿?_=P{c_ORKolT}%>{ }#3W/J/z߉^~^~c'/ͫ?<,=7/ԾOFpx_xo/ tsŗ_'5|û?;[gz>.`3oKo>< |݋7o޿TWᄈY9[߽xիW_>^|=V˳?|o_zً;W|gm5o}7vg9;>~կ>xW>1gx~CP}͇wK1{{?< =xھew϶^rwg؜߼|ɄWo>~e?!dI?~xŗv v60~W~g8Lv =6-|w̿d9r/߾6&[pm5n??vo^}|ro[c+P}<#?y;&Gm]o޼jkcoL٣]@*}/l:r;|0E7xMup_)pyZx7o{::(˿2Tpo^ğ077)` |MH /(lN>R Ko_=o{լ=߾퟿y y0L$Շsfv mZѷ^%f!*4i o v.E~_ݮ[?9̚x1\_/^ཷ~IH쟞ylކYFi_Syz1'jA%$vv0 /=S(L7[~o^zmw&am7fٓ_we +1u| Zë;|\HVrWyW??9xo}aI,;x/'ڂyѻG;#}#,}o?Ev 7(+ {_s=Qw7^~;O]/x|3`M}^|xa AL,~>~"L* woK3͟|-|.~k,"Ǘol p; xݫIN݆xA/bIC>>|Wڳo{Tfջ_y|as{Ѭ<~oxo=%7o)xOUvt;¯\wbE|=||TMz5c H"cf r~~{g7HM:OO2o2=ݾ_Y1{x:fwW|~§?SCy~jR# ?,9brɦ>y=M_/3R~a~uxK3+{iIi3[跋GwˢDʷ2UTo?G5z=l?;I??D~E.)aܫw/ ˭^^-p7N}KOSzم(}!ni~}տ{A$Twh` bɒ4||׏n@wݲ3ӼHM5[^}_v&xzm?n|Gw>6fۥҙ-BO³ޙݳVgug=%:N{؋w/Ny56Mu0slrieFf7̔mPk;HC{_⯗ܔ^4o/4\Kqε=y:ָRt<pE3uεƘ۹˒1ۿf<7q^p±smkvZ>d'~w_PXǚ9:uZJr6;j^n?5^6{-㌫}' @_ijJ]>w\5ݢv!5\=u]eMib iIO ׶eʺ<ϝfNFks'#llqwN˱s&(b%90-rCi8,'=M͇G׍qnڧbv?F6=< -Y9kO'DK]M}"W4D5z;_yWlqʞj+vݤE767ߧGiYOWi[>,aOgVgfj.5L}/f ]gCļ`5F.l]Ig˸Ro~ ߱/w_=fu,%R\pl."-%IƜnwY`R3=a픸s?'!KZ>I.9RKXt1iX,l4٫dњ⣽gaeJbuB 53z6m8^mھlHl.X;mҴx턘]:^)cŦpٝNE$]u6&F DčmbJڎfd(UnI\W&m3f7bWU[15«ۂ\m8؍\}A.~s!jWb˧uB^.n9liʉ k0#@vϿ{5 {m\1wJM乇C*At X &:);Ð]AxCeyɱ+L37BKpJҁdS@Hs ʹ[) *>`cZV #tC!jֿ 3W0Pe0mOYjڀFb]4TJVh^alq #aY6wIf lksHji:z'DC%c7/(2˖4- uu;n,;̘uclƱ$n"gIw"I{/kz*dT-LzVAIJ1_?6=`ٹFJmd`B0\`t&ZeGf7dPI:?Ì y#7.ٹn^ =g_Č$Sm g`"腴m=۞mefmX9g~]0`sv1d!Z`煺r4 mO#=o?4 _ͭi⾜+MO,0(Et2f@>Z뇩=׷M; UhC{ĮwaGaˀ/29Q'灅м`V\)o'Xj&Yĉ:ĢǢv &,羜PxՔ~"(Sicٚڤ@ؠf4cL5ff?<6q*sm=nuu.v]٩7hJ_tADÖ>z3=f7:86K 5u>5?xm\/_F͹[ Lq)v9(^~<ٓ0 popI\1xu؆}M_{isJ2LcN/CYC;&N,#z vvF$6t0O'?c;NSv{//1ힾ|SMUپvP6vl)-Le[cv/NOϚ9ʱl!Gx0 Cÿ&4+Y6}7[iwطvVZp#ԋ;[0R…vn!Rsqd%T.Wq3T+V6ôrRO+_c 6G`~!1Fv*|oj8(|g{}/@Aa lR{Fa*ǀ8qex_h_Eo[p-؎'36)r~(Wh J6*X\&~~\}Laא(L\X:Af}3s`T6%$IJʴD>Cso&Q! xr =:n-' 1Tb W ~}++{xHi OmG!_Kw)|6<f`cxB1a$}i1'kC,AlN]{>.2_cf#SHa!>h# ql5"@l;p6MO^miƍ(Afךqgw l=#¢@XXUlY" _ f~]86G7NnS=L6 9~hj2PAIlk:*v'烦a_g ]TiLL'fw!H090aP2G`x'f3' œ6; "n[1i09 Nb6C,zmӉ5#β;C cwA@/AF{F.?-! snb/@&_ Eem!LBAs YaPyxEiĊxǎ0 شNWfze*M ˓!0xk68,{[!jH meŖݩ XUnCL?=Mjg;^| FXX $_e"]2] S2[aD>Ov =(5?]#JEe[Nd"sayNآA9f =Jn6X5uJ=sv*Y9CZLcboG̮Q%2hZɌV|1nf06ڪ4?Xz<+{DFy.81ԬQ9-{t` pf"C4!Ȑ\NB8#6OL ߂PqZ _qlۏqc<|.vR$d2̣2SŅlւE#:E]Ź4yVL|6I)jc>pp0x o ނ 8X:ɏ#:13  nst+cd,I;7mB A|`[)_L1hSEgxOfXBf.Ln({6}SNmSPx*@u2뾿fd9Pt[sw-=I v>Elp3&T]!¶%(&J6߰CM)gzqrN1yiIs`i2f?'4>+uHNu" P vt:t Zsd  6aSl:*SYUtpq1Cl3h' >V, X&g)>03l2k tP~Ga6Bb_Kv|33J5۝<-f(9  "Wd ׵\*Dx mwͰ,m6Bo6x%-¼岷!4[#iXXzX Py#.%)5B4Îg2Lo qOsŘɴyi⏔Ekxl/b"d10Bpg] (pFAE^b>O@0h#yXg ?1 ; >4Lg&ƭL)5fhOOFfmF减Q֨q#U w zGh.M|@sB0)zyc R-<j\*X;.ĉ +V [b~,p; $]w%wV@*PCnء0N'[j b&>;9Sy2B =TKb1=ٯxn 7~7ErwӢXMP.-HI tz-X^3S1>v'!HftJ0@crR^dʬi'%#,[z\YN1#Y0̨_'mt\7^C?0lv s )ٯ׻grz%Yl![Kk@U8Mx ]R{m42 HFɁDJ { Hf^")kh]FD/@2x8)9P@n(2iz(1H5b,Br&ء[iz3cl}N^@m!*B@gq2ȳ♩i;YjyV(_`iѩ8"(Ju;,w˂=<Wñ*LN7m !^BB/&]rJ.)aUBy &kߛc10&_vxb3?#sk l:-`laʉ`u!ͳnǠ;d4!UP3yvvnѥŐƝ=03`$+6MpڤB~Q.gFcas K% #CƇh<ݢWPvAF+Sw!k}p d^m4ٛ:t)^ D"vO HN@'-˸dT < c8t>nak>3. DFP3Ͳ`N@a+jacHm'1;B"T />:ި׎T!{e}kS"lTf nz^Bڠ;iU@l-x?Ƴ~\3sE 0$3|0`.9H5S;PB#8XBuͧ-Q7Tyٰ~6yfAIP zPHL=67ƎL=BnE}5JG,ә6T[&&K_0qNUap$\hK{ˋMFi37!togV2 G\(/0 k ;=Ɠ~ jvå#Fv;)w[Xvt؜.<3uYe6RHYG,&6~܄HU'u 6i0X} ̙/Zѯf;}'? [ac  0;Ux@[7;SބV"ChdN,m{&g' =30s(*P'MPf.;H;'& 3'_8ɁpćXAKFYKHHiXσ/2uo6k<).^T;lzXNsf'p"V<*OlG ׯxஈnlJVofJ3nHv?,ʱz>fΞ=R9]fm5I@UXG'9veŦ5?[%$vs' V#A#`6lۙ%#f:al·ĜrR2'^g̬W!S|n*E{NP(%TcgX?J܄ FQjl,(XEal7 8fT9 jdƁ\00I<<D* OO[l@`#Er!y f 4K*OTC&Cꕬ=$ݾG2M8wD b!%Җm0<'ʪƧE@#R#T/3C/ i?Pa<&Vݫ왉#XvLDuQB+jME'֞bDbssk]@>CxQĀ<.*H)U.#+#>#x/fpdb͍*p# -lqZ }LZ7g9o&T#&5(l0>Pee|,j c #6Z▱"ik 3I0H'{ѕݭ)'gfWۊ'q+"i 3qZ©2*K"8rbTP) +KJ'$Ȍ)= p9z0ĕ,ʎ"pNY0ZU1(O5R$jt*BC2 I@>U`w N[% I`'l:bZLǞR^Ge!d6LWLtwaAw-*yA8~Y SHTDUqWEw(L\c1>M [,,fmrİ:Y5IpEUgu00n[ m/0gՒiB5zFbbQkD$4\X̪ShսcT3mu#na]k`ɺ3֡t 8z W(O4FYMPP94o ¬@.KLqK)Ub2md:!HHCUy6 1uӐ9vJE*z7Hب6Wp5 Z &`WBls:܏/z%'kB(sM%ژ #{$$Y=R@L+sJpW'tjdb.N3 ,M61V%=m"BL7Ԃ!uS--\]{ ]LjL3* (BD5`KvKHHblXR 6/!]`3NI$eT& tbR9p]bL/dH$ QRm1}tYE]L`BaAi*" ,ETc>,bCFG&m"|"Ӌȅj ڿxGЦ)<צGT/ mSܩ.B=+a6B1ù<<mXI&`)N|E*zMZ2 =QiB0Y(l$a;pdX#Ax| Q"& |Ag6<{dA5Z!4 iTnn͑+>}:*k:gx'E1ί9O.$ӱh%/U6 +au+Vc,HVZnW +F4_a5;1z2 /WHD.P^٫;GdF'0ӉY ʕ?ba8B\ԃB,\q˜!qc!:(=0ܡP)yɴ~F8pY@ODTP$i]\8 1b8 !@)_rZnf{wb?ѱ"dz| B"40 RX_GK682<Ԣ#Ժ;l V؍=jI_3LSY?Sx!yd5(o/[߅^2Z^ <:u#{ {TxhzxTƷ^a R>kNy$ A䣉cNs!xMHy'P"K,hgOk̫\mB3HnG5:_83p@0al26qǓLM-1,D8/ Ay=g鞔:Nĺ3*V)RHzJJ+SDK+Lԙ<$п IJ&[5_5ÝY: .=E(U TWIk\N\ ?g/q9}d8=[ݷbOn$Qba͂` '#}y=fت{ʫ_HC~ޮ]>axuR(6I" 40W+cZjÍQg>ȸNtmo =5VXizI8kOU' CxYdIɿVK$U@coFLEdxxa\F_C@ EAM,S,;hC~BiOOЫRA}qHU/X@V'}z m9BnX]l@{It9B'6q(vpCɣ8k̚WD@_,bc ȅK4'EJV,>G\D7QZ|M%W9DPZ ^ѮG)1!5 :شG)qpêݍxp5dx=9jNr%k1HUE]#-|fbx_̮2R c\mRF#uܘH7d¬!$AL3ʺip+KJ"\L|)M6DѴ#E^wɬU 8 o533:]#X ,; c [+kh:2B5#{ qtJ?Kfޘݝuh 498ݔ֗ $?q  VRVF`jBIڗޒX2Q5 8NB%ꌽO]V6K4KG\\ʤ aб;Ox*n=*Ô KZ[(,^ӭC!vImz1zk…p3He9(V)4GėKa{ͪm?{Y+)ձҳ& mcGY VUx!״Ha.B[T> hqP'fL!\xxmn?$Ct⣉rsP߈ULۓQ]+|NG8YfC;B٭!4ф) #jkц"-ܞ:ʃA】f=JwgH.!8ӌ wMHB3Hfȶ;+ &ZREb12s3ϧRnpُ!k9Uj{ge,o5yB98dF'$h~{%)~m福* Kēl*j&9m^'t {r|@xh睓tb/܏,+Dx 20u tL3+XڦK%FNZ s6x*QfZ 6z#Ė'Rzߩ1_??o*бz:C:Yp c zxL볓)XN`T[Znds&|~JY GLzB(fP\S dXa-;eaTQCcs.3T:]qgQ'=ChL#\rX` 5cFr:/5:}R $)*&']M|+9)ectAi4{Ĭn8t<0"1쎵i`HGt+-694'%$"0XNۼ&g\bD77֣H: DW|no@$⽣j2p7yWª=>%g=SBhl'V+Ӵ̸k%{nIܱ:ԡUݭ r:Gu'5,cIzOI{Id@H@,9HqS嗢NVIZ.;ii%MF6n^E_I^ m4S5ġ?O48:*6ҽ1%$te,KK^ >P"7sBxfk%a)3T:*_Ey({zM&pTX6+t -&HF=~EkɑV thwU ?:p! ̧lԞDc?ȯZɷ|H30֔kڰ+7)rkw=J_(Uc< ҭ3΄`ڙs~B<6Q$vcW,5m87\% {Q/fUP66u6 EЧ@jN](I;DԒ83kHo~z)Fg,$P͘+F@8`!5û;=C* Ț@͸YU/9h\CIͪcwO7T7`1Tue9I_=D/cMGBn(F ncV*5ڳ"|WB[ٝ k;;S p/ j| 64 H-ua]JR2S%*'p}L<򓃕*a+3S/a!تتܩ+ M4YP̅2sxjLY2T'Ъd'.$غ &)wE1F97Jm95Y*mbme~ec9F~X饝$3}mO=넑{ٝiX݉4m^pa!P^lw_ TC=F_p^YsY^v"+bqNh_4'4]9t:-&ѭu}J"CӉtA.7B}'a-L@`n}!\^6ّ[`&cmkJaRXlT}:^0 Vzѝss(y\\c#u=qז6=b|KQ3o{4=P,xQ49_d( L IgAC1.h"Ӊ- ݒ'Т %"(JPa ;әk<8))GCF$q|P9IWǏ{r ,Kj̥FzJd-R _p:Ѥ_(,PpOH-qG|+TAʮŜIquĝLϣMO$ Ix|<?XJK.rqUo7s=2,i2M~!BG> Uh)W2@e{f 'ks2 .;*8<X Y%'kgtePG3|Nơw'W1ID7rMHXyfPɛ8Ds5¼_ݘ"z7 q8,-y}W%7TYzoT̑ HBJi)`#]D7XAdIW+DH&60ߚX$] Y>Pv! w,B|H%&ocf]~5&}2lb#g/De'oDEjG#q83xIg&j rij$ͨ4QeM !fxE'Ά* ?8koV':!lB_hXdw%Aba-)M'Yln?CjʲshW} xj3RPKUF+do54յqqg .*ANlBL2"{8[E̠+DwIf%\š;pH"Dge(9F2dkH: f)T )( }OrɜNvq.2*3mz]V`"~44| mm` wYU~(VdL^`tZաIfQE}q5ykA&B΃n& LV $j{HUwˠW0OflNz3-hȤh$DܙdepTp07+ ـK= s5oE"ghzHǀa9 H<,DEK~d ޖ`9k5/kY %:EC urG饢0DWbِ=͙=,V徴\'t2P(r9'~0D-.DDQhrV94=^)4_k\ { th cTc@b(_Gv!l鳢=dw)dOjrM!GG`XʓE26,t3M߄Q*PnBG6 wO957Q~'l8M-T^gM#-صuvyAV*h "88kDb g\oB<$]T¬z [0`Nl0g&̚nƀ_l;ဢSFxmVWB3Lhd|.S_ M>^I# 6D_ O6z f0a<3we9? R.o*Ki%Rv17/{MNڄG{T< Qzoى MGj8HX\XhCW4dc9ڝ$sadoW5hsPfxZ*3comUf閁tp)Ū;$Xz0߲ltvoef]PF5i-^qF;ջryB{ٹwaDx+d;CÜ RPCݎ/8M|Y7+Tы[:lf JLSȎ*KL:$x+NLfz%cBBgHtdzi[j]_]ž,:Ey@ԩo:Ig.Y]4o5? W84Hp${ۓX0إ$=oO}DHsN.T(xKO4I_W4?IҪdX(UzAz$邝`M9X=̀r)iQN`r-mג΃ӆWQ+{L=eH( 6+Q- 2riG=)2KeQ>f_+\;UU%av/sOZI*e^o##q(mg/v=ǂϙB(TLBJ*9 {9nkTSSL1ll4⺲Z$a*0 syY1ҐmQbQGHsΨHax͛g!tD%RYH +Ȥ8B곹 2 xUGV+ցay]ty>]bXWP}0Be5 oNy{C ~帋(Ϟw@/OD# zw_Hf_;[vkkRb>Z/ ͨa(8*C0#~7{|~8z?uƒ#-M_HV9ѹaVJJ챆mBO@bLU>/lLcX7/$t/k^g,yaZXK&)b&j̝,wߣ,]5`w܀3SE l:ƘY9U HFiyPHA:7(H_!>A{ j+/!b>#V*?w j_ثvL, M]YwA)@\*$vu4bm=pͦ;%xjl#2 3#R^= 5$l{IkA=ٌ5SeQ+C7Ռ6{WM-ͺ2BD4-mԾ&9Rd/5^3n$lLqDLz5e0d.Po(/wxӒr?Պ %ǚY{TJ8V?Z;7bBԊ_D|ԙ]:>OTnKT 7(eJ'lSZH 9k2g,i29"N&*ij^9dW"A.Gz@tb+km"}^)AĿjIuҖBxN)L3MTJl>#Gx#ڱ%̫ (M@M Eb-yfU("qMof|e1K!4+UOP҄JQō ˋM}ՠx99͇|rIp/BdU1K~W̏~zQBn1<9.Z笫[}g xrd(]8[h۹F1jD-KvikdL BiM@r@@ˉOt` w?J:!d|,HY|F?U~-9Nη:^c{# sTr/1$9TRzG4/M 5ll"kV]2[U<gn|?j cE+i[H􁸐8uwK)h-}~)nzʅTR D4f4FLT9z^m웎7m*h,wۊ(+FpO\sQ]68BKS>w 8Sxŏ8jn\5jRdS DTҜl+@imn{hy8Kܞ#i}u,16um9z>03"o2]o/3SX8w2-GpHT=@mE)b|*]lcD}Vp#O@f?ܴ Q] NS|ȒϺW s7l~LBo@ͪ[ ̓hwW!Vs8T0G-S{/m1Gs/4Y63JcEU7ũ|cڡr"֔XٝFޏ[z ᶌ(5MJ$`#th[~m#y[ޙ):lF;| Y!KяYr;AԻ%:EO&o!N 5o/bRcV} 6VDY8qSJ1`|cO*l*Ek| Om"뚃Ak&.s7nwIK]+?T/Y+?Tk;}OO] gi89A/~"R!*ޙQ ">abUt}ӽ 55Րpkת;:;yFy}c7o7Pl*>=2bX/\='Ll\kleSл]} o?WZu9o$Hz"R+ͲNĒRv+^jG 2w".kHG[mPEUwڿ3z+;lѴ*ㄽ,쩵s#dVͧz>~bU6;,HzOSQvʛϨ(As_*@+i.=϶S>ON<%< [®Y<3ov-|:[ן~(KSyxʑ&a"Wgӿ^}M3g><5ϧ"PL֔Uk0\e>ER(l_vdq;RAI)\Uxr6N{*G7;Kra%Cg˲9g%4+= rQwQ5:ʭpdwgCYI D^wCzrb9kR+C pw#|̖ÖU rBpSDO3 K,襠BGQf3B;ܜCBǨxg^{OQ!(z@;D/c,У`eQ=SjBD_C~!lՄI߲qSݲryn4!@YY°$9lM7*nФ AX):&ft3N/Pzk@GLTacOca/2 PL.cWz}=DQkP!8s*u;)53֝ X88UpljwDߑ3U248Ꮜuf7^jy3JH0y\t"Vdb\, B+Oʙ]cqK^fDDbdaS*&%0f K%zIBFf#`qx>'dz느@%rHf ?&sDyF%BegΖ$O"a칤bHt󶦷fmv}dNećq1OvV'S7|WWP .,D 1&6U;$Ekw6N1g2ݕ "kEH%!&WEi9m rs4*99& ͞J?GYuA)Xebgo,=5䣓٥›;at+R'Y`P N1&^@9iؖzO5"^|L:tr86Aӭ^yڠ fMƦif=TXea{LH)0 ;NH{OWQCf[l>|.fLIV$@BP \f0R{-k@G!Z5>U̓tt"_K ˡ2@>f,ȖRnO罛>Ws7$XkAExBf/d:I;QscOfkn*`YHtݨzVJGc=d [oߴ,V=1+j<&m`wev_`w"hg4E o(>sء]1OWysU& L'(am06T -h{ W*@Q<ˀϐH;M/:'Q+ƕ 0 |'b/ w8 }3.ʚ[MZ3@.1R FȨ@ws4WـFE`m> tN[+þ$UVMx*ɅbP"vM6L%n3}T+?:&vO O.5VW43dѢ'g}{HՊw@XO:Ҥ&z#$T@"lN[H'ܩUEp<㎾Ij6XaYRm;gdR3&%%(`)U>5{t;RJ`ܢυmDD.9P|% )e<؂lX`U_A3"l+ʈ17qnH+jxǡl[#'#GCSM-مL >#?Xmk$,U4ck4wdAF'ȸU:}r/4w%62 Y꼳a|3<=VkW8s#Mom\,l3`C-h;poE8AU)wx`jQ΢lB,GF"}e p@ls3 z;瞭wѢ2D##Xa05Df J؂0wygKpQؠh'sJLF{!ž WbГη$*Gc=6P<6aR,O3LSlxe=Z'%af;V4:gWpTӳAa6DMɷI{gPBY'y쪊3!K*K*>9?=Y-XLu]:&JG.$Pz̍4г]Xlq 7u<#hZM3A!Ȑ.F;0^;hek@;WcjgD1ep3JuU Met>Ex39'+ $ '99:?7 u#,4*=O7`(ǐ(A[ýUD4P:MfL. ()J= v-}#ӑ$`R0\ vXjqJYr E'vOL4vA*ƮY{:>sHskUs5ۤaZDȷIAŪ9LLZdekф/U=El8Sj) a@Lmdo#La 2=ӝ-=t3*hЭ-8k2}D\no.āl8cD!L=j&P $kV#+ýBR1ggl\a&㎝^0b(Ō]BZ?JQM]8o:ђW}dl1nUQ[Zd҄3NV@ԘWatמy,A`"r =@ .M'VG_فBЍkkP(K`dj{tf ucxΞa3ufI'Ai %h,HvyRCKϗBY57Z};rZ6nU"NSzoJsډ@A''zrժ`T6scht:7 rvV8Ȩ.B2*[dxEG9=rNk Ns2h4!*dfwqbAQܪ6 JXK#"eddtWw!3EBm(27_!kIG=hDz2 {0$C>W_n󥫔+ݶ^Y:~zӪ7 MZn0=0Ǯ6,ٽxDv/x4+yr(nUmUX_)/^dc Wm|qXyIHx+bTe,U sB#30*DtzR댈^ C;C ,t0&1 JPtNHpCr' Wn4;&3DF4M͎ɝJNgC L$QiLw^ w%[%1{00Z3XZH2@[D,STR'ޑ~=^IKD^J~F5z MMWUqj Πwb-E$hQYp3-RByκnO} 5D  U"w_d?ڶ_DfeF Z..%v ^i>@'xWy=@xUHCkQ/2`j:5$2x#n;PDG=)`dr5 ZeiζZѪ\*xS Pn$Y Bصv ba{?Vlz5 lȌ){VEM&bwr $x`&*TG/Lu<^1O~*ls \9"Rt8#Q BT@CrKOQD`s%mD3^}P{j!VZa)\YN Q:%ٸ[ in:lnf ^.i[<G%<=R|rğpl7Z.PþIsVj8IM1.͉~D#N1J H`degӀ=sf g'I߲+>EHhn5SAbQ9!mew)X-R@ H:. 4r ]"?J7QfϘJTՊ%d ݙ_8x,+}*=K <ذ}HΕvyƻForsA+F'jBF譏)[PA IqZI[N'[oT¬] . GD(AS$3!И~gLƪHwyH>]L u>jGxlbd4-d`.y9wQX6L 2LЏdT}o,Ͽ$ϯ|wu`|)QՈЙ>6Kw)Ѹ6ZGTzENE H@)Ni>t.vp Ĩ*A!"(DUOOL0(i.7K#J@euV02CPMmdQRQgJs)`Cաn$C }0Ĕي&1Y0'xFjkq\A ¨W/Fw6"(]/Ĥ0Y2ũ&vl_z:O  9XDla :oX`gfO(41(s,.4 LZgX6$UzOXN1la?Yzͣ4{.}r5}0Ō^F  Rho5.oڧ'h[C߉cQM]6*v1bseI)uav:ĝS!:]| NӋJ;L%Iw?Ua^ş4۫VU3yPd-HvjOHZةoe8d1ЀœK=DUڳ'aON;nQUvK51IH'c[OR;{ <7Te)zHq 8/x/ 9?RMKסzOLP|޼?lZ\QADsʲLjA)\@KN ?[3R)mwGOŴiIVsZ6]OijCoE<*eۇȖѓ8-laf0 B2w'$:-;2vE&ևڟpn@yh&>5>w! 7zهeqV᫘/a+zxSEC3 e DA칄2^74Lr6Ƥ1e Tkiaff3Ni*MF :@R&n˕d٢,-f )!bVbs ґ;ݧ0>O0`T[Cl@[4#+U(c&ctb ^?}vלN)i߼bCkx)! 1rUAT@aՁ)2smv06 >fN){{˒, {aJ)lbeFDez'`;$üװl4!W#c2c"UY5$0Il 92X+QxëS`FbY%|TӤ `<Q&FuC!P\ymMh 3yiGbZM6IBF2'eʈh^ 01v\Ez9\(PVpaF,ܐh,C#AqShuɻgK :[fz&xUۢPEt׉+cUY(pU J*2RzcRAQw|^5zѣsD QOnCf)hIɩ#6pj[US^Ih"+TxQ(03(A4@RYPM#hcEq۪9ۀqh۩",l_́+ @M |YRI̶߱^LJ0|vap+9rЩ%y3Q'#A2 A!;KqdG mEBr/%~ ࡸD[@o/-oH.ĞI j ylR(1h?"*Od(C<ߔF^~ӼJDWH?G ltԄ#˔H,V GI<pQ|HIzAo&J2ʑcG@1]|m#.RN."ϟ8#[7m7AΝM7y!܅ uhZ|R!YƠ'UA B̢$DbOL=xEY|(EQyU5<۩#=IޜSeWUjٚE`ϛ ׌0\|=h>TEOa~>`p.$_EDDh8K%.~}0E7:\ Egv1bI^ [/cV,W[EM d/r>)#:F{H ]EPxEkCRWƧJޮz* _NS4q Od/) 8 ,R*Z U9z32@! $ۛ/K`S$YT2Jyp[r +_$s{'6&=l}XOAo ·AqQwo 24,gl(V98Wf2@^]VUîQUjtX;ߣŎZ{5>VQiw4rA]9uC5n >p1RpOgq_no>,↨ɧL^c҉ "-I͡rDA-ebxwTk8H]nUҾ=*kl’[DՏuShհk6eex*,@{`||82r5stEj)w^hy*)彑 h/LJ; 3AkTق9h7ƆXYޒ-w{<j$B!;*ڮt m힨e1?LPeNT<ѵbզH*`Ͱ@]$i]Oe15eWu93~1U?w`A;6Ө6 $W;lưtX"pঁnP{Qe c9\*U! Oץ|BAA,V^Peٲ3DvY=cn&PfW'q)GaLÈ`Hy/Y( rk*uuoGia/R5 d*L sSR%rOJA*Ǥw`.c_E?ǭPHE:\bv2N|`h@kvSם(wODˮ-VvRUdQiI[X EV-31X c(8OB7bŽ#nFkn#NY< qmP| f} z]DkOP4T1ƺy^t׉}̤4BHIㄅ("bMG$Wȿ9i*<)U& }FjNFt#Rf#4{<15R5'6ixzuOIZ/~wK5?rG Q3|BAqA֜j[[{ŌRb/_Ԍ? {ioI&SށOahz5;dZJqс ,d|x8G =`ͯn_lꖄ"\mte^bD,5\;QF..},$f?\JZ$򐇢q5c?f;Ey6@>|cr}J+Aeߦ =<+i>3"آVڞR'}:֘ޥqDJ@+F/ TI;[ (.E}`:cZVX<=M{Kܞ s4,P?*J`j*~'i<.H Ţ4l-PeP(V04X=ٷN(e^0X!F%vP"D:v<q H^<x_R:h,b363X@Ƀ3SKZdL&be|UHHfpe lDr@D'Ohr3˧fh#iGX%I)~ `&Q(.pQBr%v>@DMB\f脱s~yo ڋ[8@"U& p۪ޡ2yWC-ÀK wf مmС^0b&cEd긫~0ĸqRQ_|%n 6! > ,_/N3~go3 xkb| ݛz;a3:5e>u}PA,7zVs~Oe4 2 ,mE,L*1|ɹm-1Hb 6W y-b4)HWVd{F6^V?ޫiUUaWݰ){I/Dv+=&Ï.2b:kl`l]^qD]Z)*b>r b>v1^)znPѽ4I*VdI)1|e `R:Q|岻6b!(Nˀ*m)^jB`J E}@ C!#-7~Ѳs$u-"*;>U#?-rB=` 6Vyʔ㒥knQ$8L)02ak!Ro <:r4[ǤUP{!N'M "1@ E6Ky`=}OĢj pPD vUCS`wҼ*Mt$KflT|w|Y62Ėdy3a̧5bJ~t wՈW&XаnyK|)DWNjEl)ҨgCc$<pH>M7,.`2'1=*FSȌ]-ϽعEJ*iF(@HHÌ`;efD&54pxɱTZPZ* l3lύBH: R8K6;'D=vr' Hm(t̤VjwX`ld{>a`{gxLOvEWxW*nG$4 `)[J+O+Puw'e 2"WCnV@ t|,8oUi ~B0q@PkFODCߝVs\B/M ,X}05q4P3Sr27XӜ S3{ @dB$rUd;,JW<ݿ>ASK0ZW~7 z $ Ou& [7e@/S U'ouM7A##PO1*oV? %Ndg4##D|E@jR#HJ'->~ozg{ak|clC_ SIagn20:W@R2{ȫ TDGYpS_H[E[ w5SL4|~zFu)ަkRlV?5<#fK !%A{ҟ՞гi~BD>X/ .Z0VbcxT)2[4;dT[~Fq&3 % nݽBDHGv's?8}؜thd(@Ȟvb\nQʴ2 JtqxwGIf gfO ~EYC)^{+(I769{`zY\wj*> x?Vv:1+6 B@nfpUhw:Uos@j$]NiU,(;6I'vfĴiAꀝԨoɑ?b3 AJ=u1ʤiʅggTe H 햽A#s,h'Зyo:It,ҙNgY誆SU Q3C dVi(7?9#DB2w񢽼'+M+ńz;yB+fh*mhNA"*u5Sa@#P0aMlKB|1,]86{g=KD`),K\~t&<!p!7~W*[g:XT<*=y:6 9)DsD`Rζs[4Okõoǔ9\pchq8?"l@ܧmέ0Uc4Gɋ9 #Oؠ2FU*u3ٛj }Spt[HPÝO  t'C{˛rb]j(9qgT@Mb*nMrsPnGTᷙuQ4^UL {4:u<)TZOP]"EDAb'XR(d~ qQXIw) h9=5x9#d( ;W;@x3$;* t=ZLH\.nYwd.~r2x%x({-3=5 G?||S`[Sn&1%+l1 Jױ2jyYή$@hN{PwK׫bUMywdg)R$urӑ?r@El\]%ɍ"bKjyO5x&>QqWD,bmg t:*Fqj9ՎU ̤NE[+Q#qlA4ϼE:u/>mBzqgFrf?!01 !1*X֛)W L#lCЁN; O,Hz$ݵ`tE91em:kr4S30\% =XUǙ TtH(T09RLjQ*`Æ#6u+Duz0fO2%{ Pepf6윅5OjA0ݝ.mґEK4}f>\sR+[ˬA $o7NSI E U{؉ݪnߘE3GOc8Kj֑k`^!A[8d(7Y0G>Y:|O4lּŠ 0RQ| 5c~Q1xRD]6zMg;I 8vkX@LYW 4fbeL$3l_m?\孊$il;h0qB/^j7RYe  ݧ.P0HSI#t.A 5A+Β]n $ZPܜ6:HT{(AxOdjI{.S/w#xJ(T :l( ӑW8WJ>oL9QOWU1LcӱXYS{caw1 ?2 Di}~ro'şC+0D%ХGx,Q䐧ӥ$qvPQ;BٚO/oii#MsǻSҖ=솕(5^T2k+ԭx %tĀW*yi7 Ik/V̪ﺮzBjݛATzqTץN˩y`*fD\2IDzIV]R'Ko.pͫU-)JJ녯֍,_uu+d2t1g9zG3k[Hv}[)I^XlI*){k!^̏UC{u-躉؋8U}"fG+tK1Ѩ3<~Ԡi*5igU>lhi'#$ }jlفA a$!+>_*vn@Pu D\M ~@#ڜթFaM<Ed=vT:0qma5r05(MF#fX:T;QtՖDzEvө9 d~A;8$eq-f7#x;NZՓ(@f{'yi; iCb^D@2COޡF/<{ 16#i;D9 'Z90Rۨ'/(hF:=X̘aɛT8_< qгK(pb z#k@H&V;(]܄^{ 2 s6a+.I ԅ)ӵs\QʒQ$^bl7@f&ڝn!(PW$h A0Mpg2u4(ܖPϗ XjFD\&6{/M~e\\mW)+] R\eMN.Ŧ;}_{V!u6zQ1gH A煸O٤5Ov>.οAEq"㺸z)*#kNI8>Ovgvbhk\rK>)RʧX w?Onx/J3:jG]g߆3j X TY ;/(H]J0Qvg[cs+5*nQIû9 d-^Xnwi. x't3[] (D̙mٓΚ("ZUEJMy@( Ғ=YGx;E$ 6 GiʿdDø_\ MU$f;cSOR1+>V6pȎ(G9"3}mni&- H J;xʤ}RfZ Ћ,!#B_% zJΘ +,;Yq$'r3=,U,PϳŝxNu }l;cV=Y3+w ?1 TWG:bG~pP3.gĶuAuKT#,/j{bua9%]1v )z)Oes/A%MfHSn$4RXrb8~>w/ixHLJ\3{)ޮOzqb\R%G,%(/fӹ݄6R5F- wt]Cz)W3AB¶@b)/3|άL;QHdID'! @@bD2AVU(XLH0 YLQ'}33ds>8DWb A | t`Tf֔A[N3YZBhryqÙ=d]p#P X ak݅{zV˪a^bj;cgg  A R:CC<0ZzuEd(T;Nptob N%5YCl.] \6Y:ihi6:/Jٻڍ"g3(X]iszki*ur+.ҳL:ۙ?UfD8;K٭z:EE7=:qk&gOFaK}˗_+˃$z xFh=!O F,N",7wah9MQ 8AО-9/o2L|ۦXUZW ia FԈȞ DVwg@0EhFc&MgFVlZ3-+hmlhj~[M{*RQB!r[Y}fX-^sTO͈a k5޽{Jj?T$X&&(Oޤү^6FxIT֣TlMrgl'Aa:~{st%sY9 EB6=o)-S- *21;P.Ȯo"r AE[Mev^;[eSҋX-<O_Pؚb{ٱj`&ùWRԻ_;~|YZ01I:0&#6Ӹ ZIŶ Q֢tu'b3A(}W$.C?2SiS}/U,@rݨAZQoYmR"VU"(Q-Gٹ6*1a<{휦c;nhDD,޿G>+ \#*Qf( bU y;.'br?(mvjp?}`SHaƲ]tnt0X'dq&՚{CLnZْ s_YIEfڳdҥȀ!0^=gb"=@^՗(GGN[ } ڌrg fLPlj}&zS}>K"lƦ`us:.*F;?}DScOd-6ziDn>'46Yۃ߾򠞳`L?82&΁F+ 9^Js1xi&1#%ȯi_h(n 3x k˾%MQ76+Ju #Z: dso hGu-"Pc٘ه}Ǻ pCq# W ē W?[k--v%%W +.U̸V9$:ТN(T(ob~&pI(`4s.Aڶ߹>QM`2U?ƚ(T!;'3 BxRԝ1&-)hmv>BQJUxk6yvV v!V`gyțX`W{'Od=ج_8f5V#g'wq"WVex=w33734v`.Y9/b%R.$1&$DzFjpU:2ˈȶo#aQww얹 ;1Qpy"$@YKu -c<: aXFa8hf{<|&dIB:;1=y iȾ*[:)%Tʕ)!Mm`CHA f49$ՖZżk?m9="pTkl)vt %!&&YZyjZ o=B) [U3UX`cL PXQ(7*LFr #lG 3ץ$ҀkeE9􃉒Yܱvј,ۋ%øuGZ^pl^`&@PryÚ)mw-9(3_.E%X5)WGӄ*UفJChѲ A=i&?2*.6*)Egnȶ҃buvWs"x0/N첶ֱʸf!w<48әݪ2SP=8\C7O5y*ƌ`5a>b\OeC01q51#2+PBƀYa5p\_2,beq+-a+=Gr r͌ ʶ E" +A D "L/+lÚ;UrEU\hDWGšЁVXj}͙)" F yǬpyz۹N9/8 F%9YވjD?TZb\gcu^U*w߉Q) "iD4ԐfBlH#Gdm)BJ~kVPaeGG&}WwLǡUoq `E  ?sfuj7_`ȝ-͓`muJ=٠PZjֿ`:6!΅(EG/sLǀah0:F GQ6FNHe :3JTb* BeW`I=AY#i=Q|;}#$4ƚNB$@*Xaݼjfwo*b&聱"+k(Ql^K,)3Y"BB[ 62/# mg IK)jha>ܭЃ |βmS!I_|'{wS{(M4'e+dKn F4,i1w)x>B y>wɇJ'^U_ErMSMLJiPl#m&QMH+zݘ{5ώ[ά\gRVɉ ҽܓ3{,A> H^JwO.'%/@֘rV82}DrṰ;)B7(@Nlb=*KĮӔ{x\ka j/o7ƑIgX%jA2*"zbB[Cm/5oX"S._i=PfRwQiz FܳyRҏ 3,(.qz&P5!r`(,'I@WT[̜ơ̠B#|t*,mw7(<3]V/0uQ}FANCޑiR6'l3bZ tО]:Q|!宱d<n}!k1Ů+Lkr62zM;OVc|̖nAaMd!rPGAI@V;lGNyYiA#b=D0KJQpeDWY_"lടxXLjz9|Qu =$GlT郔즶.{ xD io{fnYv bl9z?GD O1b!(U˿t{qrMϡpt`$\ܙ|u%C0&/xUV4H ĎE-"*0"quWdԓyԿM+AiHٻfY"S5MkN0&B, *u4n}'֪V ejHxߏdAn.O];j{aG2" dW5~DyT1Rx:#A榓':+x9 q|jc˯?|`aaxH6e3E,22Ygz|Xs̳RBm dDo{<'\ WtǰO\Nd"qxo;(> 2H7Dծj\1?dqᧆr Tb=i4PZ-SJY, LLns (NazZv+zkebwkDu؊'%QotF֋ UpbTʕCR^b`)+c.UMVa4[MWccboJX6jf;`',3O蠊u[MoU- K*2E,>f v'l'b*:41̣F(iWb~PUY۬o"aPϯ hr]Zuo(`oeG$]=Ws)-Jl^=Zqȵ@̀{:ԧJ]&or2}퀫HO:c "3{q0z>n{X!M&D*~Tʾa_X %rsb-/ML6?kcC`Nue ]MnOYg%}a "O`'p?AOh\p|~/|q\r?'PB J]%̾8<Uj ةI(a/BzM&Y 7N>[H8Kg4JEۧU7E8o|m-*tpĹY{Y:R<ޠfiB2T`*NDLׅJ9}={xܢEB0.9镑%C?w3șdBɛe{D>Y/h9+[Iqk{ ޸JR:jAazCec|20=ˮQ_UrՖߛ57 uʙ5,kq!X3nbzpRgl 9=BYeD:/֊MC>5O1|.axfя^K؇ۂa/GCOq%t&)\Z9{SLiBS/Ԅ(GU p]6^>Po TQ$i%J$mޝId BNȨypַX[TG-y8E5AK5 bږo?^HFrFٴn,6J=@6`w۾u2RS+\N4{v>֏KU"!)gode PZƵڨǿ=ueg !MsN($)BQIOE 0"m|Z '!=4';OZE O[Eyf5۟Ԛi%WI~u p^G(hg!Y"*@g3Q] ӷR S{QkUF+!fK 'o A!xI e{|_b}<'RnLː܆Cz*k2'^=+ջ8YAB2#荁 +;EȘ~U5(Ī3*9B f%نz2q밭9?)9uoAXӫ&+!#x}dBv%YPGf|<#-󹡑r^]kMu00^];:Q@^F gnç1?5$^,|;@"Y n֖Rfzkiev zm VE";~u}~TI4mUfOA#(r';`ɐ̀y߮00r H2ۭUS tw.U%fdnڋȷ5W:ܯq޷B|//ipF:iѻyA]R!sEt{3ғATnO/[,X0uw),sqZQOLOnW礱Q?E?@ԙUp̞_&jL E I?:}S>X!60-[cMU瑌^~?Kl4p H%iŝۖz?|X֏u)r::hRo6Q=3@zer1@ ';.9O|2 T`ϱ3$Iij3 IϞ2wm.tFHy{{=iأ>Aƫ)=V< Eբ̚ PcX :s^G Oȴ IϠ1t#;#}eCʨ'àBbDT0X3'aT+w}Ǧv*h-&xf]f^iW 3AdeR䄉,AD0'N3֒lEZ $P lS*:*N'd0=Vǐ"sb0ޅAG[B(0L+Ku+j p̕CcMV)1^zO Z~%moKQHa0{2֮M(,3EY¨oQq ߙ툯%Eu;(hc6^'>9 m'ۂ~Ȕi׹,5ܓON\jŷj_6J˰ aslהjg@~ؒyT9#L"T'Kd 3ՙɆ mUMӧ3Bk™L#"jWq4u/ڍZƢc*ldo 5*!@ika#nvB;$T#%L޹@㋩3Xіq jYr&I@*M+fo;)8@B4Qq .CTvi(i<"U|K,r#-3mQ (jZMt[!]|}#DFR֢HD}7=_/˯W+1bjq+ +Ut D*VԨAơp\~m$U[.le)8x2.I{;UuِLhH19p()¬i~)z7¬d%6+I-/a,۱mYЯnŸ`>_ >҅& e>s]撘6ZNqMѕѯ_b><]V aAʢA͉GkJGUOo;xgI`R>fN휤]M²қ[%w.N 6(-@7x80⠺z9zȟUmF<-)HcQЪ (MqX.7e^UPv4'+,7|PCVG.WR^/򁡙H@m ":A\ M9vd.$<>/N@;+t$l[:\Oʬ53^bCLl#mc/F -7x*֠C+B,n<#k.i^h..Sx+ G5O2h?N?EHXBMEeyf:'"eYtZ̧ dI u*$U!M)J+ 7H/r%/.Zxp zAwzlDI9Q *`30%䱮5J3^ڿ GNaV9 p}u,eдWϢSlXKr8zbX2U0 P$ +7h\{}Mc XF2鹣Xۉ=$Fu %~ZXȶJ8/K ;X#LF47߰+/$JGF?xQ 7Qu*۽z]A%Pv+AvOuCn<\8ȍ30uy"%>h`"`2V*Wn> D%+qֲREG(kJn \[k6+S\b&$fptd~:.rR^#(Wdu^:lO,}Ɨh8gyH!X5+!J rNAT%KJqw%Q"d/] LT5e/+7ƺd]3*1$ Y:)3UR(69ܱp(mm6+q,.X@&XYdTz)cᄕRUI*%K m؅hK&C 2JDL -VQ -K#њ`8# *u5Cuʗ3!3EK"5t5r7bcLĖx!SZtxF-ЁI.q2嶦X ] `m_+ǖmCff J$ 9F eSCΟ-D=̵Gʲ{6## W!g m3\HaLkm*c>8r?VT VPPcjŲ^oPahjjJbVkE6-TG ڔ YW_uDDrK|JW2oKA`A\;\( H%+6FQ 3Rz<vwAcŏbU:b6q!0_/K-x;_y$jːS}jD\r%ymx⠴j 3䌨 r[W _[+>&zX165m?tdTk@F. foK{M9o K36ZaEK0ER5`*Qn~9J\ƈqT,{eN>DF-2 v'(!dK4((RbHCh (Mh~Vowim^I̼$cš5t>'FáE6=hWAQֱ5m-ȷa;TygnF^p2{XFܢ>vDQ\ P~aMFCL4㮑( u6nL&`mz9g58+enb6@L,79#XF )+[$i*.% ΖA-aE,E Z)2Y /Y HXq9 z yϤ@/TU+٤ Η΍tyWi "&CoJ_9>f2sj^%uF11$ O & == zڵTRNv;, /TR2;&0Ch3xBȜ><&!B%J ڮ=T:ʉҲ#)us\L3)j GIi R ėU!0(#/W~Z!Bqa"ݎXM11d)k-#c f6#K6֐W"S. 6M 3K!V"$`Y{[ H&"8L"#YH!a:mRMdf~`GÊ`OSB }r b!"4 89 : jtN,% D'|: {8ܤ #ybƪsF7yN@6LcSa,R*RTD!PU*f<5\:Ijg|Z@ ƺI` @3Vt:ۮѲhX7xd>LIT\L*d<~ 4e> S>svLU.W|asQAG߲EzK qPXw3p {LC)pL0+ZGB ~3خ(,ZҰij SebX`b1BCFQ%Jy%Z&#_<'#Xz9&_+gFӬrx@%/#'cEiRnXUUqFϙ0ٕ4YUt~p!uF YfN/XV4 f)ؤ" ^HJY9=H Z9FN>d]{ =/C,ҤRmuY ]ssxD wk۠XʍT!wJZzUqUO^OD~cb;6T}i ק - #r_Ҥ? ~eCnLĢ z#36yZzE)Sѳ{RKXHF2e`w¬Q k2icʪT”Z, u-~`Pe)BZS#~+}.d2&D Gfv l xZ g v!+/I)̀rr1J8esL<#Xmб"°T2~FmD.QhCB晲w4hm-q-wA; dLfj>"qK+MȴȃxR rR|1ӞȁF*hUb֎RWWyIXu2歔+B 4lRK."KqV51 uX-!KݛԊ܁e_ ,Em sE/IW\7ү~grh=#h\vGPnXy>vc7Q҇c/Uƚt~oQܑ֑dZO8}7ɰ{5PJ=J % g˜gֽn#~*`Y4m ZJK!m naks?^yDVZ  teݠ0$313o9XZqPW-Y*USH/Fz0ldvĎ\]ꯈedBLuUWܱ~ x䊂F鹪a@twx2.ڼݥE3a׸{/ Yy+ewv鰏Ӄ4z݊#sC3PΓ!lmB (RD+xkQw6:pC2M&cJO)yZL<9T36!:ck@ mxmlPl AoZ.WwFa1g-\4|%|vQ!iggU\r\:g}k:]4H1u莣#0z4|FPq0c׶Pv`D?I/B6vUvc밈bpDugkfqbBvuO0OO*=]S:)'`/K)ڶ.x߇NEMt :i1/{mZ,)^fÎbM, AnꜬRe"0te>gkc)?z.UdLaWXrk,8?[ Z(a(IeZܬ䦤7aRSnu(tqL>X:vtSDL<Κ̃6P{ MYZ&ˌHdc(y4AП"2! .P8`m欳n5$#pfdFR*A )\?|Tj@W80"RrDPl PVXJ@CO-`{,$ piL,#Em`}q9j"#*j|ӖJ8r=bPt⑦O;`8Iȴga' GP QꯌN(0=/ؖUZiϐ4T$@z27* %Ӯ+QZ*j" "/kҪb›AWI ˎP$&F4*%VD_Ʌ!O2V&7h[Xňf;D|nT$Owjw\gp2ٹ\ELFlWB0YtB*=a(qj;:p)N"Ar"QeHE,XTrtuLP]eY iUȋҀa9P(ˬ}P /N8l|tKjXi[)2_Z ώZx: wz׫3 %k0DXlP}LJ@Ne񸏜n ֔FJVB(=;^U[Lj{tǃ<̎R ZʼhQ٤7,C*]| mhp  ~̈́ uN.]([8(FQ*[bCS[<Mb&hv Jx̵,Ŝi65,Iz4p#S Z+Seto*-jklW=7p6oTzR? *uLp PW=U,l#:3:Ho%.ZgSC_sSИΠM0 1ea 1g LHcu*=y$yhz6CƆȩ9A|Vn+_  GT\u>vE4zV\X,V4yY;V$4%剉)OXx~Ƨ?`AKI<6g THZn "ssQOnc8jԻYŵ֝ɣ~u*uT Z䉣(F%&.NVO.r5sW8,~ L}ZEDV?t ߀T8f@NfIx};TB7S]07ḆE[:'4"q1. " fZu%VaQ~Hڜ%q.Qpٷ0JT.s?6g"u Y`@}׈N[?f~] XA O"#[,5P*G&B'8x 01{Kt8r(2FiuN܈I 1FB!vHIS}Fh|W&. ´6'/N WC*Z.AcEG-W=QK9M)2HDBeoEe/Rr0A i TX=ߖK/Jg]MRc#E,֝hLe֌&O z5;MM#>L8<σz+,:w,\eL8 g&$b:Q#}aeBV4 K;֬P92Ta@ 0)ə1fOѵס(n}{4lȔ D!nG plұSK*Re>̂Dx|ޜHbܨZPg(-NB@>\jPUӺCXAMMg!13Þạ@ZA6+ҷy'ꎫ,QȈM,d kTsbA$}S /3ybiïew|&fVJPcBɸq q*Kِ5D$xe`&*ݶ@YVs0T G[A6V)W2P(o M5NQ r Lb}VDD^Ȯj1IJd %Mj#YSº@G ~ݪL,\/./ApFYn4!AB( 3W6چ&>VH K^S(aO%4DJ&Q\虘QveDvc6u]'DdViD8sp02! ҂66E{W 5> (z-SԂ>6IUADz-.CeM:Sx*Hyb!B'[_v5K1n]R: 0(&6&sz|L ĩD]4=DMZ͚Y "ɼi" 1+^=>xuҨl2o  AX"kwޡ^LRֳRH,bDc[L1ZcQr+e8DŸEnMCt _$Gj "5tL@D'Uu%niqTp2c~l]Hbp`#K]<ЗM"|ZP8JY"2 9+~J=v9(2v 2IDQə愜&*ÁւQ>&hbTS4EۮuTP± I)!0r?mKH0" "]Ff'G})}|vRh(:o^_- 5X6t:x&VyEzSD뵔T)V HRM5N~od5FDTaLmr j[}jKWW 4ON^:AyTQy]O7gS@ IF rtfo"SRh1r@{h5ȴi8oqY?5bAy1xR7q s+6^*UyuEVz6+N(L:.hy /9yBnXQYK֓I@X9lrqؘL UZ:ǘxJuPQ kVLڀ29t+=YAp_`9i'\ [&XL󲔔mLK]7j2G-' x ̖guON`:<6~!:+XP;DAdiwY+ *tcw* ʕ+vN{!8yYw؜.oD?nDqs< gԠr͉^P%/.e9rW`M? 莌R:W)ozDxikN0*bKaUdA& 7YXe{T4=7:c 9MNjZ!vlmoVKtؔ$"MBF%ZJ=X]f:_9K\K6KdΜ)<タcI8^Ne·AbY 0;ʹ3QynQ$~۝3 ىvN?X;-޽t2t#q\CMZ4D]+ƲLiKa"ra)sP*CTH`UH>CGǪ(\?nB#t~r<2QlBH(H mdOPDfpMy5M(wa Fވ|HYptsqdQwrxt^YU^#&4хQxJEz|^lv'^je$^oVePV^&G(KTpUv@5gD勲2y~f,@L:RRdpc`ɘۦk򳯪JhmPhD wcFmJOn$FtA4s UPzM<2B,D3&RTztSp5 8ud6+0ɽ@{EMJEN5lu}Uu2+KPdqxN,3Au"<Ig`R $E]P7~wV\{0 +fS!gUSȞe |$q)SwDjhGkSܳ, t+/ Al-6VYND .xtÀmBz1|ULO&:phӉeT 6 Ur3 DJ;k Fu6ӊ(7j鍦ʑw3 ~IW3V4n׾hŖdadV6LOHkS]D(7NˎhQt8zcLRa-+Ԍ$UƮ+hË=QzQ-+*ro\mI0ql]$X-eoXma!e*A4&PG-P1,5]`L.6W$YpH4($BQnau5XH{VS Mc:cl[!`j:AyTQ@O= )T_ %@1P=G<3J%h1uDb*+X=SshaǴ'BjzO݀I40@ʫX%MhT_ijxeڜ, 00ِ_C@+$͋' 4D Fs2Q0fa!` ~R=^!5 \ﳒ{`6"Lɮ\8Yb$%F2:rdV|u8|Xg2J3 r4L/I#K^O wŪ2":ǜ-W($Hsrlk28I,3Z_HWY2×GO@H`AĤ0O;n nI[AH_:3ҀLRvY/u1$v(:e﷙@ q"?m@]G ng<ߺ|/dZZQ 6:Dkp7PnLš]Q6/tUsU3 oOdOrJ9slxIsSoKAQQUFʪ̨W=(&\!˨kc`!tev>cܓ~R~e11DcбLdAH7%%1kAD0@rTVUGMzhϖb> s@ad$*&Er&T!5# b˸+I8`!$}Jw.K(śc.LfL:x7+P >Y聨M4TH?qh ЦĻQc،56ZTsr 亇48AODTUroRR`:ur/oa'QMh4-' 53m(C Ȅ8bL9!7 M׌WKhl(CQnhm*۰#yWk|\UX= 4aE\.FF}(:>*׷$3TB-ku5emVqsnMm!e)RTق?. 4L #l@!s@y'fp|Ȧ|، r>1 Lff#K8l}D&BR,]Sq qbQ/bLIb="M`,ah&Ԑa-tܮ*`6*E ׮,^4uY̥m<PETm`ZWBk_k*t%pW x6я6˘fzm/XV6t3,č~i?16>YŐH}a*u7nY͆d/X q=CB3[b6Ǚ+AC#.J - C 87*37ml$c#*EռTJ I2Ǹ"2T^hk㬕kˍ9@8F2-&"8$G;UHYި ].'.k@1"0*@ "+7u!@FULWZ V$eRM eT2i6D餫1l? %o-! RK4 gMTa6'sDe ΫX ,~L#\z߾n19֪A>|"`:0[hź&XYl&'Ђ>㡽zoJ&[9^F pZ7PYJVb˹U4+')SRh1tZAA,%= K*P1`ذއ.*c:4ӖPڣLal=WŨ|bOP鹊h"gn2{#XLb߷10]A{Sz% uAߕGB/ĔÂUD+FQ^~=GuN2'gМBtr+#nK"JWv^1!!֢A5쓙eB/@&Y5&w#PX AYr|!" org^CNßDX }w$$& :绰^NJ%+_+ HTyz\jJ]'UY4'W#K?*@B਱+E]xHvZ>+VSu-Xt ‹QsA9LoJ[گ//';%˵olRE>!G0rx1 F:IM_-C`JTQx֠&G?Lb=M߬J -ʟD 0 by94 ;Ag(Z17d=(*-q0$,K+ݴJ֙*8jk#dQҧ~7#DIY+3x82`eg8Z` q:䧭ۦe [ %u++E8хr0qKYPJ21Z]5fWXws;Lz dRCREZ1Y&%).$!Y3qeN`U4v,,_Ro//͠a(Qb 35紃רԃJT0V[ gOER7Zy6 yD  en(mkJn\yE>P[ A1=@VJ}INօU%YvCt 4pЖ3$ ~L+#^MSTp MMUs"Bt!fhBC떎-޺ F 6>`!xN]G5(7b|5Q]\&bL[ΏAKTd^A_6Дt;7XQeXBi9>]^, < Wh(T؄XכTT†l(cGXGLXq4IP[OGxT‰´눒7IKY2#J lG$ )Jk.)\F]k<;:E[}yj()i6xk2eeŒv+LzZ -"'03 \`ђ` ^M Y% ׳kuU7EyıEQ}St^f,KL{8Pˊs_6WTd1cR*-i8\;Caha.py+0#<(m8??Y:Zl;M vP2Lc&Ni*kdD¶R0$Wr[^dX$jQ)ר2kH5w-#f;LW]Q(i)R.[ՄM_18 xY67s#/7mw@S:4~/aF| 20#0l w]ς jcҁS}+@c?3P `)E·JCKE`OYDQ;QBzgQ0gyLx2)r/Jѵ8#PcedNDV"|q63{=hC\MmGQ O! IҬa-SWֽE N@`%PgVu0I;ZJLEdfLNX˒q 7gyQڈݐ%^KS9@gKOV'>)Y|P:\N,"hoеU+RT.SqgovH*pf7>sN\_n)F(L)ZzN]O@]S 1^L(r1X14c9~A2-qXE-<oTY x G)J]$nvw =L.ٿBR6 s%d5seΓijL*~.ey#2 BDR&f]umӼ=Uܢ*@MtC ") ރ_rm;jNȊ#5^v\Ms^IpйY9I]HR„IVVY M`qAXy*ŀ۩eɵbBcZAILVPȸBv&G ZṬVpc⬼ J`7֫Ԃ1Adg)4}󨏂z37UXKoQf)3NjUa L.#{s ?iR΅0ڴls`ZQCgd%msb5"d8Uͨrf{%\#_~YL<'b,qRG=eG3?7̡6J Ό`)"-"EeqpL b~.\":Є, vsbβfG *w g&m%M|/HďNLi̐4fSa(3n#;Wrp~\8dB7c<5j}ToZZkX ȳ bQstH=ay愌Ga<~l0@:FIQ2fA蓒ĝ$qg3sPiAN~91mWm66$m oGbHA. '@` *y׭FՐ"dM3QQXPf KrŃ!LDpv 1gDD8| M&$ʀ/ۘj^RjwEY$H2AEL G9_t*( O@jG0h/#B͕I!^MH5XVb"e3՟g*Le)2ǷsV%ߐ[d w ]Crr*0?&i@dۛnTI tMRBdWhb`x?02g*&I@֎Dgtbg84'~VuFFTl82=+WQ9C@@Vt fվfq.4Ji! Ok*t+`9vo7:Va!"R\%$2 OP( R_icrY2>0$۲U?WurE&3}qQPO\  ΁7C9JBwB WCw|&䰉]/D&eO";&3@:)_xeocKZM¾)Yag8N`cNZlv 34&ߖLj)[[-`;ýDE)T|/)7&c)0"C!)'CTFzj%7TMcMեn{N z65Mmݡ tTDy$7&gFZ9"LMXf")+V>4 3/TVYWcG 8Hy Ef4Ѓ?TzSf]^]5ӃF\kMɬ k

6gtT#l5PF}UB4tRt> yw:g8`w@};T^(U$G4s"&?К8^E4iv^aa*֔1ɢ=ļpa;M#"Wyf% paYg0!.Tf1/<$,8N30C~6sD8& qL6b NWT{ژ852wE-F"U5DjY>0G $lV6^W=\gq5+Xv1< ;gH剜`ȪU#+RB"Ѫ2뵰LW 8T|Gp'Z՗!Ou`eo}6Fh:W㳆8 zstO"eLIM,fC)숰! Yb3`w|^JY-CAWV1.(bT$HT3OLX2=X[sĦq=oPkE-g~w=/@d+jx ;99@UMI 5W1ȨH@[1 -U.p,.#kA,Qq`ZSw8sW {&/whF6B0۟I-="]u kՄe6R +nm4j4u`;Wmܪ&ԅJ[FBXUL#8lS. "e4HK,sL4)ZS 41VJGÂXݺ ƍ\.& ۂlΔ@9ddM#gUƗuU߹sU#V5s7 9=Mg:1v\:>Y3uJ`Ɂ" DZu0MX!RI˺LR T;)òa d#'V.ɐ5+ƜQ{yNUPۋU&$F3!"L(:!j=z<מ3q|Q: k=t`7ѻ( ,S`K[S3o&p% SC8+ø%~sRVP(woa4YKd-edS^q5 Dz-S2zRx VչV'+= p"|` ;1;[_`W= ^pW^`>;YK%7&c+X15XpԲ,ײOPẻ>Aqq"/nOct|q}/e܋ቴ&'bIANe -ϼ? )AƎ꟬8[)GЄ!klF;;3§ɿ 2i;[ ͌)%Y2($g}D6C~hm7A2=O UكPq/,d{hIgO 3:lJ_`3ϛrA?L3)k6 9jL1g]9˓w^2 uQ: 4e<>:=V*]@ʎ":P.IW hrƅQT >!n;"gKB laAL8rJ1㈂\׳G5e\1$V8 )X2h]fF*C]m %DH=ó>]EPI3&k.TNi@i N<CBh4Vk6\* 'X"d7DL^ i7 75v(KzBZEfņbX%ʵ6@_HT%%f9ҹɾ\ԔUf2ғ_:RГOf*Oq{d4"MA&rHU'-[Зj ?ܰr<_oB ^PL7S1YEvCk q[B0ϮY9Op5*81}ᕾ`?Cu[v&jh8V}z,:Yzo#h+ڭNslg028ԋgyAPQ+2,M$3:kڢe}&ÎUZvÊ.34`B4 Z*꘩\.zp$2(9eCy#J ײ\ۀJrww++|}{|h na>q珋_j"zj|W5DžIEbwvi,ޟ䏧osdwx]mxrib9ݝl~;i.m/>vwwz{}tz~>^?^vvu./hZbNۻf{Z ֔ts;-,uom&Nw\nnNa; *Ojzڡf7JOei͛ӋN k/oy}rFe}8~ޚzwi66l?m[WnxiYwSlWzqcncsuu{8>|;ߝ‡auW'~/~zS{zp?r@ޖSQ秗'{8O~|WfOi"٠qlƁ\\~x~~|snٟ~ ݧw'"[F WN~Qnk֨ٸml1_G2,o9m/q ξHKC?{:|}o#siSѾ9p](=ZEkd=<-bQT6w6Dmh5ONv7p~~9=w>>IGm$N?}[cⅶbtpzsnƝuG }r70֦ Zxý^hĵ5 -za:`Koߞ俟~1mdEV~{zZpo\:9iQ2prhM%r='2a~p߼>pgO>]ӻpb{/{'bL(\^`$o>ݙ|I@cuGhkdi=hho{twܙ./D),V^}؝<:&TQO E<.%bm6SEl]ۏ: :y:0|o&ɹ8Cs'[ܧ/Wl=w+E ٠ɂ}gk63c#oJwGϻwY(|:œ6ͣI&Le&$NU m-zOv8M}FۼmOV56;}왵"><|kFhܳm]rekp@-UQiH"*ǶQxHX .N8K :OMM@k/!GOogA{qtoQ[qi"5ilp\pA.= ꌝcq~6:xdO4+y^?a jʪ4 t,q=@tNwncmZf8hO֗(]rl=a&͒ܫ(O?dh1]gb8ؤq7ĴЄ$&MllYآH]]LoO$ `~jjה×;:jZY='o G,!M6 D[HۦN?{ ^#\1U: < :n&Z6P֤?Vv8>R9H1%DЎx/z&{U[oqSw-em+GZym $-&+x~bMոh-'*wh6('_쀚!lpߛ95X)ߜY8043zK nR?$:CMJfE@w9_pfmG|DuUT?c«½/Z-;~ڢu(xIX?YyHPU?yeG9=p}p<4 `٦2;`nw6wۛOZtiCVr6l/{;Ǖz\@$BIIA3v)7wbiT7=U&-q7m74ܨ NÅ \NR^>&rI=I-:?&CZR*ŇE=sdSGM3zi[q\>~ @JiQ(Re|%6q5maFUv q1Wg$ݘ _٥ߟ!^n.{6i%ESB3h49ب:qOk/+L( PCCbwp/NTL:`JL~1]|C+`"u4Ea}/.52*4xmr=K{i?~i{f綱͓jf fn0DlR˹G1ʏH{}/|lt? {:Wm|\ˋZ85l-0k~ܚ\4(`ќi[sҺ|viws`wԇKF .W~ eYS7$i}*'~o5 G7EZ.`CA &oVi5a 6om]\ Q%q#&陁#bl2$?3v[z`D̢(zl=f bZ/Mj\lt㺻0PM؁||AN8˸0LnmJmcG*쏥|1ͭ  1jO-Kz~Gǩ=\Irb'OH@]='WU+kݭYGkgKf-B81DƩG{,jMхmy~Ɲ{ ST\qOΞZ{f65B/!Xʣ3] "~e}JJcB׍;c0U!n'w|g‡#aN@& C1S$Ox+Sbٔ==K?.O>c澕8N7-wW,d "ozR gaG `vGΟ<܆?u0{:[ZY݄+SnE4|f3SPW̟iVm) cA%7K-Bmu몟=⫝"zPLAq[] c;r_{dCQc6^S3։tmc Wn1z'yJ I<-u[+JaÎf#C]:u ~]<׷'έEmۻ8= |1 CNpv9)>pݽ qgCtg&M8{)qglYL2 Rcy`Zrߝ|?8}}?e`ͿZ+ǯߝ{Nr,~t&iyҝRq<|9hȞ -C5GXg~2gKԭ.s`>$KwCH'6~|q+l_OBfs QeݠA i\5Le[{9[Q&r@j+*67Rٸ&?zgu=ē@8Qx Bs`oO dOyuguk)iXҖƅ̭+$:Igg9CKI D}+tlG |*s\?ðwb&M8027ۻ3 -GTTH )Cp/fkJ*F /%P+26;z7MRE,X.ʀqw?09- B(JbO Jxkژ, i>/U+W3o(ߦ +%bϟԒ4IOẤ)6e])]O(o˧+Sg mH FZN >Ǐ_~Řt6*'/bOhR?ۃ٘c~ͿVKy^1L灱+Yܥ×ev8H؉ΕI] ՕM?i0Z/K԰j|ǰ+у0LE">aUla8kHm8x UCzs( zŒ<{wĕ‰ѩMA. ;|p3\L\axP`@Dg.g h}X^\1\zwTB:cjniK,ջac]6]湝a%-az3^Wq`9үO-"S'.ΒVL lEoeeZRfnlhXWa5#͏Ӣo~\&XçoߠFwϏ_..W/vvyq~x-6z8// >}Fآ|/~}<}YZzh~]՗Um{vTq]{k;l$mO}ܡoQzv62F}yB;)#.E7Kcc(>S`:.vaZ_> nM%q1ax6_y#~?eP?yxzMLuk+׽jSKWϯ{yMgί{y͋5lB_3R$L b|"hVhǯ~etL.🜵eall~nn|zqxz(1Yb{qw2ū<6{/z^_?lLx-~ --jG>\7_Ͼf=ϖ+T2CTHC>/YdfҘyyL^`kIHqqUz#g?nh<|p=~;#Ra|o3 ۽<O{8.e WPiy6Rmp wC2KNrCNOz>ߡ(?e~GQ.s4eۺQ grkڢOZ?m^)ߗmIo˺^HY?7pJeƟ?ș[UhzS@n}T3o/,O1y¦YeVl/E|D_#]Ϟgм6=nu:GXq| 6/t*|ۻť,xGknPgu X7tnbQv&mqrvp}}GggwTXb&>Mt+6W4Uehm?}U~+2mE};&t_1R]_W Im^WD%-F(ѓA;'P1=Tc ξ=U\t"EO9YgU0W/xYg(97Lbtvx">ng{i/Djꝿʩ"3=}FL^VY5d ꕗcbҭ)IkM|𦶞6/2ȟ?y_7e>,E_OWeY9?}Yѱg^"e}vG/Cj,yսZɍOF9]֜VM_@ÿ]M֢?5[z[S0PWy9X O;z)'o3u=]A>.[)'bJQvvj4]wnqjQ,ۑ UMV(%Mk$ZI/ZlWg{cO/ʮ,ZOhϥu?Ĭc;ԴT&Ж86okPW+Tm8_ VX(R+5S3=X^9=(Nk-m.-xvU?+Ejï{:D$l5yZMm$L]ӷqDlח.y2u-! N|BMS7mM]HmMݤU (5uvGxqyN]liit5??uqԥ.Χ.gO7Ѧ-ue9Se<61uS6t.RrM]zS7i.a6uW5/O:K7EL\|:O7FU'iӉI>6qutzBT8sޢ;MڀKmMܤU 5qv=7P] n:EU0;o͝H33_YQ+lt}7?*&0ޕf0Gڒ禔Ng37{)ݘ\q6'&\'<66 ^Ә{_N.N!g{m.&׵uNه+GrIuWG +<ҖG#aaVM7j&̮hfq4Tifjc"'O3 -\~څq[L7O cNh?hvԩ   Z"RK} t}囌9ӭI%]iDc#j*ggE&z2LoNu=6to 6|,:\d1 g֘kl,vV̥@X`)T31UI$=&]H {\1ˉ/\ &'3ojϚʡH>k_ZIrT}6uV)9ϜlRkWfɖ}tM6yf&+!ӵ#ڜk/ M⥵9UӴ6԰gk'^Xc }:>#F'C1:ijTam\6w7fOjSG#NK~=s!2m,м JrM3{™/s6 *ӧumְذg2:i#PNϹ$sU9K Yʺ&t,D0-hk!:/ӝ\BjGxnd¢\/O/Ϟl;FPJ҅vw󓭛?߬r~_]3m Z -Q0iJ4.LV$~ >c ǃ0Z\]O+YL`3OL|hm4]ٱ"k s],~^YY %zUVbO[*FutA {7B,)#/O{HEI㐗Yݢȋ:FEѥ)9rP˛S<s ">38㍽byU{Eҡ$'m)Ym)2+i 1+,  X|ZY [q McA w֬kv7* -z*'nw9\Ue sx/l tmdd ?]aNRS=- ӫfOѩ !|+ 4"|`sIS }BTږW#LKhen;=mW >LݘĚ_3>wop=*ϼ'K@&R{}X[wP1Gy%po8;uݥskh̪;',b[u7i7[>bhrW!<.JF@co4=A2iZ/~?Mt]'Gd9=n^wg6t-L:gw[|xsw[lqg0^t~i9e.AБ~}%'4oJm>H^`uu M$ Od)#W~R}Li;dԳOfyo6ϭ4HtMkf9Ŗ O^;Y3t8GV=<`b,0RB^S,jQW4?A0)43!1lgA#',$3aR! ,M1/T@xx{C0p 6~>ۏ1֚nؓ; bNHpU-Bn7HQ43@ִG]-[HpVޞ& . TV&]3/pF>>#JcX^zH^_N2XIflal&㹍_|Il߽p8Fϖ2µ0R עt%7x)6V?8A])M|M.fU]>y͕ G@C}_q訅fحrgM6Ix&Q3k;3,wpikgZ>N[UmjMLGYkfNϿpti~!vlU_.?ؑy(žu$ÈiCp&&h07:$=FW<HlW$|)vɷ20Q i ѐئKd|rjqFL,'_WG3:G6|"wzm e嬭 Nȑع/T1L Fvɵb~PD1,b~!oz'ݞƀ.R'kmN~А uр%v!jAnxUt7\h\۞^3,YA:H0~P'cO@TrY /%pkuΒf{R=OY\RSĉ x,ĥ 7aUS64G{|[䴭{ȋ{tJ<]ceQAgBeg̰MfہiQgx6TmËvvVmİj֢'38M/z6.eWq,IFGRMDK;J+mc/Ok&ǐ؎_S94fHW'ˢ7BCC`{ gg Ꮑvhj+O0":)1Z# 7{N})Y{.ƔvX{M*Zׅ¨ 9փ#ٕQmvH(#=tcR#t~Hxfފ"0d-:q}A݋pGx'%Xz3%4A{o( 4}% фE ="GXSsc62"W/CS\I3,1(gz_/ꀟ1nqΈ id:Vn.T},ݲB;K H1N=v1zLf!9Gָ.!{}ٚa!D542-H ͕ы!)k cZy-i9o乐}U}}n }<-x)a6X@^w5gӴ1p"_1pĉ,&b/ãwQNtPF{0+Hb|Gđ/Qk^a_jam-<'BHQDN@sѰM%H7'd=X#?%w^joBH^ChD;Erz*ճߚ\O8PE6ykxwStQy^_uUY>ļA9#zg; 4^}[%⹉ D?ʳd#3S 6"b+Ђbp&^ kmظL' ߝDKA opQ5()~8ԸyWeQp-˓?8iS$Ftjs{/QZ1H]B~IVDoGr%x}t^ɴ`X^;Ffdy{;(F)~'\)3X8\(87⼕H Ѽg4"%.M *vډ't&pE85Tqӆ#e/bZާ%haDb9qp;q, ݥN|I v,1+*zS sklbk_HmL|ղI_]T:6m1{iٚz4 N$"dP Z.+nnSWQxd'1"NFx=$!R0Wp\§v*:ή$o H6_귏GBO)h;N#%x|4'nqa(eH83V>yb c4F+t6rp?(G;L7^ c꩓c \@cJsbB{[wKHJEVRWDMU?ąDrt3\EOkp b4 1Ņ`_jεܟ[AszHӂ3~Ռ$2_=Z.+Iǀd㼉m./gG'w2~lrRM}^xzC93-(Ӛg{]=$s632x`u:6Kxcir92/N;-". yQ"Ŷ̳LS5KOmp=}BPvuN;o_` p䘭NiH9dcWỲ$h"-2j&>L{)E~kKr|2氄?7IJFD^6J(8g:큃5W?^=Օ,>6bjDGYSO^i"#NQ'?>:cCQ\YD ~!4#Lݏx[9,a1f]8Д`v /vw~͌n&φtzT8ۃ/K&,CAA+z }]&dGAZ%#8,3`2>q'h!~;D <|;qK!@bd2EOX&UE[u 5?xv@x/W#ƨM)Pآ$I[Imt3dF/E|#Wܻ"O:J8:&5h7VCtI)b +eY<8$Z]LN0#1"~n-Jl;BvWqZT.ǩEzDF)Cz]~3$6KHvN.L>;J.9N!WZTB+zF2)C\Gi{.&70i&"?K,eF"FwpV4\a1  J+MDYq=b"۲۩r1%*b([Q2f.2;»W0K 7bn`:Atv$m/NȒt/z55wvyrDH]]9o/פ;QF(N LWJc\*'yQ?˪h `E[4Cb͓1ȑ;_vsV2 u0PZI!1[{?Ca /uWڔfeD?[i',9<>3mDQBX(|P[;Q{V\2~^[f7Kj/Zl|o(e΅3vCm@|l}Qu*Rl U8+SY-g6UsZڃ1yPEs>yDzZˠ4(&h~Q]%`G{gVBG 8v"˂yC\*8Y/g]QLb}^UJ8~/DpJ`]]:Ice[VqytxZDQ_UDщYDO'ݎ.me,ܤu7nς!tP{y/Xb2# }Jvbv$DuG w775u*$kPVKgiF)=ۣx 3 #I΁%uIWå67HW\*B5G)_{y)A&\]r&Ґ977K"%r('[Hr )lKv)Dq;xРTB8 7ٮOQ$7(\t4Գ}Tz.TwW9ya#2bNO';O>U*o"*Mog(*^ŔY鵲)az&tIq7[HN(Bd 'ouBfOab\GyC}~wѢGF{b{'}wHA>!waZixW=k`Fbcؗc =us%{_QIBl܅gya&GBz`)CFØw/Je_oRhNvk{w?&-4`KWԙ-'' qS>Gq"/ jEն.>}t)6Eaz}$]?EbeއɣOLʺɮ ιKԚ|+Ql@5/ E3&{c1AGP3V髢K`H*':&i ~F{}Ko}ܣVBR-&W^jo$bƥWp6%Ɨjj,6)z>,p%5͚]0i|+f饻t^.)6hsMlqtT5r:*, M(WG[7tKJGvV6G@2)FU[f4s Tl{%=ld? 5D"E4R{ SJżTfQRA$aԃ^guK-7LRrq r=`&?#*eWAyW1%mTD,oHR#J&(aIwX1%gM[{ً3֗ZIUfSMϖw#VaxJ:"Oi;w5PlΩP6 CR/)5iױ( },-HЧlI>tKZcp2`@Kl7مփ?ف,}Lԝ2N6dC+3 ?>3QyFk7RR9&Wykp5[Ԏ9gC' ft&&M"5 vCsp}X<{%]{W -L*llVQUvf,a^ovf4S~4sWft S z#IƴCJF@>I5x]p!朝s#&}>EU4LG pxn;} 33Oi~&I 2w2(!z5w.|q뫪$Wa\sRǗ_=TO Y*_$\qťfOof%@05;[&@qhXwvR8N/O{m6[U=*mg-70]ݏ<+U*B)os24aER#__4u3{f="B~Jﮙ7qVwuF8nBPεpgQKpa[#n6ͽ4oܝ|j˴Nr=J̵ Ľ>38\#QU584jaQC syҔ#J?4Q9YD+͋@`6.G! ʙqs|zJVOŐ(5 W`xC荈)qeSTv<0rNH"Jg4aQ=NSrnӎM3JRaRdf}@nP{P0BiؿG\oWGLk;JߠM+vtEKqԮwI0Ghqcg7Z+S]e4:.L:f*Jm;iO(QuuszSbDaHj+P}61K/1uMfYMzlz+Z|%HfDv,fNH77 9^Y^{ՠ&ݒPM;cϋEp)?A }?!ɽVԩ1_'Sk7np~{F ߗ:CzS<&\1y'.bb=\~Q Jou_FL]Ƶp٦'O/>?e4MWidj^~5W_|_>}i`i1#LU[/ :`5O:磤mi@߃+UWSO%}xq眏/344Ҽ{u+TD@."Xt.^fᣂ i=D#P7huGdig9z*/vJp7H?@.M}|G? ,.pte,(^&U0IP! !6Pslg2k> ‰o/l Y|kJACт vuJw*t1w]ѻ-rһZ14<_i} x5ne{HW4im҃CI)-kNݩPy{K>`}-?O,Dg!u)6B][N_TZ AwJ१-M)LM>NYf-fA vs`O똫osܗiHB`;W /աiiDr`x*嗍';ncMpn>yVhcvc[ŲI b<5GN,uB~d3N|C*ɛ~L$_NTulC}k ռiTvڡH|Ig0"{ٴO)UDxM{=1V_K.lEJ0.]%NjUcِXr1UB~$yv~o(|!ҶIyWQËk]IazD̯Wu=[/h:gsYgFbM=1U)FngAPvԿkudklyRTZjZu3aY|S 8&D&oHC=ХOt3?sﰐݣSI5wh]U vr-s?5x_8I̘ck E4 a߀Z><j-ϟz9!f_r?;63z 0wTR_ӈ9EJ!zcNj{$:n#o>?6qnDxs1M-\jˢ_XB8 j+;& *AGVXζ;h2mP: g/DUL Z!F| :N^U@Zh浉9^ JJi)eKًiu+ʦtZGṿzsUuFݬsdRkbY["~d䪿9m溋Fm˚߲ y4qX[U־1En6 ݠ:W0_ZpA/l1i67{܈rFL6>kj`.L+hcaͲY @$ TQ'M6xS^ nbPTǺb~JsYb`Je\F?اvH}1=*dqM{5ټC{S! @.LAZ+pb$/- OˀClVHv]Cv_lxa8 8LmS9uwA'$vsghC++k ^5l(Uq4&O ]'g)EӵO̡р&)Nv)s\~yKwPِe1\pKLv kf/U$Vf:0JV: J#L w~QkWY KPЄ`R>n oIg}P֝G#e%Q>3J!/fw-KTq/Kwș?4GV'+xK6w?&ы-4$-,P85\Eg:Eu?/ @꒚-an<5FmLHxmfWήG!ЬA!IW)u DhnG6Eǐ(S UWSRUھTT SYU=݋g-({R:ǎsf4^"ZiLɧpxRlՀZUԺ6X4{롛'7K8@<2.dX>s֚rWٝI#L %r[Q7{"Jt(2Ә*q0FΝ)#(Sg-Օ*۔^<[E v<V~$nu{4a6ԍH_zbٹlV9s=uZ¬GToOdʋ`ps*Tߠ cA)͘{"tN]i'-;9!sRBK{typ^(H2:2B_EBL3Z p.=tEʪ䯃D8GaV:CvDk%0zƃ`}y|B9ߔF?‰r|ēQ1yD=K-4&X>Dr֒:b"VI IfyyasC:y^:d,x"ͽsv2CwCM`J*P4vt+!DvkڗaN>K]v.7-xe䣳`"2.O2e.LI~_y^aSmé*gy2iG84y ,KO~֑D$fڭ|ij&?N&}V1#DrT9&P 陝Kn?7UzGͳ$֮fH{4yޏoEP^Qm|f|_~_>9w7}7}74 u$2P8[=NZA8mjQ9BSCS zRzE*VH|cǭf\!k 4,8]c: Ftm qH]߸*p 'o^@ U! "Y&dĥvs#]h5nz%O|f7'U<IJYoU'彐m sz KYg7b|/ hϧ*"g8ЎYH}x86nQ W$En7.)E$._Bb\|ltȏ5N//wGJ;.Ҧ:; Kw buE6}/@0 u7z.5'RxL|ї^ׯa؜*9MX9 S>3T6+Q8<uKVj?w2&ۤ RU rP4^gswڙ>kؘŋ5̓ߠz&1ؖ0&7UU=g?)Y NZk-Gܲ6nΉbSO[6wtwO+A8U_GvUR݋:vhpy}sV7i0|.uv5'[md0?ƧÉ0~ԸP"KQ XG8֓GqnZLƅf s%(qkL"{vazɅWD4CYpήj*̯:vڳL&l5gWyͯդHj""  ؛F@Xm@0񝸈%VOCqAV~K4a{LgjC"5;-_g!^s]'|iCtvq<:: lt{wK>IFsp:uwɥ1~arz%+ev8qgHS&W}Vĵd'AZ2ݗ9ր_9ٗy9:m(Ȁo!띕YOФ=x0Y"cɡllrPY_;Y:哓eЩ-X7Q+6Թ9kҵDYC`| /.Q;Hɫu:;ྎ/{oO,O+1C]b1l0iˊƴ]gWu&gB]h4kKU>lN:[C5 vq dPЙ 'PlPw c163 6FFM@1FG"JxcZ*E2c0MY2-ttUTr+]8sp<t#4VhѠTԕI1%~:zxAa~zԻ1@<CCŜ)|yuݙZMlrE(4\_2tx2cs|! }nQ"g"t7kشu,TB\y[%b9|ǻg~XHv#]l񛛛ϧE7O?.~c{aawk9Y_..W/|>/m.[l~v7xi_v>}fm(﷏7w7xqm vnB˪^5a/NV׻n?8qv =EO_z6w[t?a?p _>n?.>>=/o拟^7s2;{bp|~]uE.u>Z^}^^}^w<~{:i/ 銗/@%gZѸק/D^/D^>~+7ǯ~mxW6<33 /̏_Jկ(_J LKMaizsrfZ^h/lX/]؍҅x/ɒlϗ.'Vt&.a.~Ibg;nM{}0WƠxEQUq;^B0 >]v~\v`wiwiz۫OWlݘ~y.~:.|OOۇ_-~^Z` x|nެkw78~C!mWזì֏G=hfs=̞i3ti]=.Ͼ>g?&;OTϰXTϯ}Yl/..V[Sj'Ofދ|7_ض5ᚿ}x|~4y\"x͏|-0Ķn$if[PKpI]ҼHG\菛G߾*_aS .٥. 0X = ۽7{'@Ȗ~^y| ݢ- lz1~4FsX41G-0A8}ݢW#o-ͨ5|iYe tMw7rZyMg0T]oηwt<}M/3ܲ߰PLʼ.}ÆwS4λ @MU_sZjI OxeݛtgY7DMW| {<Wp76}xz ɷ/Q-GhմxuWqQR 7]n7ʭ,=]^tL5r>{`gLĢ ]Eu?sWep4UϽ+W k@Ogrz*6~U֘SQlGHs DMElR=eN<?{>3Ϭ# ,@rir={dW%7CmTϯa l9L ~~/׼lZ@4ϭ96\4}D̚/E;x ?%Ϫ r.@}FÍ_?kSe ?ܲqH3u-V"UT]*߲kF(m!H¦f%lmMgfQ ll]j{jxIdpU7E3qިm9`~^2(M7ύA2{Pڶ݂l:mKZUJ /ǟ0ؙ[4^G*-&c]~^2u<-)~ 5^cS˕o.э{f b|k#NLdi_l4!( ab((jAmXпCVhOZ ;D_ i_0$ص=;:&W v]ѧ*${ gkݖoЧsqe胩Q'̃xbx2r4׿.J%#ZpdJhj&]ٛƯ(}UU2$Uk5^/+v*_DoS?"H h3b/۟i{(-};onHBi4.qmBwFph?|7s]r3; !*}U݉ U!ETFϙ*}m&ϼ.ZqP:BJԝFb¯ɉwG"~]Tu*>;^wt ުl4:i865[T;zHt*^sٝXt~W[Yg2^ *-]}75 Gj2^@\55.ݾ[ҷ[zU |-Ez)vUhT(yA#ӵI>}Kv u]HoȡEeCo[;Vm5/Sԗ Ѽod^}I2 =xv<$(m~5p֖ O~~5̗i;l F#-w}e|z=rrQl(t~5{nv /mɅ6)Ś˘UaGhW(8AY|$2I.7RB- ]GĬRV֨:TTOe[ aDO'+K9^u&9?L LD#ЍߪҨ &Ƥ\bTLJ7ۈLpK$ ȽC a|W.g*{Ju$zESE: I'9v1q:xQ&c8(!cf,#.e'N;'rN؉Cb 1FV\9WND1v(%Y^EOӻ-ɞ d r X=A.ێ#=!{e֘hc~`-4f%qϮ+dy;8/%&=v%˒vҴ]!;Un6~3^*ϽWQS |UzԴDCyl6`,MӖA6ٶͳ t-\zyê{BF =RFzH/ebf*)@D.a9toIī5ʹboHhI8TI3Sc4&X_ */X<> Γ{ 0Y)Ⱥ.).$^{g+%e?%|C=09İ15fW#||ܱ腱&لj2*cbp?RW ]| 8I.aC$|ĈF!9uh$k6x y?UM4U?8ݧ͙m8G7іoqyG'p!EܵG\v[L v9$𔴊%yf\3;%K*r]-^<>yBk5\&T@-p)3TOڍx@cF4(`iĖG@o)GjF @#}5A{]:M0;A*4$ɿۼ[7Ua]F-\z⯤#UHa([BsMr*(}X"~5IXMeiiqc>@bLH.d18%. |W^jzM'xC\ 4h];ac7D} C!f'/xyA<܎$ǖ(q4\t4"L"!AGsURbk(uoN>a#7Vw+SR,$$ial*ۓ ζڙjW.&dN ӝx_NKxO`J^,'c 3B:^k/dItʴnR;9IVx) 6?*$a{(--S+{ x)9z"G4^4 kC ?&>Nڸ('L6}Y'FWӦI7qp &2ゾZ@ж(քuVȢqXyFg q)4ڃCq-[| ь }➳|V<)lye~$i%O =_E$a)f<.}vӕߴmHG}8Z e)R'8-ƭOܵD%DPGŰM[ 9']ݦ U:buj~DDr6eӭ}FREM5ҏ"+rJ8. ߧ}!W\NQCAlŔ#I!.!77}?T5 "{1"_Do8<#c˂Gl9w5'!b.9;|@mYV4 d)(8 U RzQ3k l >dDo\>΁G˥g}"pN޼°yWp+l8 %٠gڇӇg*Ib4v\1\m|>WLgz{d3w;nl0G:ebF YһJ2>A}ƷHrs!K-s։[D!'|lQc:{n|,N2 j\@To'`cZbgK,GpD3+XFyG).,Q&$K- W;!;[%|L2>y }}럡`G5䖚,} o"|zN_{V8?s&*.zD+'Mj6gV&]5N6e,Q,"l!^1\x-;QQzry_c_Ƒd_QWM;\+.ؒZKC H*O$r×E*f~YOWYk0kHU0WYH?%?q{U{Rdrl Y?ʣ&o~B=L8aDu 6w/J~mfuV&_d3hIgO3M5v`ACJK?K nr6He ;ɂT\8~ervu:%` #EmXG< ]+y9HpUktWu,xbl<.=j-!))Y,ZŒIdž4|Po|ӉHy{=yp)Nl<!+ o 㭆C|> Yt|Ai_l%6E1pjvS1|NcކX-BdN kSAkX 'CCGV3&~YeaX`U6':h(sȁWDfn|Q9qY!_L2laHOx9SQ†ҵ,NicQE3;6 KUu䭞\;#r:27^,R%Xb-?3z"$ؗ5 a.פ if5uͿ^u62wzK)Y"bwNU35|׶<ɸy?|!ǣ:_RD=֎hLi; p >nԦ̚'qZmM ޏO9G\z|b s"&|M>Xu9]#Ǜ%,{r9.)}00TGp)!8_.qf)aP)~)GC?-&IRd$oq[e"g wFZ:2} @fc! <;0%˫'/hzm[ZimnrhWD̽LlqDCh`*âYV$?U}ʱ9VXze,oUL*ʧ||cF^>ʠP^i*w!$eT:<E6T.SyT u+&fg]>!>ƂtI(1W^Dz{`P0oh4ʐȹ5m!:=+%3tu֫QUUǰřdDVgk-&ȥW!nZudl7O~@zf,|2%q8~j7esy-=i"\U:N*+U<%G%5g8)GK UI '6i)KIOً;&hC͆l2Lj&Ȉ4qȎsIf-PɭNzvլ^ed,fu,;g̃Ki{pQ] &׫aYB,]gH=*K萜5lq{f<' L [_p 8cZo-QEE_er(tU} %04r"RMnƒ`IZw.EX˼zJAҸw}+jCZCc߂ K!P,qp]--H @_„TEf#O>Sx6LWWMsnܩuVN?#j<%7z>ƶBATA7kŚvQ׳@ ' r v?t:xx4s}jEN!LmiΰSp1 H$#5 nhD*u"g|!pr$$wЎ(g|_8*uh+'GreyVKz'c`AF B,425hDզ6戁Fm7 Eω^:I@>C'*ԓ1:d SeE-;S?7&OR%8O/1UHO/#RIU6&{==''+ ۑfN8B`bmrƨؕ?ͦJrM25F)t5QqqSe rGҌ5ù>J.G'ʧNa>պnLSmyewEoa\a* !h Y:\?ɣ g[8܁ΟCC27pIE(x!ׁ')ˑXR1XA۰O>Hrf8.3qQדt4EFy6)ۘI ROA7C5+KE1omc'f3~ f* RNƥ8nHz%Aʉ {B:?%pP^:UMS2Vh$%bƜw>T2jK2>-%-xe=H |#W<`bNdF΀RW+]xрAUѴ%aaI^O]ZM.<-8uE|Sݞ.S+6 .Jay H4 O~{EBZl4*ceT8Pt/bdMxBlTpbtokbfqvJ$䧮oLߺqS*tBo-m[ήwIr2 F3{?յ7>z #/w!_^wϊ; ƚwz_Uw>\(JP˶ӽ +m::"nVs@I d|ֳ'/ca3;#Z0,CՉ))[L|Gv©K y$Q\F qrCqmwuhn$>iu*X 1kD Ւ*TpxǹC uXF\⦛nNZ%U{>sRP(ڻ0q} k5 ?^*qF$%GiD.SXm?e0su!LQPV *!N 5γ%t8- :t7 ~鶑_t%ۯ=s'3!py_xR6)G戭P6pb[Շ˚kPTu N#2l?m`W\[(>6isaw{V;4Db0|mw,M] 'UbYHXtN$,#Hges o9C)к:IF}.D85XN,v; `w ] R;fTYsr(:iqPa׵nx wKV#xD[9 994i&J#2{Huع.3](Iv! Л C>$å\HNE> Zϗ&{2Cg]Y;Z2dNŁ 3Vdڼ.C }QMbOP,y*Ymw</^^o7UՈ74k #j?ļ['!#&WG#_` ɑ<o3U`2 CJEPAb+)EUC`'̔cÓ-ln+/$8=U ٧8lyB$6zȜqt_a@b3MKAnL˔ r\LKAQ(FCn5%RjpiYN{%}cP3GUA5^gHd1Pv[Rt+cr6rSgtrhhr-ܑ6rV`Dtk0y"e G)b$_vɄ?Oa\FBGԐA﷕ƞI,qf7 I =ӺSG10~G=my0KK{ +\m@hqG_h\gTвG Vk:PNj_WpB9X 8<؆"Qv&Y+oEa{֙jʊ.E`x\a IQ.z9$ttrB8?ov`fGCVx,y>);˽;5[j^ Μعd7a5F 5xr]s Y'r ?va ~&UW3^L=Z3O O% Ŀ%>`!! ЎF (Rslƒ"Գ-Ή3bC[Z1Iΰ/>cKdVP|aFhEIՇgXy(əJ yeYɓf?zk棗>BҒY-±=L] ,π'^@r4Hsp#`Ad@0qE6+lgnT^ǵ>~vKQg23Tax5@_u#h0k-()諤geo~}io賍2s(ݾVEOXuw*bUg%-'C/*<#-2ׁ;"O=eȔ$ ǹӆ>(5(%ub{wsiLʦ%GNp:[mN76B틠נ" (ىȨ^leb1Mb/G 5p߸ĩgaXEbX?'- <1Ҭ F82l?j:hSa/I æPèJ,#o# \#O'&ȹH9H*c':KCNճ֙`qن))I]oW2/Jbvm'\tl뵦9s<߾CRefm1 ~=:pDfKqbi-cz`xJmP:d zۂ ݂Iy>JBG'5nYT(/(#uᣔ92ܾ:zzI:OHU:-2J_Ȑ*eJ4=0t.O(a5Nπ,iwgFJ4޹} @bn}T^Z”G첯m>o')R #]] ;Dޥnȥ޳&*fb6s7@Q[vQU[T+; v:̓e0yq#wVjB^7Fa O+77Z{峷 $rA|اU&׭`,Ӗ@זe;Ki1N;JiE QӴz`Nu47~:;& Lqu=:B@vUhṕtwQ% yHcQ8gPL Gy`cЎiE[]1rb=<]/F6dL$U,! bB@-Rίq`m DUAbyO&L*/ƎbJC6ѵ]WVf6Pͥe:鬈X:?sZDnO8 i\>p@W܀ ]နW-#\Hl@U>s< (&GBgW< H(k.\ON Q6x { ; ]~U:v%1v9zEWEYAp*t>e~w `!wWAi6h55bUܸTn:S{{Fz^%U^gK#LB}D{o H{4J%.[!֟{&u%s_M|.q{}oϽ^x|~="[keO>z_C ޵_.ބկwqݕ"\#IF@r?z,0W'2<ץ~Gekf0uM?rI./jp^wnCɕC{}j<^hO^`+Dz&/{8B {z6ޏ2 6ޓ8ɗ2wp2md]~" ^C|D@DkOf IJp$,(XhK0zIҊmDgF2\ncAgD9ӥ-u?hYh[hd.!zk<L|V.o$#!kJ0hRKqE+;:[Nc;/%M#F ONdOꚑ,Gߖ99MY\9! c?ʁ|݉_91KJwi{r5mۍ~V[ .I"0ðhݪϰ VWeo>ĬuD&-F?3v,߶ՓmaNr1 BڐK贾iL^֍nA;bdvE禭Gt[;ST Xک^2 yZ*|$4֣Žk3 =ب:J *%RMrc:f+\2lF湗S0\rng1xU_?YV_*H^tV)(q(Fҽ}cAu~=0^jC/hH^ђ honBX A()}`Զکc*|A5;/i`W`Y/e03!O02=1[!nfvJaڗ, \yAC(;;3x8?t$RZ(~-9>6}28//>By'ާ} YDi3I~9ahj>}bDP0r*H$Y9a91@{2J{cNv`2=Jxv <&˱p'{S^*G&%ҦX/=U?њeъSl{biΌ!T"(.ۖȝ=돰0_Br hI7I#% %:Q=sE)MOY[0nvE 촪$iKyYcYN*~i)+Io)5'!HX2@I|F $x 9J\&#Iu%BYQ.M=x4O,+1n{Zg3TIblqIГwy`TeehQJϨ&ozfY3rxTU޵ׅV]4s֣mrOF<4JY!O|_'d݈lP+'Mc "C"V{FeWFRtGqo؏ɼcEʕՠ.}:oFZ렡_;!p)3bu/:O4SLz==cȣ<=kTɓoמ IѡwN%3!sɕHNX]T1,-sS5 :ѽJ82~}2)?uNqXQG`exgwsΞmp 0`1)E6?,Q[̶Ohyn*k'TIr8DjP<(Ē(XrQi>F_Ձ%D z9:ޗe5<]ݗ/=q"Kbk{XLYc# "-r]5bLߩQi+LLe#uߞMFfZ cg9ܞѭwgz_<3LRTkMJ̲slIo{#.&jA:mR-hd-C>+MJ&i?G sQpy^x_09v'g7 sjP" NeLlwG-f XطEAB`v$JGW:;%W) sIGw?HM>d|f_łr8-^ ~n T6{G4uMה‰jg LYѫfݵF?zB17I[ѣW};A ֯8 8p?8u f$csO䊎3۵C?{Y@սޡWܛ4#W\7 x^MuU (Y#fN0k̟?Eys%R5pbqJk֢[OEkԥ<NcVלUlׇšݫ~1o?7֙ r**X 9k#z_n+ P[w+kբuGj\~q?J~sx>{ԗh J=b/U֓G9x/a>fUz{';Xn#od7,ނ29.o4x2ׯ< pN(L_L,ͮLw~[&9 38vS]T\={y%!,Ϯd~MɅПHtN' ^ \]p]i'&7w\$[$sO;rlj>yLǏ@jKKAL}I|_0ڗ/;+)2NEFox&r9-HkFv~:$c3MYީ͝Sp ;ڻvU)[#FKwhnNa6ٻ?,n?T/b0nb݈2y_WO4$vy|>e71+պ Ae@ |^ft1K(\vf8v\1km;ЋdKF7zR9}B51ukmf۶;\gWbnṞe!o,}{Ly6>yoLPF˯:8bu=LL|VEluySYϭ v )@c뤉it03 6{'=IR=ZjDlnU5fu2<.BhtӶq/ko:Y:I QNfB|?}k T)ĕlj-hW8's=W0 ]^ܶ1<^CG{!Vp*~XGM u k7_LRa,c'VH&9Su%dLAM>feE_/-`$u82#:O  _ _ $LlƟ8ϼCoD"y`vGvA2q7JWIbn`@Tx%0oNɃ*'ˀ>n?g5+'81=Q#b9Űp"-nMD7ȂPȨY#g\I"SyN x! ,\/I)b`*oDOu}% b{it%Wl/0S27.ڴ`g3Y݁Ws+o]CGzm}IV}ǩ| :k;ϋcTdtHYi? h68cm '`6_{չvYv15#!2VPA]'tMxro*\EͦOChBɱ:Pfg_%JY3g!fywzk-FĽ@zKZn ;)s}CBo?XQ"f`1KF"Vđժ앃0ٺ ~D;e˸,禋נM[рcfiyd4 n^b D+AGTf nou0c YF!EO mf)e>[|/Mfpur6/\u-K_>MJR{]dZ/W~^u;!Yu,dj^u9Ƽo'iHju~өjsg9FHUgIv>l .wS. ¶ЃUPm*'S!W}1ka|;mT}]`t*g7\rMqWr R)L;2! rY9B3ϗpf1?Jmpg+Ok#]fdgGYV6/|E\11 l~⨜'bE};9AUs(`wjI@%2r3u1z6$V'Q a‰Ix7G(5 Nb-p4`i GS!f&HRpqO=*I~gtY"nƗ4dzB#G:^/^NKV dW"`Gw.bfh!/9|t .tkw筪R{X"5[MmluG 颯(Z*u=Ɩ}:?bH;ۗ6Sb$g^!H/Si u/n uW\YdԓL\HNb`xxGϋy> H߮0gfuC 6רf:N1"S#`|z,};֎D܄ZөÓY}H['lk^Dfr:JKSx#(Yݩ"!lq0mfN{ݨ^R&'ˣL]xft׳fsqh=$bcore++-1.7/doc/papers/rootBound.ps.gz0100644000175000001440000044276307443425527017022 0ustar joachimusers;9rootBound.psk-q ~_H!O5" Ф.5,5Sfd2d兗>}BbwZ)I$k+}^w~^_Ͽ??|/~yo7sog}_~OR֗xo>%\6>|ůg݇_|40m/alLdڏ~5ė//?|o?Kŏ;~zѫǯ׷oO_?_Zˏ?я_/wo?Fy(?x_Wuoۏ{Hd?{WYx~1?!ǧ_ԧ?>xgk//^PJr8?o?{?L~vw/|^zso~~'÷'o>xu~?{ߍ/?߿/>k|Qb?}|ɛ_~1_Bx9_~+X/CG_~~wهja{o}/~Lg߰o? ^~:?ї_`w^wloO~5zPWw?o__}:1WOa}ه~_~Fۻ3׊+ݟ0_xw|o>z};?Řgf >^Ͼd֘}9mѾs7/߽3^/!?n?y??O'o^_|h~οV~^湽o>/ˏ_~I^2>9ol}YG)V?;g6?clV?woo_mX?_>z20_=?0??~|[''~X_G]#ݧo?lp47w|4?x)r~>ן~;_io~"[O_}o~?xlgw ,#OΑMk4~q͇cgz~ ~kB}~p޲4>xAx'7~kX& 5 ʯq8뗿_b=j$1_1aw\Y~3o^}бw|sx?*ǿZg/{O?&Z}>" }2;k?tCͼ㷃Aӏ^GG2o?zV/q|țaoo/~G׋oOp/> +t~yt<&x켛ZąR=w^Ӈ8|Yil_?W߹plޏ],ӏmLoH֏WmL?|g__/{5V_|yЯ^?},7~?|*>_{ӽ?aѰ'xv>d=7_>xYzW| WGo]K~~g+~?'oɻ߹ڛe9BR>~7JYd!o`y0ěW+b4!#F7ny_>_}s&>7/~3ͷ¾/qpxK}Rc|%}=z/y{>V^Ǯ8w_|Ŵ?O7YyΟg'o~o 7|^nY; >^G/@ |G5~_ѻO_cLG<?[_G s~zD k/ _8aJ>/(\^Y{ϱO?.y HCq7kZ^__2/Չ_>?}9__#/6+;_ GWI&hC¿bo~6kկ֟G5sGr|F^of /}~Xwe}?_ S kG?}wW[^8>zїKCL/Ɨ~%?ȑ=Msu]O^0_੿X/~?#Es|B'[H.OgNO>͚7?y?s_~>k?7c@Ag[zs?/??9Qp}_~E{ȭ;x~B׫>|{ܓzE>_-_[Hm{^r/D˛__̅^_/o>e`_tro?z*W77v;˛o|7lM7rW_z}y3+W5~<~?֯|G/_7|W~ ޷~ʟWo}__}k~_|W.>~2ܼ|/rrom1g?{)3E~bP ۹TB=PXyƑގ<S/%Ϭ=9}n1=OGz}zG)u])?e=!lŅR{LU^Z|,1S#S̳ߑG;#?1}y}dn/u;So=ܵwʸ/<̽ϑܹ\{1=i^j%>؏H kK|_5V{}8C.g&Gy0NLJ=*CŌ]#v'&?]yqR1D>Z|[9\a[2@iSΫ2ecnZyu `RkgScOGc +ws&Al~Y`WNX#[6B Oz}Ċ|0Sq;#_65+T # #70K _~t n 3`Fe,u߼~#ju>B5c} W;⅓bW;-bi; &4fYAy?Y}2UOC<4wA{Ҽj;~ƒw8V~8+ /?m,Q%,z9Qhר, jyOYR2ƶ fߖǸgngâ҇ٞ#|$0k+ss2j 1nkƋLȵ#7pމY'ZpM\i{N qsLA p13}:~Z+kg\b\,s^ݱ8kCDc16fٱC\C=t y{e]s_a|u>0?DbJ{a@KFNJ(U{q?o-x0/Ņ%v08<0"Wśt`ϡk+`ט7c% 3q ;sIsUH,rxYxȨr7y&ZPz{3 CKWѓ,XP2\wz v1`?B"̈́2xYN$3E, pC%(# BaՉagHaZ ̧@#ʼn-@v*ycx`Ђ$hvx\N>J7a\(.?@5{,-pq:G1(|h9+k4@.,녵!1o #>!n:,) Ae83>=y;̍SpBGgzF|d:F$82؟oPcMTEXafkuumܓU LB m,jM+e⍕b`B7 pi& JvK5;ܝ95WI'FNp=j5qL;s =dXά$f? "Dfûzg˘С )="N2p{q׉Se:NxU)5wS  3` )'n,Ӆ@ OqCt tzb17|x chz2 ?q׉g1$ 6)X1@ *Y֎wИd~7YqA IZ1"( )R,Pfǃ}z2O`o  XNr}FQkpU<+5;D8 ;Pc H?; à \~6+Ʒ<+[FxQ-Lpg YP %`*]˗^a$qҰH%Ḓ275 9q` [~1Ifq',Pl͌ 3% ֈ|g1u : V.dhzUp33 >;01Zb@[`h]FdmA'B$jر7Nbgp ܁涔0e:)%@Z9{G=*r@_ ~^BJpW,Dt(;ǪI|K3,D{#Zsn-R'_vH6=g a!3eb&.zB:62cYcӘPlKʈ.Gx_Kln7kpp?Aj왉.GŔF#5iC;T]>mڽ1>ap'Ƃtt+@h%n-Š\ha4 ~Y?>RZ _+B^W!WNdLy lxܹa1;|;?,fp~W mp;ltK0#W¥b# 䛰[IH`B =qPq%N,s љ4Fc4@r;IRވK!61-!f1LVM&Pw-n Hw9L`'5,fAD#c*>O^iDu.Ppx+&f ÀOp">O)DLH2:W_7-c$woX07i̯_!r qQ-(0#5x`13!.#u{Ǖ06fdCL@rnsAo`B|DŽ9$N-)\CCz ` NM|t ,|g &^u7bw:$gKXq3'|@nmj4!z lf%q)jbx}= __3Npy r&:t5V1caP+R6.D:\@DU u:v0tkVH"DזZ%_焱'CXq)ZX$ŧO7{`&0ֹ݂6vC+K;D$Di sxS#_<\~~swjn;t>V {2㗣D؆{<%鍈xy/l8~. ;x+ -"pN _,\;tmQЂn`)p 3_m5_fdYz8dz0lC|yOfK t}q$ʛ8ԍ @Ajbw`[?7n5!Nq+&NƼ" e2I^'=20 }[2ncFt`Ĥ $O57\E΃?{fL S.yfzq3AcRuò`Ƒ?Y4"Y|?q WaL7M{ U_ha)NT撫yy:^]%O%3VvcÄwBиx Cnb ynXZ3n[P",s$1H@=@qKtXtẓ҉_ _i; 8w"=smƟ=R"@¤Lx6 @ nL 'DMJJ/H ~aaqWWa<HY6 cM2 )tѥ/`Ȁ<α,!? Y/)1kqO';V<4-BfztU@*P.x5<<81ds,hAW&_ \GGnyH6)2S!]}3@죻WGdd+f}ZHiǓ~d$|/2 ]0Q`21 JMB (3Xg'رRfЯ|JXz`X}@>!r: „I&l@.5oӣ(nκMU<3~F 2q-7u4D P̀yGx' b1P2e< ao'o+TӓOW@0K&,q2~|>uEc*3025A+8wpWo2A 0 ?] a>'8T iy#s! 2f3oX]DC|n (XWh'ByvOXLCF66߸?0%g{yAyLz @Hoxsx7SCX@1)h/`h p"L%6&8A\ Xl ÍIس18A?nC SmPa:Qb}{tª^\ʸG,+ :L*}f@8z"AS$ܸU0)qۡ0 7gD9GN0mP>\mB"6KݺgxL%a^BFJ< y@qd; U8&߭zg+k(|0?} K?a=5/G/r}*Ox/_W*z?VUW_~4?%b1oO)_h _HJrKO.[ItHn`I)ݪVôy#;֦8Z斂\6/xH8só!Н=CB(=,j-iQ 8(`o3%$k[:9fP!7\B2ܬǀ<1*O ԈL"'s! D֟` Ɓ9ʻx>  /ORɴa~Acғڽv>vKn&4v˃mBs2?yVcm@C<30dg.JqXJ:yNty 1s+ӀM`o1G2+2cHS *`hPؚ!v3J#ȍ31R1wmM#:cnL[ >y`q׎kz/gܢgDV*:DfjA_̽ `4hQc jm9Syv)R9'x*zpxJ9<}Nm80?šNx MfgD7xz.4~IƀYCXstw|ǪיGO6R5%`_ 7ɩN pl 펳s%U>6jX^nY ؂5_ƶ--|<$}LkvZmwH?M-ă=/>y͙ͩϸ0F:j0p_}I8@(n33\K0Cv ! HX5@}-sφ:tpQe&0UcťbX̏Y8$UݒlK')5w&W1Wd¯gE V8t!X͍&~8F>GxIF7'g8'ţszjqf*!t ~v᪅7~escxkz)p#teOnߔ*Π$h>ǒd=`s0p< 93܊$&Dk큀Q==Źr{ !t[@;JybXKM nd3: |  caPX| ;IpI\J~j9; x3:Xgݹ*cjJ$֢cC!:wqXuwBl`ͽwz=ͭL܀[j ELa=K=gr$d-˖SKV@-)q5ad.[PK[ó *#+:]N =g3F*'n#ݲ/B= OksY߁mw(kZzD%`}59XrM?z52˛F(]/oӗo5(_5iN|'߈$F˨~gwџ$tpoU~ofO>0))cm$*NqT_+NMzB"vwV\ ΁`mnV5`i2 \ }_Ŵǒ2:qI5c߹YƴSVkAK"֕0 J$YYY|ZdF YOй9]~-7;,:vbXG@ߠeeg?N4d3`3X ?׶p[5Bҳ_yL^PVN[fDw͛D+o4zuv, 9M|Xlbv~*`Ϻ*e6K|;> v2% x.7E W-'Rju.U0G(c6K =f YnmEy X3kH dܞͪj.Gkya`g [-^\}E[6EsuU]>Uy0[;Eg!pp(A<5aTX \WӪ<'mXF1'y2aRRk+ U\ F3FHՐ\nG յ?n E0޹}a?}-_h]z; S`VdfЕڽk2aXalǪN[ÎsE2wp .$2.008{F+ ) w}x 8K3Ya%l6>s`*/C56L:^0ys=&&ȝ qG``a̙G[펁Wcq0bB͙S|IǞ[廒eV0.'i۪oRO>E0%&W^#~p'*TzߏxVn(Ԋ?Yv^kBw'j̽h{ 1{QQnt\jqximңZķ<lwM. SxD1:t mn^[X6,*& fTpw 1Ez4G]|[B)0{VA*K8]żR%>\}0pO>~}f&\' ZZboAejAK P1 ٧>z;6]VH\ A7}߰ FPPpd mõT<֚.=7\[l+%"N;yNdx4.Z`A3a'ab f i\~9Nl|cgs'xL\:>1ZL7Qg+}`Uj.MYpX幃:PBT0h$,kH߅ S"dOmܾD d양o1Xp1w MVu$DEweىn'Y@q7u  b}OfuρGr%B|)d*hc?V%ܸXw&`;ŭxDEqR; \uYfO]KĮb=g{ưrH9jWyPڌDolŲGs1@d"aa1ZE,jU3_ǫD';(-6^gn04T-irXcCtUy~QvMiB\aԒ̉0g}ӕ.Wǭ&x,k߭n W?zn .L8f8`0%z}1.]/цjB< h}9QM.-CR2 3q:eea-QPk׼LwC(Uign+JLrWOԃ9@L\_/+܂=[wyMFJMO-H[e1UO I90 ΡGl4q%:줲&ڑjU` J1ax7s1̷ي#0/v`-oO% dZ9ۯ0Lj![=ߖ6E-],&̝ZWkqI=R0wc7̋o.X꣩F6u']ʮcR!ߠXyU VuZj,@{x+ތ T>UmГ-dqxz"fHT{U lwKcE:kgU`6ykWH d*12!2A)` 43]Xm7}Uݫp$s=,gֶccF$S Vvrj"8SqS0_nQP:7 CwpKt7kJOgtk1f*Yn/%U-܎bAm-85D@(bK*Z9:%$XNE/~ȘNJNcBH:jb)Yn.{p\7b Dd *--s3"2.SUK8R2sޓ1K7آ:|LpWF̭PC ·[_,K 7R[|(8Tz\:U=NɭߖNSbR. # 74r[B\P{6KrLJhYP=3e:cʵ2=߀u@ U]0U儶ƺðANTP8 ͢UyRt'xxeoǃIOiLlJ1D>ٴ/ ́tMt!,xqKkmMBhVFpP}`nEx)@LT)BM4"w& KQ.*kSx}]iv.Eڍmfn4d=V?ĥX`8a 1C +%ZuG2;] b`'{V1ۭq^i #X;v1Q[A+Q[!߰D[W%/.*RyV* f3zbKYJ)A<#]JQwn9q);07Ou&S5q2Z :&P&X5<=M% {9^”؀Ų=Ae;'+qRHQ0Xl);[X" @YP&ؖԪPe 5fPV(Ɠ`_1ͩ<Ҙqa&/*C .;N]G ϶Jl+^;D3CBN8!p{B_}oUh! 3w6.VMxY>s,mVЄ/4mqfO>HR.^, WfZBT5ae%{PvQs_Q^P.B, \TdwO#*1Lݺi~Jz$K1*S0|rތY(`iIms۝mˊXմ)ƣyK0pDϪnKx[_ 6%oW@b'Q4FDTd:juu׻ESJГPeDr.g&4nSm3nAD{hDغ-6܁5CekS x 0S ݶ]۪wjw3T >KG͛]w1H=u.\}SmT( иT˚멲7|`gWzMT[B0&.,O<NjZoDgہ1֖eM)ptY{ぅfW1pm@Hf>+5b B*2ʺ]b'2qŴ!vq(o_W?nL0c[e "Sc[7]lI D[*`OŎ[U}>lTX|3:K*ZFT6O\V*5p[v rCUa׮3 j`[{ 778fMP"ȩFZ9t\'V%p|~>v[l)_LسDZMb"3k1%ԉo*6hx0&hu a]3V2RQ͎6?P=jXJ5l Oljhg%Q Pa?x.pvodLT[M@] gܗcovqF=n㜁ؑB<ݒWl7r ֟+Ξ590h7IrLkE1B Xb"rLb>;8x_W}ɁZ6AںtwxJdUgq#. a%3HV.}C(qFۗ8RaDTT 11WlTbN'^U]$G9;@ og9FoPfb [[.~92>Fjz%Dej5C}.$ń*ġaRu j'X'QxшIoꑘejT(n'׋ڄϴf֦=@6WJےR9nM:)X@vVBD`p a[It;GU퉩%|Nypez= ư(UHj;x3]Jr^2иz%vy nLmMRetl%V+9 &dILJǹݪ۳.p{mRnJO ztmAOslv ,j;qc ojnw?]'fO 5L{}HؼԬ˪d[tC<%V|~\fUU#ZawjܚxF<ca>TxòW:[ip 'ٷQ.u+}5uJ6bcN6n #^$ȣpS=ӔsƸ\sɤ}V9l25iS?X3`M< yϴӭYɪ#zEF|)- n;v]X81xLX1c&n^|.PہU=#*M4mAx3ZmƛÀj^"|glJH-+v%ps'.2V#Ncn:O#lOzRoh< a)-`@]*hx=ȏeiom%L19>.f;^J{c4lx"\njɰ+RkX%GPuڻ=+2&<\`/*nwguDhTP 㵇-;9ec10kh.3/oƝY/iu[8 H"ա- es@5\,x77VHJSOށlɜm{rs#֢a?nDQ؉t%0zݪH#Z"PW^*Ks`(֎b(K{MmS#Ei٠[JC,I*US9(XTEX}|?g/3\63*O Q*c$ӕmV_CMQgW68v1uW'lyk: +_gs˦jp,x1Dd%>Q,sw[;[{\aӀ hܕ[@,q?-jjAmѤǍZH#cIZe'WM@-NK^݊$U6´}v?A:ܭWqߒ2nŎaݚZj4y]vvCil Ӡj `6hF-ICdxο]/.'j V9/P;~}/|R\~wQ(7~76L`jr?)'2,u5=%6~]Qv%eY7SMwHf =y(Ѧ[`|Orwdt3߭J{1{j cff܏Jg_[ []մM}L}lbaƫ. bqn,ܦ +n)lRvL& bH2Mq+ Um{`[;q)lٕmQ >=`豊!Nܹxn/SxVݡY o48&l(wQJ ̞.m3ͯ|mjhy+~* Qvף~݉k"@=-6܈y]͊2Rԉ23 0-9![_ՊtN+`-`עg>ڡF).bYkjk8{nɚug1n+dq!rpWॾZ0d^}W/aL SbXn  ;PMNpo4UQm2`=գLJUiZ\~8<,R]xF|ްVw~ _p${~A֤ LSĭ.j5?,oY5@rAը ţO|=|L{jKUiþ3jTBMTO6nE kd:a㜻}ڏi[g0{Pi7^=&oæqmulΨl<xԻEw)>jzXb֘Y8P%\Z@ʔ(Z mN2Xb۵^{(j]*ťp4Մf(ؚ64x'݆n,Y„5tw|/%󒰹+uhJuo̠L)tgcn4z5e[-.RWȾ)w 8q?c1vSij7TPisUkTC Ov1 [P9IGqu>'2)fqCp0O1܏xnLwfd7넃_#c1lsOWG# T<$X~;vIM v֮]nR[PMI a\1GޓGUa**f7 nj+[-fDmc,δ]J2Ū`+]T0NdckJ5 jR!8$32[Oކ<+<43Yu 4Zȉwp~WڴS6lo;1tfO,+# $aD613-v`QpmEx VVD#|6,[t9'zRhvSTzcmyE u@6#xMDB<ӕ\~,P6'EȀzb3 1OMyQ+Rߦp@qPa8wwocL{$ppOKA?۰{sK,WH&8mӺLv=`׊ pb@AW{Ҁb;_mʰԳãYUe:{HO>&PSQ(tռg#+,nXEe =UvN/L`Ťj6l?]XoލRZe;le& Aa=g!Ǭa4sJfۓn`y%U=ڊ m=S˲<%'S4j]ʥYȀa$:*amXxJ;t<6۪:RROQ,<Ӯ }'Y<,?lpdeG0kU_lT9׭þV':&%L޳ή륚u9/="ec{FԷPreTMD\lL7ܤ,'t*pM噅fm)iQUL4+VrV[Gv;-F%h#P(E~`I1j FJ"ٲV=o`E." K eVclVnZ,݌=j–7+=R)<sԲ: @=gٟԒSY): 8]1;`ǥVnlK;(lv&3clm(,, t^5J[MWu(~+rlu۞I̽\V ĹIloZ&HbVI^ ?]8 !@VrO |E]#PǗQ6h3 \Y;|x*cV7tȀk=. ݪ7N-sw(621)]vOv*NxuG`tJX֞ r,uPF˞h/kq `d mDX @(63Rx&+C>rj&Ž; ֨P7H&(n.>8Dy?{UIt7)eZ4ݚJ WhNyv:omE0}tM*eԢlf3cpN(mq?."F̳M9\ꌏ[ vI8ƥ i܁p9| -}kp0^h:PT Mf5%GTsT~/>DXIQͫL@j61fx!@58q_6M>;7^=7x8cTn Ϊ Ȇu1Up6tTNJ߉X&yow3~gN,Z18rVNW nbɀ8CrWpVdȉPzl۰*E8Ĉ'HPjl̪`MUh PBv}n[1 o37M;g^M9 bX bkڏPDKA4?~7+8gT\"X8<:>ѮڌWjT$0[OzjPHXq*uƝDguaI3W˕p(Y2Lǚ|s;풅\'lC ^Fc>;6$GҘ0 VzP\\.*wPc#qHO+ nڼYBx-SVCڔ|pnQu em4TnGr/m}sϿ(f2j`m 7F5az%JذV7TOsZ;XgPqK@!]``wA mZd;SsSb"`ݍ+@m'RՋ G,%dU,몘nsYE ۦiLV]`V{t`2.9B+{`AFeYQ!6 &Aέrv=0/O31rbUŭ[0 Sem7V-",S"aޢY$b"o `+wj`4`1?^^*4mg4^S 1ZDs- 8ãm 7΃;AA<1"W}dz29+ 7YQV qv l3d+$m:4 p{JVTd9^Xjc=cK#ݧ(MĂSw|!@m2f\uX<"|\?2IվsCKmΆhB'0[}ɋlPRHf-76U_a.,KaM݈$n1 |Э>l8-ɄNgVBs08P/ vS4sf&]U%ba{28Y;O04ŒVT\q!VvQ+uU)Za-=QTŷ6pH:8#=wNyNœ24;0nu`aR@V\;>EnO TCڹ[ԜR(AAr<tbh.C> [|c(ouؖj5ؕV%pV ꄇ3)w󸦥FPPѦ.xPr1e^J@j; vڝr|s,l(nUvj$FrX^x:l %If؄ʵ>Dveo{tťMmmif-w[Z/S05H]y%,0݌1F^݉j-%L[:2!)4[٩nAq [̐AOKqb}+=/ŸWVA6R5eK ^l$ȴ6]?au0=lJ6_:b6t.D!^uHxy{D 50l?l{bJ0i~T[=gvb!{u j$,o,{VBpGcUb#;IhvQ~b6AL;; $7<8r[/V4^HEѐ|kѐ,4.Nэz^' 2= ^UYx𜰶}]mk(s+oenm70OXrR`4S Xe59y6m<=̹U/.p*[)Q0si_~,н|[sl_L1KɶVǪ),5!tGx pJcA){'kAy)fP(Gm$D/g Ak}*8^Θxd>+wtB%a =)30>r oZ/{#d3j*u.pl|-?`rk̞Ԁ֔Q`aw^&S)D\kP=cp,Vc@X ]q t ,]z0R3!V}UlVGB`}e*aD'՚ ˂̯` *M{[x1bAmG!ƝGfq 8L(4 0΢*ak';N7bx" 6^k޺U<(\g/]\77ꄶiWsO*6Um%hZ`k B쫬W0V6ؐc26Yd81V?=x:FGIv=fKѲ9C}GŗXۜ" |+PcӮEXp`=yVm볮LOn،`9{7,H&29+0Kcr='/̽e쏍eDx$ZB% x WbKmbܞ2Adk/~qL4s8 |;yWryf}eOaE$0-K;cڻC w  0m."mvfd%>%%nA·L/ᖬck1"cc- $}n[Rkd̦X`hѼ$Ηoaլrc>dvg<Zcw3X? HL&( Cw@Tg6޶<);؉'H24EI0yŪruT͖nivBJ?74onuvCc_ dճ˰+ݘYIݍ@ 1X'CV O*ld| Pw.H`MK虱vuvxuZ+uX8n*Ov\X\',[ɕ`]gkvM?K'#Un}*dVh3_F9z(el`$Yg箇|7(ȂWm\YX?yld1nfG&ۻeU}5޹N-H_c/G8ZOSv 2I"Gr(t&,kX4&=)YMpm*:HgU68hWU6AגMЉbw3ߢlFQ mOr3vAnְWeNh -#Q:~.fJ̼g>p Kȡk#~M+; Цx Tc x<~HT*zLӊ p/&.tÀֲ!&ߗ$ T^XR;w \I*&Ծ%,ta?^a6~!N;o'eCY{}S 95N!T?<2wGVu26:2M6V+KT ,[몝!Vx'{wfEPsLӊ XCܠ>rVlA|V(1*<4 z rsOUXw8/t1bTҹ؆*|) [:Ad9Nwx#2.^8SeC9} ƄB=<:ī_91g[5JZ,ɼv+kq4e˶cf%߄Sᓧ#$X7$| xyFK q묩% ֒zُԟ7&c@ 3Ukv3N~vHa敤ӬV=6L(\' 8V.~V8<7yqɊ%;=~AC 6dʋ$D?+:vZgpv؋b`x|.xXFq6`:,̳8;9an hN: Xn;ֻ? R1 S |wL:~:n/'5e@@ {X{U*~v9`U:mc#l”ݪ yE8f舳P$w%1E KМ»}6M6,wO Íq{jh;F@hT aY-Hk#OדYswCjE:`jJ6AX>η"6~!2ܸa6YQd^:mW"h ucnȳ̢Yfgk"p 0sCh28uA< H*6&NUI{>u-TKS5{us/є l춥uw^YG * pmVtWRj=}uxӱB3%+B4wo8"v&m(B[W 9>j`?;4e&2a7(uhY6#sqs[>aƓAH<ә@NUjлW/0<3uMIޒVvbAyV]%峘\'\ELIŖ&[/ ; .5RM5Rޭbn<j~Zhƨz-Te)Y$/<>gtWs#9lWFbOɔLo.\OM=l'ʦ;%?=wdɧ ;"9wTc~~濄8*_|oR᜿J럢}[˓~G9W_S>_\@NɒTY!]L:HW`gxG9FVYdɝs{p*Xդr@,} 'l_++X@>/kƞNft-]UlLV`(פi1kꞳ}1"Yw#0ycӬD2@ 8lFP#X<`* aj <ݡAbBM:r`@*fR%~2D%n팡 1 bgNQT؞t:B)D4d \RaF[0ՔUW\)q-,/6~<T&Ɨ->9hnj3nV(51Nl'ƓGBmQv˰pdw,GaR) 3$ĦuR`Pa^i:Vo4H2n=z^MIV0]-l"i7u?f)/mՄ蟯|qHkkAmoal[`m0,g:/>dF}NH)P  *Ec(  >>,cku js dKng` ݁GY.Pnoqxqvςϲ8x-~jAq aTuA'qb/k祹CdҸ% ?s}UWGI!q_-u+_hn*>7ka-MZ,"MҧOX ,ƶ , a_*$R7y,ƈ@^X.`heŊFhK܌֑EBY'`6ɻlq'4NMWɖ~lHr)%ÜO{!?`%@vªnZQO90}yj?jh[ Oc^j>e>o9榀gV'pXm ,Cj6wG}qY-AkmƠ0w8:@&xq`o\3OHjWpĕ씲THndhSVʝfrX ->6 `X^'v#|/ E~P !&Kn!~)ө8cYåBiEuƁ*/slnxpx]3.nmWrf^q`0O y$UZ2ȕKxTQ1i*¡$gٳp4Y(*%2)* (x9'L`"YeHc_Q[;xZ 3N"ף[Һ8 / н[$/DoFao0V jP!)"v%#Ӭ MTQ>,k VukaN.) *h Qŵ|6E8UG5M#2Q! a-FY'G#Uv̖=6& 3K ]} @1z \q %k|-;m:ȫ^rS~uzbtk!Oʘj'&Nf' w=P1b.$d!p[X} jqn-N*wT4ۂ 'g鐔(E8uy%<သHr]f\v?UyMcXkLgQMv_~pT ό^9nw2==^PٮC ˶2& p?rG9Z_ )ɮU5ZgS=SE}UB];9fa^f!>c؋ؘ]Y 7:KB- o:r{Yk++U/0yV4+;-V4u"pҎRtIa ҋVm*JXCQ{޳e߁̏wb͏%~?}KL NղpE.]LƱm_|_77o??oGo*/zyWߴ/o޽vp떺( 'Y8^f[1Y8 /%U/aLu_1 xg v pJ 5jjF cu5-%[V/ ;Lm-n}AƋ[cHv#6SԧP<\3Up bY9}ɂCINbfRUyEF(#Atj~EAiag {Dh4t~]E`-hQFťi˿u6ոf{kdaV5)XDf4{J1~rSqd.F7kT daQOϷ-|$4; Uɮ=iXVi2plf%SUelX01ak;wfPzT@ogݭW<2:W:d5 ~&I%+3IlgI0ipj DJ vZmAQ*T%2p( $MNl<h7'`.%v2V!BsXFZ>lQhCg;<Oڳîv=u$T?=gKsURf($|-Nڃ OD⏍fyl>vnJ!f.%$b?T:WYnݱi``ۉ*\&_8xS[ \.yvd+sCH夔{?h'?¾=[rZ& G=,6oIKлlOb5WW]nb i;w3ቻM`6ΰ 5-) V^ ~ 0yX쎷)VncBt#O0 HPm fn;Lq}X-nX_ :w&mDr5l6[PVhVp}30E]ݞVMuOI .@A`azO &k8a;m7xl;U)BF"^-%TTr&lv*Ք<ȳ&˙).S=3[Ӫf3N,lnE]x`|838+lHk\*պ@PxԵ Y jY5mLsd th/jvTMV۶9W4yi n @NDe |Ŀt_ž#ܨ&l%H v@yTq*'Kr(kVx7͐YeVEױ+XЬj: 㴢Mh^Z ֌ݸHi`P9X16L2OQգB}U[Y ;ۆlp- lj'F[sGƉV=)ܞ&n =D8-n~(&8Sc?WjET]Kmn" bV9is;&ղcnRKvamcmiv{e?V76i [e,Q-ةA9oǺ`޶z$seA uڬDa22,`V7+amm3,BɎ<܆. n;Pr:^Hk֘i)87VHu>"iq}U3n4<769nfu2onw-bt-mF]+ݗg[ tRfeP478g' =:J2x l+]Q!ɨdXb,T58ܛ-Ѧb.+<\љŨݸR"ܿא?7Up㹭ӎv:P#k5 u_P*/!jpX$~O4l~_C]qgZ% ۩Ʋĕ~0}gfg8SHM۪C:ͅA21DŽD`c?pEYڈϪuI‡e ! 'Q^AyiST"͹uadrhvȱ cVQ|AA1ts#ٓH~;Z:4=E~{< {SY{.nZ $gȀ)ȲbwSS[S&;n̓P6XNS2J#,Hb~_k٦iV{|l?{ٮ@yixgp'E 9LObwLncb)Ay pĠygi FӍCyZs6=d^"cz1fe5 3A T Gfd=*KAh@" ̷ҬB/t26'rqFoM0^ЌOhA*ʹ&H܎jIwNk,]KM5R66`UT-27 )z$bg7Ċ>II AxF\ޛ;M&QT!!(Mij1M y#("ݽMB~(g[R[Dx]x:ВJְOu$Ƀ#V C*7ܚ@3:sr4?VN[ =4-uCR2 "+*w.&v۬dWՕE ɖηuiU`&oFǧt8"r؏/g粍m[p&O>(.rGcjZQһL&%Mm.y? `w-*0'1I~[;]?z%>ۗo?"'׿ ion_U|7Wo~ž+ )~}5k60蠋`? "By :Yu{@,X<1/-u:-cVYaS03X~L&3yUD yCQ`guԴ?y$H :oo5 ^`!r΋Yp }g|J(6t7OnGu#f@XMM $(.zi@taYȰvuz*>! = Tk+k ȯ4CJ_TCTe( %UbR۫4*'w&=6+OWjCXޏ9uj 0k^-%w[zz;N 9leJzOp^275L\YV<XM%?7v+ ʆ\oӄӀǖPwAa8~:ç3mőZ 8C75`Djp z-%`>"e4n9 HWOy0w7+ԃWlFRd_E-{PQ~w+iǯ>:WƖ'{5YMkݐٛ+s~6*v[Iߥ=j}Ltcyij׀fGdW{1FUqmiYd,"'=}OSD+9JyGm%*RxUUnt!`aUyeh*D/ZZ~|0z,nx֛t:zVd5/(#M竕w^$rډ, oF%H#{i(4U <-}GVnm&ga|%}C"SIlUy]CVȚzq{`1C].??h "P^6rW صzH\,m7VK"w%y[e|y8V_6/m5 [[ #u[=ض흓bQ4@BB鯠-HRa>8$:hȜg'""+>wtu#XsMG*2낷rE2ݜwhZ 4nҝcG)#-KB?wTTԛdط:tyy *VE+h]Մ"sbZFMzYxJ_GkӺX*VI 7^UG&9;lo/ e % 2!L@LU\"jOSdy0%}g oY*RTY0E Wm3[wQj`]'|dn,Zn{eu61p;(PSIE_[8ZCuۇ䋍&fQrC.[s;yM;GCIJ{q$ilaY6rN3Bmu%y{eWj8}Kl27pk+P!fW< gN=> 0j0?wI/Z @K}psh_U U7UGVOŪ'OPUZb_c?ƒU?<엩ۿ_Kɋ_W>+ӊ_)OO~UeaO?_~~?W_~#/_+~?:g?_+ߙm%?Oߓ==׮%X|@_W׿I%KcO%oK{+EH{\> ~8?-/m}RE~ =Ch{i|ݥhI Oc(Yk[Wen9_)Q"UoI°RH+b b9T}e,ÏI4uIqAX@2WZgwQ}tO3eox=X{ &[|i Ӡl`õy9'7'iUTom+nVcipC u}@u" 9a lr.ρZx_8vPvޤ_w3ZH rD;:5K)S^=> P[vTga:[1#| DW)})(.Ʀ.4(ζ2un&C89uumEx<>Yy2x}˩4ou1碚:f#LvPFa1^*4c;ɿcٹKv0;Pku6bvBIuLw/5rNci+$>Nw3?H5_=S1gTZ%pd^KU]wzh7> HT[ K+Г\RWM׋yebg>N8Ԅ'UB Ȋd>>E; Y<| Qn a{q/Ljp{U_^I*ygLv@WsNn:ݾt}20p \; BH 2*5|Kvz Bb.p̒A95ZZUbCfdhGM]uYgzc"ʻ 3C|Se4 U|7 ]:]mYtgE` {]>|to8Sjm }]h`;m&qMU{Y_Si- Qb<]5D`C~y(+Hޔ=T683 lKEwL0+4&ٛSwEsx|u18)U${ k.EF–d5sxۙީĢk'N?^]-*7UPn~$.]O!:â.q|mb"UdG@p1&-Qd'KaJtl/PѠTU.G;KBAfln +^EodYHm]C$W N9 s1iU@G 3OQlf*:hVo p̏.5/헥7(U äɧ=*6tUk 1L OAWF(?q@ho|Ζ%Krt>i>MՓq8?]drGJ5)kW)ize]ߎ25_=^SG|(<~@0lV a;24-}ɭI6fu(]lap~;Tw󠬉Ox5ߙ6@X8sBa\#8pM= Xaum`^}DAuAWN>uMywdAr֥"I=wca$p=*AHԆTNre-8a?n2[HU+ǖB2EV_pTuNP?M~HYF i2MQRQĸ:WҞ`c{٨@VKY vE&l&Əm:wWOE|mkV=Tx0UpVAdhI0r4`_RbsNm9$ @x ,f00`cme.'{)Iɂce;liCR [ p~oEMƑ<M#?A684}ܐƀxZ%fB vq)G]NGs`kma{ng/B2)w!WK2⼃XXDMݤ^[)@|n̕sC)\f/;gZ5#5n%xѦy^5|7;CuI_[,k*?7BY=~J!$>aQ ݝezP,}IlE NhpyQ~ګ4M[k%WH2jGMᒩl8Oߗl lX C;ϳ(kwⶴ㬟UmoIc@AEz=R( N!YHffiȣ:1~\*? ^FcP @:y7jNi1/P=7G?VUb֧AnzjicR$mi6-( SPQ~kȣjϠ|_6$x4qF>«m灶&`>HL_Й&DV%V=I z<#@ghk;DnwPͻWfYRVסxt|E+JcVo

}_CĜ#YR/#`;}yl8U? [b?C`ﰨ#h.ҫh}T}6%q Ai׭US{5ׂV SNZmi˵l? GU}:QA3Tya[L w.Z#[O\uo9Zy[U#P#\j>-6:PN&~ޏ;z,!P2޷t<b#02Zq(Nc{ul{ V^Ţׂ|NQ@V bK 䔑6JJj'U5Dss 0Iq[c=!G^j)$.uA|UTS"UN: 6'UY(#Z;\='#- CDLtVh#Crj%lb?zUjy bCfx"ZfI}lc4U}뵆E 74uT?u<!IIUN8Iv\&YGgk!jkpGQ,ܙ Y 4W2uS8pI:cG_s]0ˣ&q눕)'Iuc+knsa-3n+iA"j"ƪj%89Xx~4_̩_pU]&n܊̃=0݂VEQe(j 6!Ȋv X@WW4r[OԆe5BC)ydzTޫ 2sG+KnK9u) HiyWF~r*ki [TW;jD]G ;(4v al)>E$oٿW 9Z͓}/|{'xz yijp $]BrMIB )L6Ǫg쩳-V} o \L0*t2`giYLUZYki²Mg25Lr>B=R_] 8~ThSW3C$ZЏpvX%z>*|UϻBf%e@GHb%!^J)YзfpNv-5gs^/YaJRn~(G'zsD[OɍoRPVɓ_տcٞG 'wBCKL*6 Uag;)!{JmSc9n“t٦99Ӟ8*jio͏POT73Ժ0"G9nʌe)"Sa YT@]o*c/p+׭:sD5?]RCˋ]8QMcS° Hk=m3y ֬sk Ƕ ^aREcCJUKLKw,oM peNx7`'MT^ńnZ#PFCv%_g<|VC="̶| yNGfi *j$fK黾@֜!Ր=ykK9-6:(8%}Pa5 PY.WI&C{;R4!ԩ#Kc:RU95pbK!3ux׽ds4Y6?Nu9Ue䇅Ǣ&,/}@#-s'6٩'?TJ0KSC:^ g3ϑ/yOeJ)NjӑnͫOmbݷ }s#ylዡ 4IuSg4 gKZʧ=Y2ٚW^vA(D10&[/:jۂT:;WX џ#HkAlSk%qƝ9RH!HED'ނ|$ؘ=G`V c8hFp x |Q_^L#-74ul7o*yv!IBͳJἶWs3t5Gu[h-->* 17BEXjYS&V] $ISd~tv"Mooûdo] ԁb-dXo,@c{f3v{ȓSTл-ytZ4c=çv4# J6i5A+xxQ&fxIy:l 4mzy֢?G&<odkA1DO>$|ŲkV-jNf/ *Jzy5w!-_h;)z c{!A:mt^K&I𥖨Dp7!VG%:LL&`۵w<6wsM;X @0kY2{d@Td޳Kou[Jfݟ}MBSS;]E*)ԫQ|k*\0BF lEj8b3g3d/AoE@;\N&6|flS_ ] B'%YtV m1Ra$B;j,C#vXPpbK:%|wjGyмLDG;P@]qa:Vv0iՕ]D錁]"zo' aOoPUx2}XPPxC6Kx+rKj٬Gy:qVojTos4H38% ۜ5M4Ua&ږ(ыK_b[< :K_伯 veJD ^v4TMyY ChUcu81z2~HGޔ`ujdɏ!{=Bt7@jY~'~&^wJA2WBΑtRyqSy0v/Mʖڴn6?gW[&2rXҶlK&Yfe \mM'6RN9d*c} B"/󽋝b-hݿP xz%Al T7+kᥳ=^Bcݸ&7 /g?=(Ȝdny*Nv-ͪ}& F)׸5UPɶ8h%Iέ)|:\m=扐2 `v ~Kyðp10_G'WXy%/ FlO!Mн@8W#|^/:B&-iXqsGV%kԆ ϢېV'_lWS#@ܫo:_*L`Xev!h}eKS9a|ag{`2O֛>BQC7f =fx.7*]y$(EMU9|Su!c @HVҾ9vlm1SSf_㌕-vBHo" p;ykZ\VOAV[<SD.6k.QF-ޟť7uz|Υf#HNjUݭsF l ѕUz@;BWI va|ܖ'aHlV~^.^*a.Wm|=[MZ<A Bؐ Rt%Æ4[}wҷ䵟uUMMejБ=PPԣV:.Nm@Ebh>-Hlc&G؁m=Eo5U6ڸOB$h:-%) rU/rPsVɾW1hƩ:nIdbEɮy{x0en䔎X۷ʼHG{j,?@Aޅ1k0 r>"I:ۥ5~ڼc=b#M$~4v9Z\-Yu^ư-.f]em?$0.m Hp[}||-9N5[fcX{R.rپa`u7IiVHA9@wUzٮ*(91ַS٤Zj*'q fb"8u/m-ݰlةECiا zByJ29 !@¼y'/j,9qI$uSVoתaP}6x8Rhk踄@٭Ziq,^q_:Y:t6PleOY'ؑV߿#i]2k^C;cK0G }c˶H^wxًlAhP\GBI1>wf۠EPPIYi0A[n/ٵR6pJq?1.NZQؚ6z:N@J'liB~OWi5'*Z*"o[23 q #;XAr|׿hԶ%x̷13in~[8=/,1TPj}țP * j;i*5bGNJ Wu-#\%[8$hm3HtQޭ?'ZM~72x[.}6Y!n$eDU|B7 XpWIZV<|Gxsjέ=8vv+$fi'uUB2/f@tI+`{(=@%EZ;P %&h'5}8]ANW:|ǭpJ7 =Y& V\@܅ћ>ݧ Zٶ\qp/ z/( !T6[5G]y c@ ݅NcRS벊1WH !: Z^뒻yߑj5|=^crQ3cQ .a/ ["u_N[7\u\l2;\2B}޾Ug^e"ά'zYCuOfiN&qzԞx' vqPr-otΌG5d{Xt>xfӰ88_ Ns23FgBW/i7Fӻ&Eǔ0rt6t`eH>i ᳋t_N79[x&PE8~/C S5<ѿI㻇_nuؒձmOV= j#v Mዮ[ѻVE}$vzYW<K0ۻX.$YqDLa:/Ԩ@`V^I$Fbu@ P\+do iu˲ r(eUBUنh~ʿ%9flΤ}p$Vnx+N`(7kEN^8|8Zg%*RbA\$kw; Po^$$ӵ9yUPT~y,eϡ.,'$ #٧\C@(l-r a斷}N X+H1|?P_P?Rߥ~O_'?? N 6=`;c~+Eu?g/7o?_ڵH_އ>? 磲ҩɡ7\[9#ڧv9S:<tejY P?ü؏Mќf BBbo>8\T]1<K`G˼i 2)65ݫ8ƭ3ʸUG^ӋNX~af~u+cCM^wJl$ĝ7*g\Fۯbwݱ&4- Vȭ k1lE?[_ax@ ݐ_mwzz*7*d[ z |AwMXU i.5,:WQQCROycXBO+3]Ј p&[[+d͓gܤkM<:\\}8!ٻJhyGo'mRrGIW&ȩ&TZ >v3>4(v(L4ƴg:r,v4իzins VS\HFIN ğkoej}d;>r|Q (Nm*!_4sQٙE$0㜲<}9G)vouIWy|u$Y}5B5)XwJ9p>'oCZx=Az;_TS<K߽VwqRjTϣ\˹P<(?琻:Fķ)$֑`_zdpߜdQL!\Օv °SWJVVG;JU6P-Amۭ,[:PB'ulu"#=/rsEɽN]qny{CqJ  " '|dgဴQu{UaYW}['TV)A〫bSnq?u%.0ˁΔ;jKiЧϻIWClzR$z?i2oز}X q:l3Npvbn #FbTѩtkm=v##Fa67[:ʜ@яh%lw>L=jqL^1֕bPxh$9TsȍoqFʔBt-`HdRNCˣ=wI/y'dK?FgޣȺ9Bkmz}(S83"zIɦY+t{ͣ:ڽR1(:!% NKRlq*flo:[4 TJq?llM}Q/;O lsPKM'.IKmo Gu u7 o/:y ުj$d&YU<.h o;?z eLDOmo v l(Fܻ9Zt{uO;:x J6؊گU"!]I{M1%%|rQ({i7NP,qrXdj^\ l>ockVTgiyC)ճIv9殜έvudkj \iq䅩3Q7ˋJef'J:O G[o| KnK(m^Vtڄ4rb+ķqIN Ґ7)J|NQ<"cnQ U䯫Omwq@I43jяNO O9TNPO`LXكb6C?[]Puz8ToEmG?i=_x赙o(lmL'VYfrkl8]~\~AdaiX);Ɏ.Ctߋ;/@2|r1t6\]YH?Y6WK Xu_(=7ⲙ.ڪu.gE!| HW? ?A9&Եoi ķ~4 %+rGm:4 *zClZF限vuWptg59p 8PҫZ}m+֧L `,?|Dl3ف:pTEdxXi)ʱUwr Er7>O4o=dLKYQG3̪;ڴW]vITu "SqZ=o5-F5l]6/H](G5SETMa=D@2|۞jdb/dֶpDy:RE' ϴ5]<8$DR^"(JuPtXP~a*M6PB5mWK/d~>ȶУzRS%V|)e.TG>B3C `n; pnILj?nPb%u ;VN2 'J/%l@3iώ@aa-[\o>+jU(װ>'_5ŨǙkrқOɳN@!jg7l=3`>qҾvN#-}ߚٙE e%fX0&jN񞨺74&4C&[G?x=CrP- [2dcxP`وzg[Wlzݷ p"TsXe}{i3.wAS:͑gΝU@˹"Ż/0Vz' LCPgLS|G̻j沬5))g~ےM4E}w@l"K˓CKn[b9!tᧂ)*rIl V!pTj[%"\/zEc Rg1k``2ޫQ'gT?x9*6/[/3Ni az &; BQ[ Aq5NR-IE- &祒3?o)s2&-"ZU^ |VPɣ{7{6" YcޔT3A&v-ue SVT$ȍDB*l_,suuUvjƭC9ϳ*-APJ?/ q *}e+TvSchfl˿]_ov'QKh S2>[;ۿ_mܳ~o}g]btÿ's]?bR[jXOp#?ص:`{V tnd-?4;Hc@}+S^J~W?A Ӈ ar*'-ڹOhL9d;Fڻ6{9Zf] Y= V"&avcnuI mO RҀ:W bOQi:&¯3VBvҤ{{@/GV*(/sj:O#mV3 IWJ@Y3!}OךǷHQlzNÏ0:4NH7-Ve c!;jrռK,Zdx{ 6:g߰|[ڃ}#+fjpK|TTRv|c~2\Ʉ^N)6QG[KX|f}7lQJ/e}V8;&ѱFCMw8&Ԫ^?dϜ0PvNX2 *aj=t R6^P%,f[xQqj]K`ZG@My1H3ԭARe]jpq5%j.h# 1d_TT`#\!c $|Ok-Y¼ [=p$A!O~uF}RS]rdgz^"z׾e6hld]G괺CG_^%:V^_iM]W od, ͪkAW/`C=L-Y U f7-)8 {gN])ޑ$EV ^I`w GΨbzVN0e'Sr!GX mM̈́ZOu^r[vEenb{xϛp֢H@U\,orܰ4N=v|TOq♍pֽ Ji C )W34b[ugkdK_;:BgCu~7C}&o|&yuTPZ}g]7o0y+2S(j4}qϕI{\w8W!}k,R "i ',Wo~o朴KVv#TQ1ih-%҃+REǩu \!'p`Gt>+qZv{vebZ[>"~ㇰ*:KfΤ3FR”unxAԙ39XhҔ]}f=jFеzD. M{9sAub宇(ڎ7 W]+$#.5{~PQ '0ܸ Q#t'ݮXxTP9=EiՒ$#O*x5c'um*)8iX]>Ӗ#魨(QUU.jjkhS|k$jaYF&¡sУ [k~>MN_厭.o Jv>it(Xu wLFvQ`;ASsUB(H4R&OϮvCG /Jj T(';Ta-EDj0 ڌxp"G*_[&Րx7~Y1mO?/7K"?{+߯5}Uft G{U5ppb^őySO;("MSc\bi!t\yEomBm &Ww$Zǒ'־}لN6z#5(<5Җ88P#H*r+m4YW%eԢV^kWmBX%=<8EMF[*Q}քШ,\AG_O&p}3Q\X2PȣFkNc2Sy$,T2\ D&O٣Y% 3תrQXQG,u[x F@ Cs4ȋc ru~S^x? g{Thh@:Sc"ڂ-?5u%4k%Ɍ{Qזddujue#J ;> 64BGa"R.96.JUmB*$TGXFKUK}>H|LVOq7t'~)s|GQKEq~5adduz9Rr;IC\A9|ǯ`h^_ ­^N`LVs%n+9^zI{CdmbmCVbi$vmښ@-+*^lja)G Gxs%zྯTU a z,7gMEΏEsjQWmtV; h~-ܯ"G6'hQ\x3R_6w:I쿤"!$͗p̥%iܮ""֣D^Q5Tȗ?NW1rXknȔ]Й/4itWb1Sq  v#qOp5p@P NfhK~Vtq.M:~sR zKCpUUg}K!$qf%;5>ڥYPpL蜋x]n dm**MEag>l7meAMz#f.^bf[,|GnQGsꆍphK-;&jTۙE Le ۟3}Umf;t{eEE/ٚKjX_"O:/2;uΓ^hK}Fmy!K"UWxQdFË'%5O>)vB1T^X R*+rڳZ6֝Ø7x+ǖZ8JzE֠@÷xq9@'B cntFoثpг%ȥVÒ; ^]ދtqasΌY*@~sL+/5ٻCѥ SE+)a^zߜ$^^ G)!Htf{u,a؉6/6;(ZbuvVcatLym1V38cR(C lI<:`UG E"ڏ)|A3rA VWq yp{.ŖzÜsr(YT)c2Xe /wEͱV@V *Wm0Cbr K$e޸MF;'u>.49œJ`MY9׎IGXϑeds,xIZ}Zfե-H}QR8CA%-n1ݦx)4KeR<*zxj`Z^Itwhw~,ѡ*0њ*y2nVnn t^f:f!IªD6Κ( bM!t#H-㵕6uh1:V&a#RILt%<֬]'N1]z^K߉2}&;\ .uul'ѓC׳@^8{64|]cھ&ZN !Io m0Ni 8O[iX="҂7u 9h:am_Z#[{lz_g?6qٺ)έ_3=-07Nm˩IzUFNSϪl2+@*ݲ VͰbɏP-Sis$!"# ljyMA3rY _ߎfuV)<ή;nRT|KOxIM|L֪yZd(eAc#E'sHW^DzQaҵM`_sբq؏w!B![?e n͠7MaO|ϱ${kk/vz?UI/I 5ǜYA}*O8׋AQ>5_#0e;.Eϵb.wWB=ai69vHD-|f yU"<[ k}NJHiF^gFYŧ deQ6kͮ[OU@4z\,g{o=Qp1[m%HUJ6%C&#WRηD,"V=sZ8E6@7&k8hMx(2>z7N ZՆ<ȷD N)Ta|uUoircE[jXecȗ"xi}ɫz9 ͫG2ˡyy[JPVdaKh9"U9+k Zs YP8@ӱBN.\ ) DJh{;˱L]p[!ބg9ԚQ-'6DCXR,Y#nXBai-ݩb%B4; PߋNXbՖF F:yXWz*_ [f\ `V ~L${øT52kxG+y܅92섕L+[zVEvmKMik 4y$:؉[l<m[1ʯx% NEn۟}v{r 9A\n=(sGkA+- !j4rFa4r^Ça 9*^z4yiQKWJz?Ba>IoJ٫3uVJn4|.JpdwMaY^ sC$ 6`VqjzWx̏RѨHWa~]]ڱ_Nȿw+rxbtzIQpCusE ̡glTKE:{,Һ6xCHz~_Ji1FB$X[ /ۓ> ;UXmZe#R`O"o䜬X Т}5d2*g3̦ncCH-]AҴ6go+I%YGa`TICMz#ҁy6l5`@24dq.S < %M;ɲ7#Oiz=>|,C $~ΧNvӆ ay lM|v\Ϲ 2SdMG%b7MwW$tth1⯰5((ArsٺNqD\L]lB.x~&m|^$eNMGPBrs| óPl]z GWV(kM#u^;@493'7qvkׂ%"c7|ѠC z'HO9kWA^׌ǹ7jQ#v1wrWe> AImW_?bIP\<+5gx>+G꩹BFJijgYꂽ)\e<1I╇a3OWƧ[O?e R4MQ%U;=4c8Vv,pkcfL/n[/,`JL Ӥ=m& P-8>: q&Jo 1Qx9Qt\FRk_@2>R9d-8c٥kbboSi2l?Z1o{t" u%NS\%uW so=rQI$V_Ȥ/a[cYjI īx*iJԧji%?ٵNthH5Ra) D Z6Ѣp [=jg> Ww:?UTэMB ) loIZUVVp"soL[d P\Qq4'*1ܤ%>c.6%N,0 ?HĥZ^#m|2N F<Ȧa%5XǍԛZ-@` \(kߧ?$Fڲe7^pzw)Ia>z*e]ClL׾ЅzLVd$tKu"x&|d‹kc 4ž)~yQ0U; _o85*ե.,`YRCש߰n2țk"Em.K鼺4rB 4Aiٸ-SPƌ4_' 4{#*4P]Al$pd`ĹXEfL|ңӜWWU;9OkuDfUVoOS=%oKث}7!s|L#vCIP"&ڷl3fPh|4{t)(,n~(u&tA컬Q?"0m/@%v6'Wn`[VTǮ]zm] ɖer( g5}Lo"9_m Eh̏lklcV rvIGFM_' > ]QCx[ӍkIp8H Y#Scҿ~JO)ORB yҿ#U)O?iT~?o4?B%_IU/~C%еhTߟ?$xOȧ;'%3 mOHot I`}Ϛ@rTe{2-"m/?vLaG/gc '~7oQ;S{RA<&lhkz ]rN/Sުޥr*>ۺ۸D%zƄyJPЁjݜpf-q*<BsϥuTWxDx=q3C@@^r -up%cŤ&"op^ Pn;h揹yyJm?|AH84i4@-ﭧfC[д*ūh=[]86 K"֠ki hmxOY$Ზ>?6F ~Yo>P } *[u/0w:(Ǯ&WuE{jYi:uUCV+?GU]'Ym5e7`|l +)\y_XtUnvqCr\ )vh:J$`W#2:"?3j J෷e(,_j}f `˭WjBp ܎浼a{fO pn떿_=uv[7īqյ gk 6sM;=LU 5^lx&~LtX.SH#\Π岼xGyw+(2;r<Qwm USEMrAIď#U^/1ɗ˃%p{I0qmj|\ +s*]Ku@ 3/ $nd%ʒbnUl[94x:3zwk{ZJ ,,-G4YljtιW?m`9f,|1Źtm쿗ya+ZMC+6iWtu&KRb ߍ8x~͋WmQݯ]"UvȪ=am}"BdwfJ뒦,eظJNk"z%t}v(Cd_yDeÝS:ުw;5gΙª}s%cΏN<ۈvGjdo}H0mCsق*(t?5ݟ ȹodj|17z^MkQx3JQA~y?~Bf8V߫l3z9W)Bzosai~+9"| /Ɂ!AV{zDUAn[ܫ3+uK6!j *-mֶlVN*+2_.L)'vԎн:=J4REKȊ$|N CUB<oǡEN^+;fK `liʘ#jhBwwˣ՘?6M~솪)fGC[e-_5J&@7%8ܔSͩ;ORRK۱OW< r ((i]\g*ݛ]05D>A0Tj)jy?&ЪГSf&zg& K޺$Wc_{HSUNF;+ % jZsSѾ"ϟPP>Rv^S8QEWe„ϯ k[ðacpl%k:NJޣ?DTϫ/K;~ 9i&8}KnHnoU~_B4՛zlfI Ao`8= 0rhbIq>%igo ԂNL\ͭL9[-:e#(^3Jk @y'x.!s=qڷ<77mI$ [->aVy>G^U !/r8S]),9L12΁Z9iy#mDݚ 6UtX^,0>**qO/!Q6 }؁)iȩKc$d &WLd3蝍PjӶGP0k߅-k').Կk__]1^Z租埮_s_.r~jo}“__yj_S&ߞtݥ03Hwn]^W|w]{ѹ/GB*9חꙻ4jf=]kfUX+>d}Ny}c=J.{wTnlsA!%)֐ՊkUy~Ӗ*ҝ[՜V-k|,|\e+{x+Pgpƽ,[RS:򼤢xLy~J>A6݋7Ttf:#;K~>i_o?Q"淞 ρ[ɣ]lYW[Ύ=5024V(xJXzaμ^=߶+Y5 }KjYoSYze|6ӭ'C!Jc7uGZh!tu4\ ;E#7v?nhړ^#*Ggf1]N)4myJ9|.>NduӲuf{g&& *1͊C"I/j?&0,H[QcbDn/x?ٳ8N^>i ОIQuzӐ Y*~ EcIG&d}&⥶*i?)tr*LS& 99g<?xs*f2A䄔GK鎛.ˋ^S:!USы}!w*Nd5?xS8'@^kL@l.ic HUӍsz7{ÑҡĥMqnJc7Hdr;pVف];㮝^$L b 7, O:JNr_5$NI6&My#IU\ x@Dıx:sؗs1=Ȑ $V056) g #UGmBɊæ<{יzY.?^g_C z~S뙡}D4H <ʡeP@rVh:i峉Ӽ(^vGv ^,2fTl) U3 ~ޛe~nkjjMw!)|}T;5 Ez|!󍏾Ss9 `WbxfPs}1%quʨ d8bvPF09CLu> -96"e(^uN;y/,Ri:#5 }EJ7ﺏ϶fVG.*oCe ,oG&]|5J3vBL̊~@k/+"坪s o]JBDU! Ⲝ)ޗc~OVT@=:(:Ama r@pMH;<|vEu2!8݊G7 '|m^` Q9e?l{TkڦWO0 hHgð-VE'}U!'9#exv0ٗ;VKa3a?g.x 79Q(@^کvtSJ+}4RUZ^ nxuG?obQI0娘}*TTj @RVJ$Qa Uκ giױKo<ٗUx&fym=R,%Y\0J$zc\jo<~)E8T:fцP+H}:|=&*h[`|;ա+k+Noy *feu̶t}P7Nwk3nPZC7?J4Nv\Nƹz Ey8,m^\)*Q,_?YZc=䊓yB{q$b8{ܩT3xv9 ˖pV. T_OVZkV#GĐ}tTЂ~XKR&_Q}:b^G[*ZyG ʨG~)Y17elvg),Kzm ŪC`U(|ďJ O.ܫ* WѬ"*η$8r +#^pi?08ۓ3Qma} E ,>)jWyEHCY\ !E[EU:#kض2ݙrt_HNh񅣕 ͖`H=;qd u_>m|0^hSQ^6raSMpҏQ9x=0 pD%n-_TIxB^g0<6Y\z-/|4N@;Q5 ǫj(V%VYnɽ AJ25r~7@'͒P%^B^C5, .x7^>S=ϴqwdA(YG$ښAπj4*ۥzRFA`6׫xݲ(dQpCL?KUG'`:pWQ返`Kn-.U]mu/mTVS:*P 8 zTօP&_[RఛQШBAM {nMh@xZqq CAdh[k1F>]:r>]r[]m%wT[Q@7pmѣۡ9|S>DBZ=رJn we~&q+}˒o?;ں,_p@J] dU^]\=',lV)u:StŖP̞*Hہi=t~t<-'|'3;:UP1g)(37kuZR9ۑ Ǽ/j; Dyj3Jѽzk2!,GYCClw\ д/F- Ċn3ol8b^Tc eRf՝kWۚQѐ#Fp͍ք ko.H4(#rTsV-XSNNf)) &+`ngJ'?_qLPYeSD$H^ek)j}H'I@+W'uf|N۱`Z( H?xCTk06L*Ht^7*Ӗ#e_'Ίww-֫sCo ՆDuQi3Բe]6,BHr;"ݳfɤ`=\7G[F[O%i l~ś{ԧNMDsG`^[YVVϋH71#[L8~xϤZQ(G$qObαzkaݗ|^CJ @>De3Tp}?g '|pQuMl ZLu=Ii/8GT-YT}a+ҥ: @+:5=c:""8o56ٖJW[1/u\6ty,b@WۍD nf;S..U) Y@.b7`^2kr^zΚ{umӕ}*X5mJe8ȃәcnA0v4/f*;G\ H`b<Ik&%/·(wGNG~MzmX>f%&Rc.NE` zjE!'uh%Qtŝ!nǎQ^b,e"YpN54}}b2Q|mʳШ&lglX'OmUˈuGb`(ILT2-k1[ VZ#Cl 9ԯnl^q=TY#?QF֒ YJ+ Ρ6۹Il8Wrf1] {n񶜫 ͇+(Mik91+ zr,,ۯ}5'}v>/Da%W_Yd]c' fs P5͡'[Ia59EY68>xSW8UIr4 JѬnY6K9PkI阙T_ ctkKPTT/OAM7S" dZ>ݙBBV^`)k.6ȫu{PI %*:ݍ2eұ3s3}_-קԱV'_L;dEl5Nps7rɠC&k ?B(+2_f"v0.t hti2-?Ʋ p-zO%XdkRgڂo#42ڲ_]b[K0u S42fw!q'n겫qB>Zz"xkgu͛o;-J# :/ 2ޜ[&[R{0~u< #jH`Ez oyU"A_kw_6rqeyQz4#]r£'DzRw֗z5{7̺3iqb.>FA.گ@zȿ=.ȓ,` u;o&y7RuuGdжyU,}ҠLM 6UֽaC軨jvjRhˡ}Wq]{x:/r_{Pm^6XxC=YIR`_ei<΋趇i%[kIS ZT܈v-$ kpƉ>^Zo^;kI~F9+p 0זj(iFp'“4@ˤ禍 ų&OyI=)M` n"GZVs|!5awtAcjM^+=I>~? vctv29:cQ~g{byHXF 3,skrǑ,$Jy]dub FN*\l7@8oCشvmZRxxM gw<5`"Z[Ͽ4zUI`ɱA"M/H3 #>Rv 5qC+ /Xj g\.nh+vevR>3H5TO_*M+\On zfPޠmN+^N\qbAC(hVpeUsHĺJX@j|2u>2ZK_7JQ-ӬhʲUdvM|N=;Jk&]@*ǥX@lG NcnR%ea?wԟXXīWܻyόqu9#x'0ɫ__ty{*ƿc]ٻq۾R{W`ws۹\fwrwJ:,$8]n>PwVRwp<%HF)XmpeEoJz{|(9,o]kZfqw'~^wTу*5#{NsߑnT?ɟdR}*xP lt V> {;;QU聯Qw7N*{}|Ahu0_AcZ,yDcC|MQl ;y;cI۬1FHh}vQs K?hxWqԨIIqt^Ib YaO_uܽ۩`۪oտwgXhg}{kZ1#Fv _˧‹j"ò9gDm fea6:$_VIH8w٧7v''|Ok;wb˼EpvWd@{GnLT.WU Nޏb<!dٝW+sPE-kOӡ7lWɆNǼcF*jtBכUrD*wGꏆ8[!v7׷+G~DjSfSq?]-z6%Osgr6_96NKxjQu?# ɯ[+֔5}׳W[ؼ|n~ץ[=zPRs~\e- !Xޯ F;Y)uNV9!^F:~b@3NF[< Ad_H4Mg}@dK΄ ezBӇYzNmnI-+RCЂI>oր]W]jUtarR֮0@ƫ#u[hodkV'ESwwGz\F czxtw e\ Rn UA-M/|G{VЈ ^ ]Y>e5kƾ-[]OG՝/գ xso%s,z^];mF\DmR'&l)L1ۉW<qd_]0wP~S5d'{c mC£\c|Tv{$ j-0Kk ?8DX;ڭY\9!@xZs惘~ \fW$ت?_7x NZΪ\lW%jGk89;ah8Sͭ"Je7!`I6٢еJ/p4%ێq~v"xGD0.Ҋ]en fB֯]ios8|>`*&-WJD3ylBX`z؍eB[}elLr|q*dr9IPp(@va\w -łZwr໖;^wRq{/JJ!hj^mkW'hr GkHKWgs^5ep7zӞ/մí4oYr|-̚vqk<ނ=8F^gpyüFpSHKS t-zOs_!BZ**ΰ#ݡfg;3l`yʎC< /Tl%TC4'$gW.όqNdD\M9(L ʫf~jMάݽS#0 T; ò ܐ)>U] qNGUL}g1 Q8oO agLݏ{5 &N:Asf&8ITn ݰ~YV wi+Wdf?5an5rBފ) */43ͦH tځys46[Iı'yoJ Ag far_L!7ZՈ ]a c#V͠rq@hBb*Q‚s:ǴKۄI|" RI/85 sY8WZ $ᩰ8| ٷYpggfԱN`h-'e~ސG_őr~H -$Pj QYZB - )y8 62Oჩ,%'i1:SЙ(օPd ]Di2~6.B5d~}Z Q'VH^Nyn-@hDD$ʈ$*/x8yi_nlRXu$*+ݝ"9)Ĭr35Er*"۹>^F;NvJ2ၦn gZq gнDm| b}lsu\H}L$~?l U.,P>@Re)k"M7%v^\)3յxG Ծ|H_bJ'8dbg1/ONuuہvg%x݂5fyX8 X&̤w,®9߹ˋAUfvȐLOsH~vC&peTYtUj5B#ݠ_rLQOݿRpVTbTzl׫jEXm@gCcB_dur@ש $O&vSu)1e&K]4R}|[m8vIԀEj}7KGQώի6'n蜥󩹍ۻ VDZ PHƉg7ac@[:_)BEtӴanӝt"\,,8xτjJmɐJhut_wSl %oukF>YupaӐy[=Q& 55մûmP_2g#|Me^2vmmZYոS?c+7N4Ϲ=ոZ2*{, nG'83GA'*rh@ibRFOUوI,j0U5(%ܽWspVѭQKw^xKG&o<]$O& Z k+w9K,;6SVJ:~"|ʤ^3#22a4ϻtums|f`2soś xW<ՖJ_J8;8~"5N76Ji[o9\Dxq/c;}K'lg;` q6Ƚ@jS @,QU*F8/BWۡ^Pv)~*QJd܄u ڋ@Oj{4lg+[A%J ġ8kSSF͎ @knjAߢ\Qvd_IlN({6#&m󥈝 2 ?qlϕTt@0q0h|6G;<Ņ`VHbWmPE+4#+(ϻUv+.xb Ln yq*wͣNqd{_'^9(S%N6^ !*.xëGVisUNu[0 XzW o4{ǓA~HĥA8VӏqMPar CaqWm(Q{ ګ3553"^)P>KOOѐ¯YJZ޽q? ;vJqU4G1mGX́g蝲(]ou-mY~˹4\]P`n D`wOYo.V(:sQHˡF~~Qp:k5Zʘ `Gfz.j^t)GKJA@|R:ISԲz`;6A;JvU9<#n> 5OM!:$;Ŋ>yF Nf_^Oc >*- MQorf8+C:w0j_N]L$Mn7Bs7F>B_@B;yCYQc<n` vg{ouJEH|INn%2wCD J$CY42r Y-0 `@0/ȴʩÞpԬ6dV 9(GV`3]P<ޜJտ8NT1ɾ̹2tg`&0Zj":&"މ\RmVCd0$59񿠏'lӗ4TÑή%Հש N@mpT[M1n*(d%i K(x Te (` HpBI;Gワn#TOeZ>GWe狕,2GqǾa6NB ({] l0wv90.oX^eNί™Nz"As#jK*"gUė}-9oH{']=rV+'!\ciރϓMlu bwotOg콪tf]!X IBRߨYbXթl-r$YVONeNaԝ51ZO䔮'\c؁!4Cync},0ǥyh Ҕ>YpN! @\ :8λ`RIJX!y_Mvf`:az4IbJ)ÿ:x3I%93Ru }`~1FxcZVy *R/[@U"7̶Z<Da _PN),+xpenpaN0ݞ#[U8z) p )߷ud$8M2V鯊 8~'uWD{Kn,e4875{W2L.rRZ&lA;z|zE%)j2 jيHUTXcG}"RU}V)r{=InؼcQ{f`cE=%+A-ً h'_OVXGZӽ1]s[W5A$[w/'8=b/+EWӟg ʃ`ovf0ߥ=QJ>GBtO?W2FJNrB+0l8фGrl5SE@ir=P۬ڄN޿!CˋO V͛c֘'m B[ -Ūx&ixaTlsd[7J͎>_tuʩh|8AqfH[sdSl:~u{* U˅qymhFt[D8ãE$᜵ڃC#cĻW'`X,zk]fFp.)RBrd,N̦вvkf91%wt~=H? rBlB[#:(%ڝ>rIxy!IP"cؙ&o*~[5̤hU0^.HA;d&u ?3Frxikuu-XT4RvvA )zAR\%2p[Je^*9W]3U?/C2zM:&(z ?`~*}l~@MB*yt`mF4rLm#ۘlCGZ)2Ac-z T}k6)ĎŇķ+!sI+o)fHjjOSDiPL9Yj⫽w@ \ 9`r2IT'ir`'MK'ґ-@ڔL^)ב,ƺDzK86-MnedyYZrr~Dͤ癄]RR#J&:<=hV=xOj"ΠtV9$5'SKlE3,ڡJOC\%ֶUѓd.]G[FNDkHLH+F'4艖dgϚ2HJ IGG\=d/6ecۥn:"J}Ő6km\j Wt3mx+J@:IK=La u)ie_6вEEOaLE(=NޕKGki: a SХHZZl@U!E9oeJgP]maPE!ZYr)=ex5tJd%suJŐ-܇T2i xqrWHfC HK 3s0zVqϹ23$?e;rAiTX5:by,[/w2SOҜ4֑hr\8%-$`eBeKbس4az35,ҁz6 A[% ywHIiX#635-4nqI*BkEv|Jj՞Ѕ o-̀'$LᕣJ%%kMFԴ"KR!E4~8,4/zbmOirbI/=C01Щ\lN@ǶFZF:-8+8^ H-ˈl-=C4֨yhD,yG΢~cR)vyMd5l@"k 3)) <}#9e(RK< K/BkIՄ9$s #:gӞJ$=gbxB$i DJr;RoHR1螈@ѩ,{霢 XEsɓ45]2!.ڟ.^$T# Sp"!I.DN I iR[@hHd&CMPя am$&=QA;+5V5mIc)IWPHT-fTmOҁ0QMoAHסCT,H fE-tԮB@ޔqя3^Y"6yC1/?dʒJ*5flZD"%K4GZukiLD_j;5> UL SMd({kVGj]GW(YGtZ`F/)+p-^TtJl5Ή#7F(}N)Lg*$r^J+"B$)``O;+1P'+Q,[斒t,$# }a}h.4'N1MHRPFgIt2D,SR[/R*7m'^)/IGjxKFl9RSL&XZԂ@PV.]gwaKlJy_IGP ~k9b6ҫHq+h@6ۏڕ*Z'ԉeDvUѶb*-)5ݵ7M(e 4fxkYPZk%Zi^Ȕ3)-=% OgS`v*# +3I# -i5$@bs͋\2&dvyK'*WK-DRY^=2tẻֳ)/ ^<-ecH @p1'CЙMiS .2|S<*h',7RimK^2iIp@%涡yeCrDD:Zt@4fʏI*wHPIե"92\bk꧌!iEEC\3"Tqt]`(3~@),‚ CM^nl ӏPkVKt^LdѵKjBA'xC?/z@GzY!B<9A3Q* c %dc5 T^Dl`|h)a_tʞrz4dԕ9'o KPJ`H͇85  k&rI~SRZ.wMJ)]$鷥kCs Q楄.ml'mcb}ɥLNOWijp'Z xhx RB֘R,܄\yJX*;;mvP7HO㡙^87` &$4 ^̘>MepI^a=T3]X]^ii@-I=n"]6#-YDf}=d^Q`Γbtz祎^ Ӓ,]9( Ba efVz:#4n Dd" !T' a~h%;ZIUh~![I$Jx"j5] R)-%x[X=6#Յ2apL6xi6RlȦB G(Qs##l]x2G!f<^! AHWu"5L44C}SX>_5"L#9^% G},Retˬ2k ^=,#!\aVRǂ ?9<_ұX|"*OZ4|$7=zuJW8Ӗ,ŝR5 Z.dgLR2Wd.%PgȟHI.+nMHA{&QNX=e X@B%BbigOD:[85))J]Hij,n90IbniJߢrDPu4V+s.T袑 n[z(<3# i4:D6z'RPOF)6I8X U[7J"+dc#8`m7ӭgn|HVze%#sA*+94*򦤯rKV RW'󨯤I!Q[42:ٱܲ~D6]xHNU[a͠Õ)x6I)&S(dv7G ַD1]eKڍYjf'3]FDŽUU8tX<>zbjQ&P@_p9VEFϔejV%c@fԛ80scҤ~68f:k6 b)y6D-,x!zDKbI ..ZKI8yP=z5CFB+"N#McNv#~,]Џ`U $SȐqv,bÒIKje@P`iؤ8A(JȂV.:#<@4-=`.dYnүQydhdˊ#R9ЉʒPeYZq8\AJT@ HHv!0 ݐ8?rHiɁ;K kw鿛xG' 85.{hppղfQ"T7~3鑎$IpJI\MK٤t4 pJY3NifB6mub \n} }5V="] յTLZ!ƕ*1 @DU*-;1]RtB5mJTԩ!EB2}`R=GwƎ8'%hC9i&іHh0 ma).y2 &1|1P})Q+Ӻv;nĩCMf? [Lϣ (S**x4Zg`E!2)>]̈́ *U9]JxR&2aZ~"gT\un@m\w)`nt[i K9% !$]7O)7/iwIIzdtn:aAG$*bjjMy 㬈 A4u#TOB>5QL\!%QӥuDaY%R0:Z~]C& I) EwR,xIteHV?P'#z] @d ,WĈm)y(M0aW#u&\Վdx4f0en:D<${J~b3WkFy!PƧlz}o\d/ uكYIL'O֩F!ecL[`Wiԥ..at-cF=VYy'a`H >&>2c/$>픈)LNfMƯM#QIT/DLxe5VoL$\H.u.TpKIK>%C@LI% ~ i@$;ڃzV`@=0v@dIq%F@:;Gb3 VԚT T(-kL6!`14߉H֪%F\R]l(w*/RF XoFcd~̧H9izSzkh) 94.$ YCow,PɈ{anZڇHyJŋFM߼78g4x4c,Tds!XTB (=q{6jjIӚ䪥[Ɔc %I^@Ӑ ĴCUmIB*N[P"B9 $\*>!MmKڳ% |I:J~Kp݈lH ׻sěi‹׮NjNjn=zMOAkT{c >1MWĖz)_'pf4S$rpd$ _jo'= mpD8N9(rz)J'@|d6k[$ +  !7|&DTQɻl+w*" R7S[uEZNeY2ERk ]HiL@0M#5yL5R1@eL PwI9` {Uڅ T-TCbeX cph &fv-d|`p޲r-Jr?ש&R)< `&yIg` Fhi Z)9^dMtn雓頣N.`bRjlGvDv V{Ay%ZD~4aP#z%hJhm"fjyuGoǙYCr2:̭`(S,ϭ%eR"E,.T Ybj9:r^IP5H&4iqTɠ&- 8b1L.=3w=Q_(AcJTh]dt FBCȬLmZ@s2$a`EJ5 ɑOJ:e22ZZm`m(@8ٮC:Ig2,'OLi,*X|W ,[%r-ݭe^ 49">k@vGv:SJcPx3{22D2s)NFr%1n`\KAď&GΒJwSEU~Z9ފۛR?Ɍ9ZM6)hH=~7)ML|¬m.XSNvt  \YrK @HD"H%,SKHy%J<-ZKd[v 8B.@K08dӑl?~$}\/,MTA eN9`kgeRHN&q2 ^!0kiv3MH#Ϡ,y@RE# FJLv7)N)VπzEf5iH}"thN8#3mUJU)w!߬[T iedu&U O^ѿ Vhzlf"3>g 9JILJPtE+zץxWxSdPHė$0` )ſ3!N2^i%ȥ1hEoCOcM -mJ'ZRIJ*Y҃C(AKɝLdbVjQ''xP`i%M8sU'.j}ɇE* e[X`kH%Ȋ'S#IPI E&M1Ijdt%-*\&[itلX)AI1ECḦOSH!&+wĿ]I'uΡ+C.diJ[ˠ+70%gA$cUƇh$7*,ZI$Z-H,IJe7@6$iɐ,Ej4HFC+b踀:f-QJ^&+U7N "*kKR6pJ 2ߥ>p R_%:r'z5ȥPEk)2yPB(rբ3!$NXY#@!iu# LM;ECkI(C+O,v`D9J5:!6t'bWSaH$TWf#+8cx0M;BQe0d ˔"U/ \̅Ȕ&ID&RpD;S<~f@ugY?8pu"Jvp'G#/rEAL3Xbv״ʋ%TL!eM*8h8&Q)!iqrݝȽλ,HDp*b󚮄\ߣRJO-Cr`QBĠQqIL7$, :mI#Y(~:/#c=ѐ x~I9,0 I삦)o:"U4HttZ$/ShHtͮAW1!o0QDiI^BSYǩk""R#P?Nw&!: Q+ rbPSSD:?M,* Pʎz^Rԓ:{ ]sIZzOb6Qٚi("d= (z!lP֌ڀRƷ"3oH)6dkQD4|PkktVQgA*ބ[TmIAފ`6T> `uTFQF⑔Q7 "Gf: j\Ƥ%\F 9,VFxa:Y4%i%"cA.rL_]#EdrX6dU%J &PFm6hr` ӾCZKhux)?R!1_KAC؃'"67drE*sN͒)MFUq,_Q Iϕp[G>z S<{ɵSAFܠ<=9LhD!h&c:9JGݡ+>mZ(HL\TNf):D TCۑ让xi:T+P5'o &AwK1mI)Mb5ՅП3c?*S%mEVa =h.\dS#^8VjEJh jĈEIHM5,VlIgޘ դۢ-4],րu4Q`E]uJMIVbp Th;2KTzMjM 1e"H ojrJq$Z` 삾&eI$HglI4J$b}jUUmʠVNb,9:úaNҦ`wUTBp뾑܂-=%$7|[O"u:eb-r St,Iw*լFVdNoIڴ~ݍ8"*k4FFk-I\+,ф&& J[*:4LHGIPv IU茁`.&H F) 6%kעSbI0URceHhj L :4lh ]7*~"3KL+JC-]~L!lʴHšQ$ !2uRa"9UӴjN$`H2ꅎ<Y'PizBIVa )^]HhQL2iʗXwMOf"0-q:N?*"ޝʖ$$- BS VH-Je|7ޒ S@&k,л群Y{#K n?JH%hԒBW>pa($6ΐ7>GEZcG!qSCDbj&ϰ]{PL D:4} i[g75I۩{|z'?}s?ҁ~?9|rw{Oj|'"/: _?NWND]ZܗY7~xyzxwt 8=}[NO/x$Y6=L~Θ~{??j!qNo?iN~zۤ+|ooӋp݇q8=_^owx|Oqp;Ȋ4/ӯ?NOnnO}?ݏC@~wԾ]wç.]Yxq6хן.^0;1]}JR=ʕx?N?5ҟ_?<閝?vcnO|k_仟w'^s|_4xiG.;J+CȤ%'"BM܃vq7_7$4m~HW MI)[9Zhe`#$v/Z8T'&AewE5U(  #)Lf5$u25A! eyaA@VC29&eY_3ޜZ77t.u4i!CNRב3ɮ\<ːXnnlRυ+F4hOA/o)HuHR0bm j:U(eguC%&$TD̒YѡRqpzk E? YҜlCA/򾰍Et]"MC ڋtGd4^gG\epmFIgpf#uµ) -U^OJbknڜT,1x)r^O/8$]8'Sx؋AֺET8&'IN㹂;-^#Պ ƽDB#6j2/QZSc16čĤ}AzmWVR4Vx!"a* (V4Ztn^IiGxX}>c,뗟6 ˼Re)rLf/G4b[Ja<3pf!?ܯs)k^~=7=uWZ~Y>ղ~ci~S[?i|jOz_>^.O߆+jcv?75֛G|po7޻7B|{6z#5{|075l>j׏Nbם]]? s)@[ 쁹)NCx1(aCn"XL)c$R⚆ܢbR)J'$d4W]EC)CQ׍8n$Թ1zce~tF&^=J+LojuCRijfzI5N&%M˸ Nޜ}ZGO [j(%M-3@gHcnJ*Rh܆LA:-m{@e;m@O-q,K))% l8[yL% IVD,TLq9t8+ɪ*ˑ]dH,9im8rᴾ<^<:8p+90+WrKF4rh H9)hZcgmN.dN}8l|gՁ3F tewj 'S4cҳ<%*JFCHTY PQB SW  .͚1Z;Rnd^;D맓e$ &Z_J_bmelL zkڞn9 Pd' Zᰩ&Yf%]>ŭ370[0P7Orr€kKw@eD䂖 r/чTֆ;s2:r%k@:<kgP@@aEV%((&M]̉KjDۓtO0dCd7ST9ǮcVI摾ڭ@X#1$k`C 5 ٣@!ZA1:L)i,n,xIuhU# PӧE'٠M@K2FeUkQ(\J[.{$P! zO%=6!#oגWmK&FNw_}h-/j:k)pu4j m$~E5mw5/G`E+hHBZJH) /%@t(Bɧ^w.E1\uuzUKP4"5T L5õ6[Wsvc'_ Cʹjɦ$v$2}[QlYXL(i(tie%I>چqha3%]Sg#XN¡}{XKt)7"H` %r:Si5aSIEoFen#mJȞ*I=8a{AYa%l9NR0")ɱo$r~-dAB$4Z:S#tXb7.ZKÓ4(HJ "KD &?~%L%"P ԑIJS%%e2=J'UH[ f$:r`!FX-vlʊnMKά.)$ GQmi"'4`LO]dtɂ%Oe.Eb$/6m=9MB 0$|99uL^(vZ7K@"8*K`gLp8EQ 12hT D<(dK$`ޙκ Ҁ(m8[YunJ4Ɓ$p(`2|NPOzN9;/-B GDRe2e:˴ xɔ C"STP$AV4YWrzv4.Cъ֜lҵ@y"unVAᝥPѨ$Q*vM(]%$\"=An8 @vѴzxBp2BE Q>IYi%jEъH4l { 4 [ <_ǎhl/7McJGÔDtBCiP2s)M 9D?dngSf )JM{#TSH= Tfiܦ4haQ闀x}J֤U8艒9}cߍ^$\Յ)An'#8\ibXw"|Q }:SN1p2i @쨏2e@e IBAI*]HG*in: #(TL^,\ԫWsT4A}C?bjpSв[DIf<`MnAqsR|<2$!z_Gu9wtzopF ƌ/#\(RlmjIVljiH•s-BkgktA&.J`1D'u&5$(dmlkǪLZ2$&2,PN J0HxȶJR0EZ%HFQ &Q:YK -~&`зSa@^%jcKW,Zbè[bn-'D ^s?O,N`8;{R*)d)x}7Hݜir]#]8 2HJ*Bݚy̒準8sN (WLDlUA#G% DڶI!N\n(ƦCiF"R ;I4ȥ SotZEaQZv {uĤ42ikC ZN4T>xɅsGTMfzV/U$eR~f6.Va+@;Ob館VtˌQNA,VlxVHT% `7=9/o܇ԡHKّ%؀Ș*`]Mr(r8Ћ3I) Z 2A␸^\/@*@ЃUI$[J\'i;Ot3M@,N VtNSY Z @U4F5¤ TT)-`d83܌~.ˍ]ђ-b`2yjto[P?P2Nq ),JrS)=hҪĞĈb^")ZV2ׄg)/(\4 ,FA^Lȕ&%TeVXHtYL̷}DTf%U0ߢZ/ je_4:lN[k-z}:_E6ԀCmJ=XMZZU-}EEc%IZpLHLRHXdr2 (K4vTыA{ e,-nfT (.T ڲtpRR>PRINP8K|('mLEoCS@ZT N,L-,LcV)p:]u@mh-#+l&tbcDr0nK>h){o G1лKjL cb4 ?`\hej-ne=1EJ]:t4&O05u2IqX 4mozhfa)iv_!dKJ)ih 4EFXM: $(DIŎS4J-rIܢl+zwιF #ƟIE &T&Ԣ3  N'UoJbCN̈́#n` ]K_*'f` t6 @L˞VJ[Rh'_Uɂ =سAe-i*.!f@,)7¦ qɠ~lIqAF9T('i&N2qr8u6bZ&P8I(%Y#HiG{H0'Ż4u%s"éS%#OW2ZX:X҂HhRip?g:Ѣ6U2WFdW쀉[$%PLY9jH'$T1i1^xHS"tǸ?h*|S7*A ⤨N`%BOuWN^*"piN{I/p8E=V;C[RF)JoSܚ`1O/t$Xgӑ'b'sIG2͊|dX)PJQGZٍۂL()AR&_S b jM7D7| ഥUAi=9TKDԫ%)'֧%V8ѥV@[VDO5ce: ܲ)Ր}%ZK9,{*QNj }gzL3k£.w%D0:c=mмe{uDd3&αfg_}AN%ha%t$ĀsPHI`P:6_ј2V)(-]>I$-/Ti$ 4:7ZS3Awl$O T *]IWLCeI-U7Fհ驚@,0WXwf pYZZ5eJc^`K:%>g&dI?9fUX(O ubs҈S(@%'e$%d $_:!X$)!Ѹ%0/ZĹ4<זFD];G ]-%[C[4v`iJ[בֽ5:@5}|^;+Τd bk+=\yơtx9Z) 3.f%|TER8:l*@ܕi, bJ&jCӈBFB\&u>,ҀOisMj-[z({F\PlE4eBR'LI QXCP>D~jx7jTH3J$ `R;?5O\n;.ۮ5eYc;%ˢ[]|K*^Ҽ[֖uMl[?| 귙Q~-~a7IVj9~Q~oJW' DZT#]U]uoZȆ;5s˨q(Jڍ~-pm%Cq5v~N޶Y"Zљ)y1dYm][ZmO6]twц~ȡy+DGmmR,h86/kukI;!mqDMc c־djUBNT@9ZO9֣Ø'5|ȖunlFcvC鏨KC:mkX:Zƨ / V4@w5V b )v[9,fw>?wü0D3Prfs`m nZE+f ߖƽ2>W|!`o0ۚmE|g sa7iwT)eZ * qIg -oj:kxiB[׻䬾 %Y^K |\vR@8^e5C-0Qk ΊvQJc.1!-$N6DK^mΞƈsagbp98aCxɩ.8b<|gVH0Gd3WoQQ31L5ēUw:چXF]̱fqʉJS;]y3ZP4,]o1p`zF}ؾM}!4J\Yt$u}x6VIe|HLT[oJ~A;bw{: Ai[.FroFm;,HaɹDlvwؿ@aHLXx&sIY8s&)Xh,vG*[Z{_9q:{|}8Dh裏{z~?npB?u~ye ?@+w?I+M՟긟򫫻W?.Ofǫyýn{œitu~5<쿺=Lcwo~8@}:]]*r__LUYIJ\};4!MM%^ys==̚1J/~8NtŌ4Ewwly>O'?7WZn0uw=(F֔ADu/rݯ0ZۣR!Y3%2i|*Nt!6iOϷ~8ȧus4̯c:~ hk[{Wq_YCerQxpx|o;=x@Njȧ6J 'z7?zG=& ͮF{=4ӃӟOY¸ڛӵHSE1yj026(h“? ~N ϧ+ 5t_u[⤓zÀt0ؑ>p[2Y|h!fzǝ:goߓ6Diz5+!ڝ Q`>d;# ;)= pOӓ_2ӑY뗿{qbM,f-l̈nlN~<྘'>izsuc_ǻ/2W60^v7ŅXz¶${~xFm<>Z~{ fʈ'ؙnԲ3ѓ_qQ7uZ??w#żd*3hO[/$M,-[!-p ?A1-I,G_nJT=m*ǧHv"v _ؒI2Qɿge~PS`el޺ x^fK[|E"?+Y;;'-~b4'?LA1žx4UƤ'?qe^s@QL7O6`" -i^Ù~󛯍ګ?PW=C̋dr:NQc S岬#o>~&i O1ߘ2Zq6א5}pܧD| *akr4 *".Țڝk݌$@̬̆I;wwʜt"sY]n]mlZrYxO= nMHOJNSܼ |?#;QO~~c'/Z"Űcѫ;z%¯χ{>`jS/dlとLelG!M4J~{im.#OJ~ݣf轳0cwG?(WkVi@xxyn1P+ZΆ' ι:Vl~ na%εJ\yVu|އ]xgA&gfL'wWJnEmP?1ꍔ>YzJShuBh6>v(5%z_8ڿjMj{a?ZZQ``1} EAF-K4c8/4ҸidʌLQL+M(/R>xYqD%9E5GCCl"øo?D2o03$A.;2}7p{{>g=+`p; wޏTXsHd,fp;ef|6C8adaYdY;̂Ab GLl M S[ތu{ð^iD=4tf|/?~qDRIMC1F )J4Zq_4QƦA}z+6f\u(>UȪx6(1tԑb%_pTf^7;N0v% =˖,U$[hcoFgt 7*>x5eYM&lo:IIg+o\_f='WYFk,Kzm?? ,|1I^MED1-$P潪\ߘ er Uf/&Υ<1Uee OH2S)/3ELJpT<s\U޺j劶w!+ktNa\A‰-I%YO#WKZV,k[Gٔ63dܵʄW,VɨHlzyꊳ F+݌6q+0F8za|xHs4hk`M<#̎Ie]۶'t[}[j*'~\\o| e:szo՝g#(!H}HCBX^]Yb Ʀ&0ĥe߬!nXjL-r)8/yؙwz9?|=6A~p&9;/HM-3DR,Z-C!ueyX'BDH.\ܼIG^-fG<0 G~p6/ z QH6Åwla0~!o8Ӗ5Ԫ鯉0֛Q,LW3rzA8)wUm0Uq,ӏ31&saQ1ziVS<]/v¿c0;]xG4A% ߘbǓct.:2d['9l]1Zf۰ ۚd|=x}Wx&JiP7uRu;A|1y)jct"eOؼE\$.-hF76>HvSfqGiw>hy.lN&CL$c^w[" עZ!obbH#mSxQXӦ)& nΘCLB22W6'bh_!+ Ho?ce,"bo'7G.ݑhX_Iz<˼ӛWeQȨgvOCxa:D*G]7Nek2bHYx~0ϝ^=r\4KևUx: AL(gN"~!ͭ.{iv>`{鳫$ {KFM<-w(f8\,ޛgsawg^,{/LFqxTDJ621J[ieؒ&hh5o⦈@A5cV/`pȚk0& Dq^f o$ c/ VjrP6xa ,m)9#^&gw wn*d‡nrvp?<sLK..Ƌ9asNaB+>h"Ŝ&h-A;.ݘg}I?\{b!b͹o 7I 7^Z32ShqN-6hiGɫdu!zE(~zҿH7_8IO}Kr3r泡a4-П`Qy aݧ*]71o˫2"_ %-̻s\FJdFw"fͪfs_fUBŚ+CZݧ9)z@ -~لN*+"ꖗ/iwh^*K·۱iIge4rP>yJb7ni_>o SƬc 8v /!4j~l<ܼ$ Gcoʂ#!Gu8]$8'Hm}l?GϢ۳Du_#YEhK46sK.w~ͧY7dKr $ !Xp^Yۀ+;㘄 eww\:n㬧Y_K ko.pIOaڭ[n^w8Olvb8OvV'Mw G\bwHľ?lgv>1k.']dey*v+miǃȼ+1gcݜibmgm1* $N.!" ? YO6%sfC,%0|$ޱb#K\SGJRNSA4 q%οϛg1yxP7N2{e-Ҥ_cHV}(yfݒ:âG[ҽGf̈6j&Rj^۽wphI?,!wi)ՒXl{Vbxyy:oHU󪊙!'iDwfexҒulÄa-2:URlEe/ўcӃ*alr,aWNV;D1Y"Y3ݬ;¿_n*]Pw , C*B*ƺT/RՃ. E[~QH/".W]<|½%MKaq30&BEdDcȍ:z叭ƕ/7Tے5w~1H ~}5rP&I'6b&LPf֌#JmQ[v|0``l#t;Ƀ_̩VGϏC%=J'Je /Xқ=G[Ĉ1A~jwp5%MjRsnSnխ>_Fdih)@Kk9Im-w_VJBWԞ4I}b{ꀎ"AQϿڒۜ#GVyF_%6%=? dqiXeMXFg Gde\Ӌ|ExVG!,^(͜XvsE4 }:@>132.bKgOrW\< n1r%·uyZ;1ZQv6ΔTkr ~8 >inKDg>O*iteE9{>|£+"ɪH6s_XfC-eT LR 2E]##1/~ߘM}h'z kx pLdx}csMBAxu8Mсb't 7m0C{߻Fncm; #"I;o!,2M! g*K,ina/\fP?*#bn0O7\`M`_ݼy-sJO| c,W c%RuxXF"$*!M;qE:4}?\RZ*-@[ُ2n JdX|ueY1R5TήaVE^Fͷ2 ,w#KWxT/9a3hi%qRB:U~1'(I7>&*wlecfeDE)#[pP6cUF?¹ddVjr1K`q@&nV_aI MzoIvE/2`n׳`'XiGThx{Po0ִu9(3L;w4:#əHZX/({]1:mRc)_^9.ϫ*n}.M4z!ʛCo<7:sS2x NL -YR5|,7 ֗2"ϥ,R}f%ni<|/2^uzms6 S&ƣ_<={ pҚPampLݸ?E}9iun|x*ʪ~~5õy^ 0H#ݥ)8uOɝꅰ?cӿM^gY 7M~-WKm.")vE.Ԩ")ܭm۠=³w|:dؚ3ta UoaV ko&3#0ӼYu)k|(&.u?7 i#xQ6Ma-A优 >?^cNVk9>pymY~l,U~{}(6lvx}FIM8,"3&zRrpؗ%v/BVM&i]%nUS˗XF隘jxڔ|%V3 _,43ϛf;Lyeܾ٧`.؊mX/%<ƒF+YQ/V]:#rvSlM ٣:+je w)=iFj4ĒejދrϭЮ˞5ugq#>ULk#;,>v=?!8W)Fxe&b(hjw%4!hݯt8TQ\ 9PX'z KZQOem`)GP7AIe 饅s/fsj//CDz_,`dclF?Op2rQؽ,GP3qq_=%. u_+`LE P9i+.”g Q%!<u!]&psszIП]@3DzC@ZϺH Wc:Bw@mDݣA\t[} 셢rtfݺTqU u</(I׫PvғQ"nIX= '8sG@%^ &z,M\%NnP~k]Yضs='sDfc6 o[? t?r#kłnዂ+73-Z/V\ݡSn(xS'W[x>>|xL@&guƏ`C?+0|ѣH>b)@Ǔz\4#bdEϥr9J+GQȽJG?2nL-ǀ.bsj{*Bs}Qfm=.)}i~.3P?>y5wZeI6+vԕը67/+[B)7зySI\p$nTfǰ݋)ʶHl[&>WIVu+F<<$ioxnK""oϗogLYW ߝ.|~ְP|*)&ɒQ0E6Jo0)Զ, ,ZȊeTΟ=V,+Vtmkf+~/YVv42;,/}^G/iWYZR׏iʖlYyIs<n$o ^ؔ2 OD Ξ%YÊHI[wr9tw2T+*c'MHy{gbAxڧ5Y/.kd9•| Y߾k-)nNjpI+;-|!Rvz0a,n%zWjK jl|eB6/X%­8l豬4?^_ՕO{~lEUlAUĜ;?JobYs[\tgetkfA i\c779ei`W5Λ[wS/iHJά9<5=ߜ/QB:M,"qN\+tsE;+]Lp1| u/1̛gz'Yz4C4&CVY^%(XE,E7{\|!ĵ^w㽉OR8vJҝ )X_f?ADM08 ZzZm>: ﯴ+ 4+fcM|ipkRʵR2UMkk6 x0pwfc Szn`o쪥\*|q*Ih /:ZMGQd1njen{|u{Uӂ )ϸoʠ_ _urr22—Q'~",v'>b-1#uSQ mx~ CX8My sC?xɻo~S<<D`K`蘬_q5G8ZtO_,E雫 Xwȇe( jӴ 7iaGrN.S 7)4T:,3u:"J85OOcу)c&uX}\_y 2ʑzHtƪ1⢛38jM-d;', Ȃ(we"" "d^ ʿ3657[2m;Ӱ?']㼌;ri%ėvZVv{kw"cs>YScڥAཌE\p\ Mw?1TΩ9 J?-ʇmh@u}!XFw@t~4eFb߀lʇ0"iMg&iK|ȡ" _ze7K^Z+2nu0Zh@oA;I ;-x\19\_d\PZEJo| m \ֻ_#$ 9K9fXhaCaBN>.賂SfBse_`}R0ه5+ٿtݘwiҰmd'tG `㴔VGҶ˜Ɩw%kWPV[?$&F UM:v2O6&9x·0~b2_zf~蛐r}>,8~py&ѹ g2gF߉*ɲn;,P5 f5юWOn}[sB>p/ITvۼlb_ *6g ~vyug&\ .OEYҘi\gzk6Z 7/`]{|#Ѭ}ڼ^.5dm'Ubcud[@|O.`Ygl-@Բ%ue*z^Rb?~ }\hiƑ=3mVzZ̸g oA,.G3,~تj[BSެ 1'<;*bB?^my+&kdY|- 9Fwy q˳}sND7 cE go)qYtC}ށq^X6P ɋYfVŪFıK]IQ {0,M9bN3#:rxZa,]G,DJLy WuPYLEJ0ZxKr^=u|./6>M$ JyQ|n'Kƛ2gkfc3"ϓ ~z~%!d4^o7Ú?^5bM%WFau7X`c%#>i0B__(z os P3p}Wlzaʻn&st,+f1^oqʟp&>?7g{mۿ slZ5L%R["67ٳpJ/'$DZ.WȜ꠹ʲJM 'YWF[Kj&P (k*P1ccyF^D4~(6ߏu.wk=wxx~ ߴ;|[{x`j ^͓CB&co`X[z@,{zD 5w'k.ĵO*.Xeauh-zXݴVY=I^-Bp[1zg}6Lj~7C1+5\RV xE/q sb65&x o x>Qc+bt@`sĴY*B?;J M&$ y ͸F~\LpSr:d17#Ѕ18y+erឰ")vISJpuϕuY"20b#*@Oͻ j(-^,`;>C*5[jJS=󋧾f{-1gfUv!tc由߱je[>X&yЮ"^F+>@1,M ĥx&<ÛaElK3`\ur+(S( ɨiΞBvFB|I6ݐOυ_Z/ȨO\k@8<5ojJUݜ0K_iwQ~(0Cs5+(Al8rU3YJƋ$2q5d\}hM~5bi%ZAOu?->z [|(hl ,v ȳ> 2:Z!m7^=x5t^o–-y)7:Q"kOh&~AlYQg|8YJ&)G}~yUI+-`pq3oK}=U ʶ3={ e,D_N/,E9a癷KrRYfƙ,?[2~Ƀޑ^jt!7Ĥbgf&[$<1{+K]Z4M\s%\?mk%%*32lYM:s~if \nY 3dyuf`>; 'ewJѝKCh&LBx.Jk%J!Gd8Yi:WҶ|˶9e9Dzkɚ?C.+X*Ϣ2M Zlõ!Ћcdw= YG.4a%<;{X[!oFf4.bwR8wdf0.e>`18gIYixI%1TlE6spUvΖmFvOl6shK2>;xT^~K^O]4Re\Хe3msj=- ?, f>o:=R"~q'>~ LS 96=u kzDA9%y"t\&?S<QجL`(1N^:ua4rá|=kfnҭ#֞fi# 67mX̵~Xr 8PБ1m2^mq(aI~0qNm>-&`\UnU9d0/B@}wv ު`(|,9 P['{p8GK,r\v˳ ~Hj0:/OS;//? 7̙f$kj3;2K3b"xLOӚ#A!&$+8-~JB'I&k`kNjx6X+W=ߊ:PDx풡TF&'nƺLKHmʍoc*D6 `5Lɫ3k[n;j [,[q 5R*εb?wh2Ųݛe2`}Ia3̗yi[gNaCl6-\>VzВ*$O7oK-ڀ|mxm^ҁ8kxMu{mmjixMuz=n_k"Y/?dzeq1-t3ۧ8q$+ g}Gc&tQn߽~%_P^bkQO-&qa_,B52 3O -v^Y]1{ihMVu<xsb.e.꡿ 9%[EMzx_ :eQ|k?yb2<_ dxvre\@퓕{%hW_V5Ȉ%^owukkD3L _aتur@ T!..fڭeYqsG.hQt#[%#OZRpilp^A1Kxh-2=O ,-.96I2yl3rwyl22yeIϮ]ͼ(u^mx edO<3lb:.6ilo.WZƆ?KR/I.Kz˶<8m_DK髶Չ7M|Gp%IT_^lq1[KGYZ~|B,·l2LǒmnSo44v^g1mHiLlL;M?ިC7U0%]Y&8m'o\zUDPTάZL֒.]WwmdtəlP[ ﳤP.2amR)[Vk}\pyZKv-Lc8V&]ҳ`ϳC@ߏ]?U_wiƒwp]{Š7nmr;wds >kXn^I t]ͽ՝d=L;(X<V'نy?s%UKmepf7naUч]SfkTSA6DmC4Jd#m+Ȝx?(M{o`ѫ'0ol5O<!4<=XƏVԚw7>  -¥uA5HW|^OE Gmdzkc3;`z_x\O7nƉʟpkaņd|=rqc۶ $cw ed|>m­_KXy,uPќTI+ )p >%TR=}\:gC͎m#2ӵ.)4-fK&wm!iJf/Er7IFKKY.n7^2Ǝfe<\.sqi|^ ؠ,!>^k\->Dr8 e#t"wJ5Oe]A'k Nꝏ|W"}#Sd,fke(;w)d{=h"e[r%Ӵ^._Tr^Mg9Z&-_ N`4 >nnKmѻI욻O9lz\06j^ R'A,Tz)?vXҋ + Dl <5/y1h% ^ֈ{)&j^hgtoyTN3d!ݷY1|7ht}ՠaЪ&'&Y٣M[OA1 vDMr{ssG) {UISj+ꔈiͱ(^L\oF ϡ)?@Ŝ!).Ԛdm< x D묓&yeiEe(R{Lm_yXXzW!ƩC ={eq̡u}[pOV 4ҡ:uTm\Osё^9'^TG "^\Vh54&ivE`6c61Ἂ=P5d݅>̯Ĭ ܢ)ܦ94pRؗ3!bX4 >٥?,oJ5g;n?/H׾-Jy^ ːxHBg])X:%p ʲMY9ĵS"n_䶕U&#7M,ǿh *,T$&&yГKϳp;GP?W|ئS|lr1\dF˒.i[ҡ0^Ya]9^sVҶLڤV!$,hQl-0y23'N 'ۣ+QgQu ^[d7ٖJ6Tְ 9ٚ ӒduÂݾv*W=0X QTDbu& SpEXŵ,dp&O3aJĤ6_ڤjzdBr30زDܰ7򘄑@|D XI[]bb+mݟx8R|lߑc%i% $LCl aP=g';8.K2M_%?\ۦYNOCӤX9oOi||<.f ZOflW*&.;xi{k,,^n+q1v}qѠ2kY6U8 <ktk ?Y/]?@;FEUlIDʤ8]VMD훆Eo'E 3]AnVg$[GM) SF.;Ypۉ !@pH BٹŴC$va_/ kMU)lm0x얆%[sfy<مQ$fOoΥ4. e+eoa+mbtV|EOwd͹e%a?ŇetôMUB>Q>]H]4Y/ $5'դ/meҼl0%V=BVCA4WAv]]`l NK.\9KC)~z`Zh+N<>, 6;-YݭJ6&/?jd8W}fb;\3Szէރ7~buBnp{מDs mxe56?ln+·M5?t,v+w*J}O|Al:*nGcVȧk^ 1Y!5ԋ*ԲDKj\M_]n9;TSzGk=oi].7'}ɾtWX= &Zf}C]x<׊Φ`9/P#@^@qmgY6f x:㕅&r!Q$uaNYkqLlL`(7^,g fo&?٪zpޢXUl9920X2ET.6{spSh<wo=c?>YmjH.e4bYDD1l h}-[ʺBQ"LL8K`<#mYQwQ)b9]Mi=Khi{o4Bn۴$d7}V;?]H̋nyW!z͏$,-װ('Nhλ- xdfM&Q=89w{6,m- AQ}uA'' [@ʧc!z3 kcԦ|-!:jttI3yG<@3GhbU˶%6Cڕ5vi:=4g~VNZKϴ/w>\_VaY_=612s2 6=ĕ xN"qmi&X9ZovM/_IO~<>P!v[?=OddʵTP=!< ./K '-CyY|yep+]`wSD+X~87`2xj)hZ[Ag"i wyb|B|Ea͟WT_;QHzyOFZ+t)MzM> 葩ٽǽ7в#!eey|.`(rlتkW]ܻ:%P[Ar^ ' &Ho״ۮ[[.73U}!,>Ocp$e-Y}Y̛"Ra?{|g?j xM5|`j~M$th1iOƴ83!򽱾}§Jt\YhGԳ瀤r`0ŵ7_1 `9y%ɒ<[|"KI[Z#$"`!|i*~xlןA{v쇤ihezZS8̷X(EkBnrU%24ׯS6LMqXyh_4m&{\&M|rY[p鴕?Dqn\1>Z~H][&`̖m(jupy?du]-?ٔEe^Q\7n~--s {$m.&2#l.뚲w?Ca %S~I 8n\伵6iwEΛ9kG` [L+rLVY(tJ)3 SGsp#NR kFա󒘿IXцab1*|Wn36;&z< ,85R ZND*_RUƳ1L`jp}v 0?gsYcT7wgoe =CYG߸em0,aюLN͗)3BP䳠"Thgf &Gmla v#ܟW֠!k|0@8e'F? uئ[pJvݮn EbVYf5{!o 5ibY)HO>Cf:N7'y3Uy}&cs+OѷZ[5D8y5`hzp2y\JA7/ܪDwțxH=FNU^zu$@;-%V}}ڏ`+V #=h "Vh 3M?2PG *R%lv\bJ/6QWD^3|r>"3nCJ3ڼX'^翶ZHݺᔖFEqo@ޔs񃍿 ˢte[˘n9#_zJF)9@\Y|yN~x2Y^Ϯ+xS4vڅm5:+3iK, `ȗ_l"_W9MpM끯L]\?dtZs0[(rb0)\5PǤ>Z-' = 7AU,ˣ-Ļh0_nB>an6ھ9.MYnaiqtzG~+} rj됽!|}Qf@&x2ܐE8} Xʹ, M[<͌ #Tt_Y֝zLh2炛{ls=1$ۑ-,}هMv% 6ۧi 8oA A_w>K)_bI/RJh{|NMmSzM}{K2]{,S^!M.@  z@>{b uΩ3F V3h]1/TENuT*hx싥xC'C'138'<dDKO9İIP9;i^'] t8x~~=w;hGV%qz3YNml=Iy;@RrqbE4=B[`lQzƭLJ`<`eSmxh6h6,٢ti2$%C+߸Yw,ܘysGgKmfUכ! x4j\IЖqoiw(sBƿEڒ}&lj2Lt8:_g_ZHHtX%5" LkwvTqvCx63>ŔǫDxn8(?|,JLtO:{${7uB~-?i^%5*cAJ;j7+>k/:1CzX QZcY2+fufUQ`H¨Ytշ?+ ( B)7JK_!d12Bhxѻ{[Zov_?~NW{׿ѿ紕1 pd՛Y_~Ƶ}_u^v`?1/do\as_!`:m<[R͢ܛT4:QGX7K#e5 eaq6/4S}J'o_}Yd|dNmQ^{OR>5g#r;ۮ`zGwzD1w1Sy'vdVW~~0).!LJ7c͞G s@D7lʽLtM|ޞEb G&-ez?m&ml Ѭ];S]m5߉mMs@4O >ME.p/yM8}%2{͏>| 7qSLm2̭_ڐfQF$dzwD$$Y9(tot;X90` Bԫehڿ(f"$osΓGL%5CZ {XsP"O)I6laW=;O2=r4#wmȾA2M wݏ_Nz 7  SBO]?^\isJ4F۩pT},=ܨ@+Xj%%>Oonz>}߳Chf-ߧ3[;eAY/zze |V:> ڶ>`ɊLt~܇[kA}#{:vZwfRxָ sEYYxDѸ(4Q? чsg0\,HBڋq{b|x2`Ѽ\5y_IﮪcߣP\OuZoBPSI`Yگ !kߦVFu#WgDw褾(M,[Egˏ:L>_$y{h|0ɋ4$! Xөa%M3xޯ{_1t_tNݵן2cp_oWϋlO#4R//ssf_Ko8N^ݼa}QMū-yazWc6+ٔDB6>#a-s;=&<˶}\yxx{gͿ:I6core++-1.7/doc/tutorial.pdf0100644000175000001440000132555410145437164015120 0ustar joachimusers%PDF-1.2 %쏢 5 0 obj <> stream x[Ks.n% w#YX.1rLB@6>>=W.hfy|٣[1ʭglˏǛV97y-;u:^m_l~bTx 7ZelB79Q3 SVI"ʓE; o㝷R[!N7 m@9Ҍ8EKFc{!O&qiF:@v)8xA1 1006=#ֳB]u zUZW÷.{*I.:X&JH?Z+nzN/"E6K=$wUl^">i^,,A bP8 ~Ibk)%!B|Ḙ̈e7Jj{]p"1l2ddQ4ŖѪȍեvx*Jvv2H='Qw Wy!jrY/yWO \U-fŻX}!F-czVQt7 xS>A!9;1 FyOaߗw *ʙ2e^FG/ nҚ[hgOpBay5:P#$Q r QYj5ˠF$~ty 8m&eL9n.v ^;aKq SyR Oi.KPWOwԤRYz-rU^J#1B1G>' XJ'&ET? :7{ G*t:WBR-2`ꢪ-/=!\mtD,hbJ h1aVfD^!3~z/]m$*DV7#WS^NT|$)}5E7&?U ށ%ohAf{I YdS0TCS /@S^ 50*֥fjlCTg3pL(֮^fCht3" =&j!4d͕W1p_"O #<(!0(O>;ʋNoc7۰JvK;~g %>C~t伴{ z:SɃNAxڕ4KbLZS;Hf?(K^b vz<̯Y0' W+!7rVY"O'*C KX^lg aV!MJ4D9M{izf'YVWPGDGQQLtI'#RN8<5?8T L~ְSW%ܜŮ?\"{FQ2̨D?L[ `.4p.\)B XqL/}lFoL)0+tV쬚,P_~:""8R_kʺܺެΟ55}-hk隯e*a @@osU^%kU~]\hּf":Y{6)${;O$zIjsR Qe=O;N껍}G}T|:⥷oš+cǏ3+Ed.F9LRm@/qrUq /rD0ىS:#+rEԂb/mj0Xt/ma* yK{ܘ-TQ՘'\nL<]үTDZKp_9 ayށ-9stfBџGTpVQx09+֕N& ETh! W;2f@uЯq -zo^-ԩE [UZ8pxk) _QmgSͻ|U|i*IS3E;m%rN]=E`$g%"iYɱ^P8MVoh[3R-3 YmJưyؤtbu0Y2If;+myr7ϛ4J9}F%smN!z3Ol(F4lP$(OU˝c=9!S~!fKJN0?tɞ^Y%4ͫ-֨۱ɺ7kP/dV|$( @1]w?Ay᫶ZARS2NpupԔRy3ğC *r~TuQ}-ԻQ 7Q!lA:%`7Z!Mrn=7Q+A3t;Ī][ ׃L&`ΌE LMlfSSz! MN ئ%UTU媪J"[=~c\pig1P~}s6@]߭dvdPh"쥧|¢(͆"^oPUGͻn:Ho/WN.{l!vUٺWٺ5߼%[RQ10"PWJ/u |I+y1nsa/]vN6yj.b#gYV4C,>ഽ|/CȋAJP!1eh$6 ND:ԟ?!wG5Kgj)&"|8?*\perq{7ʹ.7r'A4w|&{\s7.$/ Y/b&Bef"g҈cv(wjB:^7jF$bpͱ9m%C)I; ^$f 0WjxIZʯ?)RjERbZv⇉JùNJ rݡ}5Y{qcEmt:bݲb"<l,,KIHY{fzҧ̠vz~x;}}y`rs w_6whZ-ɬ_M;O&67;SʈlIm>*xhgt2mh UX(R[aҧ ,>̟Å-B!ĨwCQb auGdXNMK*:E* !_Ц9k{նV<ݬ;\4 vS}do/ˬ}s7?/yk}ef`KΞ *0*ty9/vmTiJC^(Ƕ5n:'TccX&M#IL_Pegow O>66\*xYMq 1Cb NOtdBs*P2]X@hD^mY0׺%Y`(<7i{7 p"eIyi5Y8P;}M?)f%ޓ#p:]}\og%ps<׆ʃ=B9sO{M,5)1bA cO瘲4 =MLZlzR> stream x][q?b^2p[;7Iȉd3rW"$ŕ*\ @̐Jt7|Uv.b+텈Wv׻ϟ\|'w-R{EzL\ ~gY=y}^.zQf.+ bڿˋի߿;\ZK=\ʰ'>.J+w>1pRz/h'F57vˮѯ/w?l4FcZEjpi | ]' 0'?YWV5G1`kv0ڿo:6O?`{Z7|$#TCӣj\Pc44Lao=lK#쮉VG)[UJ ?cGTt'ל;!K1BNLjJd=%͖Ŕ]gk/{LE18[&eZ1bP%uwMV<{Ѽ&)3/0AH>R@(Fָ(!9KZJrl4%(> >Ll3Cth6p̱pH7UQ<`L! 6$5FN/@5< KnHcNJyLĹM Sv&QW0b ~i08 IP i.T7ۋ;!2x0T9x4#Oqe'.>7|=.|v,]W! =6FSDJ=U_Wz]DOHxIQK6@{WȗA.,84SڒC:r? >\]ԍz .@U>v2emSa3%`i3кhgZWa`_FF@9s  tJ\'8ήU. "Eo@Ak fXj՘ N?[%6D)FWaW&C-G W_[g@*!@mؔJeFDizFqĺ'xwozp@1F"^I xI>B /m8<' #=[@U#^RPY9*]axsy:(,Q d86A`9V<}U8ʑv<"3P ThCOpm}֊Hw֋g׆rd\Ɓ2A XA4]SM!qΫz4G ?OLj')l w,29i XSCfrU~(1+yBEZsfV8R"29QEA8UQW9Ww2eDʮa޵zyϸ+ IS/nTi Js;Y `l!u>!jjY^k;B4◿b~y1~Jwh"YB rj(a2}91 -Ugſc2sPHoyEӛmr##H](̍ `%ȩo`أmE4fD`UCVWK{Es2)xC:IAq:ĻN!Hy8,q {cρ:|uөX2lҷ3m8A`e'q'B`y+ǮGb=?- sx#*O΅t1[(#sÊ}Nr46Tu۪K9SÊ #s? % foհ_U?a4#=d.@ ٯ 'Ō6M ҝɿJMjPQ["` Ԯrtߨ\uS)]\:bi0C4W7ElhBi(nNv $ z.ܬ2&㨱$~GJnM; ,S!TR2&םTh ~ Md*03!E06P [mי٫CBp4V18KʱnUxPA"\($Q0CÃef`ke硗"*RJyI ޢ .t?/*dW>g1yWI@:' jE[~P?y3)+xYFCZ 氕e BZa4jϰЃn -PX%M.``:'d^Rjn\5GtLG0cf <rv¼ٿ{j p4٩d~e8@=MK.'`[_%?`hm4p7yB[3\P}O dy=#We HALvN~Ӭ6&%)k X1$2V L ,n3==PhaHxk6jഊ5 5B h$oť\80,bUT6I;Xc}weWIhC$dG.˧4Sx|$z%4*x&Ulf3Ĥ/W 1ud'ﰉ_V<[N%% 9J_ .YFR}4]xY<1b0")Ttמye.w魘0XQ@ IS FU^_x@HZ )H˞&,4wPˤЦCN4oδe2Z!?7NGXA2@LRs)P*ZXQHt.6x0)[B [!UeeJq{tZ C鶹u 0 80!;΢Izuº\BYz'=(dPm<["Wȝ 32c__W/`ǝA7@F[ܞtdh LuTcU+//nOSa,b#wyUdmXm|0:3Zacu%%b~`S匏vb}9 .mm DUhXk?qHCNN]O3)`2eET@I̓%+N5q0Mr/G|IٳoC&nXGeIP*Y2R#mu./ƹZX:vT 6_ANg5&{x 91CBP ^TR{RZu: dyb )|Le&>ڄ-0DP!gD\*p =Å -EZUqNi@*N u.pxT8{ '04[=F42n]L 3dTՎ=뜋R5n2>l+NnGݰ `TfX/ø~ lmD̶\d4EyzIx_G<%<3JJc1"2_BsPJ,bB)xU0ծ|q t> !θlW}Z>OlHu(GF:Bu:ꂬg}f;fl7].!%qWvDT4`^(30>pj~SAM܆}?DY|:i=G(7WKh7PòH9t6>׃1(rϧ TW6;Vw>p_,8ꁑ'$X/=Z=!3f9%e9]ol%z-Kd~kLa8>/!t@: *x {%SĖ\,vj|p&z8b{:ɞ0JLatAn:[j8Q]l(!ha0y~s (jn]A3E s7mˡ/Hq9mqc2F~\yz[\ILSW=0hZKNN[%%}AEs텱܈\]f2lOV(%;*"<ĦrŞe>Tf\bzšRGV!uQ#mv (L. Ƒ-=G)>s3;!LxDh2HOpP5=g$7U ,|Lbq[P"|R\cYp9)^%<Ocx =)KUܚq]I)lXV`Sqe8Q:KE@Gas`/Wܙ~s"M YbxV{/R:?^ѷLs*Qч^ֆzrZ̯HC~M$rˋ BnH%b(ڐkoe"ߍ:..[1Yo*ϴv^U_bҴNʺĬ]h5? . psKk]:e!DcZe1:&7jg"''ח2, xK41ZJt ͕9U_xendstream endobj 22 0 obj 7027 endobj 33 0 obj <> stream x]YqV8қ身ЃH2lʢhȒLB$@̺gv`鮮#/)l=%{u3Eߜ=yuó)W&u:i!sbWg_piׇKXk8.>)/9\Ź^Bpbt?.0f/{҆m߲_k8'0~F]4l=x37ţC3KǵE? ^3/of1s񬏆C7e#yD~ZE9|GJa%gbk8[RcmwW{s5g Wcm=5_ӠbȧHw*x[C= L6u nޥ/_u4Fe)-k[u;֤5Wh\jL0N+3DBpq%* ׇWhz"a] hcif/**Do)v%J6 F!ް: aZqG姨po%~89߉/ n;%:X3p ~IQn;^Q`V&f~e]3ZшEZQ!X WM"+7Jg/v'j7̈́vd/]JJ)da'u &Gx5[ڹ1D6|H:%_ˬЃRgA +N+y7}Z9 ww95T굔?70֣᭰D#jXx~9rDը"r paw]Q*Ez oX:41knM,c*%F s~ۇf#ʊ3PSXL87(jl\2V ҝ>ҞwDk=Ř3(#A.vsf'a4#Y|&֦ MNi@+.h\pSTȘJZЂ܏hWz嬋7Kvj_Yqrd#1eRQ7& ېa4nA6$Q$FVC,66_ߡ/cuptxa'ZKvq&ʇ#3M4̗#Qj.JN;d#Cv#,rŠv(jLG'tF\.33u:#'cs 854ZAxT0؊}}#f9@9ܻI :FKG1- -rD7xQ̓XV["WE1ַt􂡬kQفŒ 0Au+^gJx=JGb`9SޞNϷ:<t9?e1^CƁ}B}t(m47&a vK3ح-ecF򔄷U 6usrI,prT_)&iހŏť_|.~P?I| h4]jܗ#[ŻzX09CfFhrnj=PT#QY UXA6ri-qUYS\D(A[dbdN$bqc \ۙ'ߠiV^x1m{9L1Uw{'Dda zAd4LLe1[ 6(V p`2̤rP8 7-W]+; C* Q^YXUQ2֘S>rQ+93^9ck/*6!˼!smN4y'u{K:f V ZMɒ14"geRvy'X{ޑ_6j.izf4߂\!vH`.b}um?!/!nyyн: o3-hD>4D}N9fz=|Xe`L-*-c& % c/ Z‡bR16}svq]G&\=!-\XRuxu*.&;,Ȣh]`f,J@aAIdUf;a!f&+0/ԃ"'LTfc-'\#KA r2aA(@V> Pڜ8;v*خ\H8'؜PFAb!jmc@@଱16`@IO7nl yLyZbz'U" [U{+)yۣ\xN7g42~7$; (M|VɅEx7d]\R_ʾUWzͪ+9Yl+nʗ)zWr!j9$Mh箈(s\D6FSe;P׭֍.M >ϐas1~b S s zZ`1X%WU\L/:YE7r s? [kfM?Ky,+%SܟH٥9Xr`l ,{A; JE}4kuJat@,8]6há f 5:\LT=l*$M^6*9jf0X?SSr6GrKPs]Gy|=7D`o",|t K4ѷz%nbbjXft&eDY,CzK=-er(s*x}!㶕 z/!*W)-i\ (\\X@|?^ >;8kZ ۧwh[B *PpzEsÍuXlP%[S;1 +y ӜFgWYDp"i ۨ1rk@V?U&G Z ܹHM-D(r8ގK_$LF۔ov5?j;c !Ed' %^;kd;ɽաd{K(kpvgMopG?Œ\%Q1X[xETCI^﷋yP.ޖ\X g BҋrR%| gk~jyw@qUd19ԶCzWlpzπ37^{ ?K',;9lj4 fV|9[pމG5zQÏ9,KE~4A{K~";Wxwhimx]CKу`fuv\]5rg YkŠ”J0*mF0G!)oN{J$^n F:, wtʽY'*3ݾjs2.vH 6( ^ق ;GX?1icG]NiN,:l*ݏYXIICE^=Lp@.(;VYsmR fS~_vhmXCVi;DGKߣB5 q{f U]knrt+\<*dJJL鑔_!WqDU)Lx; ƥQ;FQt71 a5" [#,;Iɒ;"lʶl5 y$[R:バWh;[Nq4rgu4sd ׭3eU%: yܮd  L=~aR5T3:uF< 燇YAyc$’ڗangsYw/.CdB\j1k6OZɖjl`Ej)~T n#߃_^>ίt/JU3c[)S;^jG ѧ4j~Lr .?N2Y*2[%N\%yB(- ^c~G`=R)fLm$|ՄOABAuFokalqOlۦ6H|Xj,F1-\]-meBى`':++$\1 v鄊m&Sx8{# mx"FCECj41 ۤgfݦv~؞$#UH Q[uخ.d(1MCGW[v ^,[=kyp,Ђ\\W3ׂ`oYr'#lՖf/FNir#r9ʹ8rq~kߢuϕdvIh!ޫE1&$29M50 lN.6%uBknַ) S;abhLYi+=mɓ>UY5[6uvSF[ߧ!\,=?`Z+K!ڱNEC~Յw!Ī8~4~>òAtZ+tVĹsLq ^"|WmMXfZbxp ?m>7ƮSX٠O?Nl¤egj/$ ;Nb鱉>%D5 =!o}.z^GizRb/ b lJED;{Q [x$<̷x"pbcIl|vӈlukb3mB?m>20 G )D[?~Гuaqru ?㸸.1Pbب`y1Q+` i}r;Vv t$ϴ=G;3QDY(RY~.5?_B`#gxrHe䗄   8LԫG /ěuuRpv/NG~r>ϥ.YG^gU[v4bb:elX>bC  ԇ̹zD1a֜/6;t~h|\ɞe?$L;W'Y`;A#Gb^b~Ljigm,) XtI'r# k2,(oEqk`n$!3N7myՊ+GT?~KMY1` =AZ0ҍ 3s0>ūocNO7Z@pb aogmQEZFU˿ B!\a+ո&u7n\* Cľ Czө ?*wDQ$'qo?{,/z,Ob(4^ !sL͔=;4۶`b_c*p:Jqb$JA*fX}}qds4pҫ98/"au)5kos-(ZDгj0 h;/,[c*Q 7˽" ݙHmG`BwfY,evo{m1%}tr9uPp-=o"yIr:`\WmnH>uAcHF@:G@q€86 [uR*/ d!*ṃ2D!Дh"'Ca /޴^ѧCzT(8ٓQl䆿` v%xFB\*9 -&ʰ~1ofE FmR F~NCaDbqlQD%|gpjVչ| *Si2/rS` ?)nY4 (_rf"$y *P!͕S>endstream endobj 34 0 obj 7841 endobj 39 0 obj <> stream x]sƕ,Tv&@}[,mʼnh7{xk%JDRe+^bejntƛþ=}?-r@_?O_~^>~~oVv~иSވNm:c˧~ Gzop+nܼD7 NkNv8k6cAꜳJm^ԦG~Ii{ !M7as\Zto;)eaILSNaP;-6_Զr2%=~w ̧w8rЃRi@ll 7?0[Nfs:TNƃy3baHΨ8HLktyjeH"]ҋ!:>JvwR*M"ņARVyJx\n,i㡳67~.'EntCQ+y\~={ໃ7Jw.?A_=:o/8;շG_G]!uu߲\w*U+rE5JA_EF lvbЇ;,@JE871⇁ϑNvsoI[@WDyB'8P"&@pg= *-H^hd| H2Ci{;IlR%|EdNm8CgZ0E;u1NJa˪Ju쥐1VRxq@YDVJR8]4㖑kQ3N>n䔓:e+y/VnvLe8:u%+\p=sM\p;k(:\OqߗO'gXEAJ{]YPl?ߟwrr' rqcdi'Dɲr#+ |`*YGFN4rZidy*X 1|' EY%> 4H݈5CFjUsN-n#$Vܜ0JUl**0$楙E`u!FޢZ JO9.JHMӯJWHH 7;T:NV"( 'qv ![Q1<z4*$@ׂP|bm'~*aI$ķj,M gd9cpAyҿ8ߎ vqӶIk5* 9~`#}K@pG\M5"r #֧@,YDWdM .?p {i]'0ʴ׷AL *-:Y^|rJ3S )@5+w3`֮\.Ȏ1"B龜-VHs~EHdDJP>`*YE'ID3^Tɨ%0g81yqM> &}K#ŝxL#}B<Y+t*gM8JX>I:`| DDl 5 DV#K_j8dcC >;BC{-4mPpހfeC5wU)tYH}K""5^3SIۤ&T5a KM&KtaP̴'2i[+^QܼE,eXzYx9\7}:ﶀ`_HM~U= c{_NZǘr%5פ@NoRt<21sI>FNnfM z]4Zi#YNHZ@lYy>eS\}&n~֊zλ Ov4ɜY!$6lWUmj:>%F?L[`Nުv^Qudı,jYIXVɅY2qU$SV\񙧜cF5;jxt?%u7$z"dkm}nU@p-@{ EMت -݂ tVПF kӊL0pcaJ^h5J˹7rPXj;Q['7'1N*o]H#SbO!Jc^)ȳTx=Nm@ !+"VlI6  Fݜr!aGK~(ݥXCtfThk{;"86Z5[aZL,MClZw^FjØ* Oʪ".Z!~J9.%UݎOTSڐ?4-hu14{G1n [VYjo'%Noxi Vƴq)yu^|Y.{BNxc^|Ϥa`Ouu4HE3\Oy<&逤 涧ͬ3]O65H΁,y7һ.}ݬ, fv_d!~{W?' wx%NK,/7 k2 #4Hq^Ջ2م~'{2$:?n%#pu'6H"9Ksnj望f",az [ٹCYVNi/'zOqz]Z)/,%6Pt~^,ݺHo348:Y]fOGTr4k"(Ģa\r-m/V\f3h5ǖ'ָBv2JGssB.{ C8Py5`c4Rr[G;ΪX^ # E&$2 'O 4ki~?К'8E3bv۝P6 L!aсTCpA/H=lH%b0BM+lIkiSRkST a$Jo $./*9e}eDWvƹ5 q10-oG 9Pf{Tf#ty{< *BClwa^KW=NsMT])H³~=K.i~ RnGFlViR=uO ZȊ QrezMb@nHsJ:I _,qm`Όe! ]wBa7| oN(9> DK=a#OȞ캗z|`<퍆: JvR m\zR,2Ev)?'gFl^L7 6jAU "&x8FT;ƬcP'A,xX \CCӻEKJ*3ˮYe]9K%Rq';5GŢk2_DڞYbcPUSbriFC*׍ .FcdHJIôh;r۠䵚 IBngp&8 dz& 5kIRTjCXtɶ'4iXUUyĥ<Ȯ$B'k9[Iblo0b7qM=-/F SƒN@95Ҹ#n4 bOrv $h;22PkҜy:06#eճ-$`t80yx%8@}jU p ^"qGl ZgBޛRbfL}+iN%tgPc&[W:%i YM&u#h=eޙ0CM T_<BWRį]]ӽd 3FQ:1d\{Ɉ]8[ pcw6XW,jJH69XJ<{8 A6!+%r+5#+ZOUqh+ɋ%ay9 atQa1qgVVU?Qw}81Z2y< W:h^/ޗ/z2s?Od)ȶ7NMz !|n.Vmjk^+۔!Vژy<Bd\)!}B ZǓ A5P[&o3e,fNx!GkT4F'篓BQH"p$KZluo чޔSY;CQtUwe,-]gHyƿ0]#~"&B1*2mmIvP5# kJ##`_6m8>-0hZ+S*קyÚF;R?SJpM;(R^FIϫ#ѹ K\6@Țm s?g*~ *TZqzXr*Y+O0уm>gl # q|SXӌ >ыxXmuoG^.VNjۻPbL"ڟ2ƯlC8ѥhX,xDj_plA[Ŧ;Z5딳%`4ҳY눶?bG'FlBg#PEr#<~!hqP|?u)wL=:ˆLk\E hP4a$|@))LMHzťTg­mq*|/)7a⪓č2kߢV{Q&ȳo|uUc$/k6gCd\aQY:[AÖ8 0s|K*xiytzz&ct&O u5zmSzVj+.BpF @,{9"_RY8A^a%80H]Wu oez1sx2D!sT09f ^"!ѴhqD"NȫgʤpHD} 0G,i@4U~ё9:TY^N󌕝-/;ݏ-e$iʦBhIPJXtII!)[佲SEQ^v]13$)F;7z=NΨ5[jT̟dieMwJl̔}򳋎cA&~N /[`_t~] kgq…&  9CXVx*"4ƪendstream endobj 40 0 obj 6319 endobj 43 0 obj <> stream x]yoǑ߿ #q6~#{X ym hP$uĤ(ˢ6OU}V 'Q°8:Uy&a_yrq6|ÓMqrѝBm8bQo[mӓ'G۫IZ!n/&! WVzI^8ީi֓;>IiNLjr?=n7b .fF]l=M7-bL2P]xY3NN+SZ<_wO[OyRL[S >H/&$.&k줕K>i /wsVۗy~|_G'alVJ ^1\UD%i<$-Y}5?!md접(RW@} YI?[n{ ȍ!_WsCW&> q p;O}g|U^.k"1)/j%z;Y\a'g+.m,4ve8J!d€D qm`y7s\̅/Lc*͜*#u|称2BH~GFb'&L'Wz1d~rsY}YOV{[NԨ. o}S~_/KsۻMwxF Z{0+0(nӓphwtwׯΎuÏ||7޿m͏r6JC7RA?Z`qdE=^ ^\N癅#D}qYr2AWhV!::Dݟ`sH^:<.EY,B Pn+ҥTDzY%CΣotUm7jy6*M!L$Y#!e_UMCGS5D8(X[qQ_3I-Dfwi6 undV=ֆQp]N:V&2h&K[U&ȿYgC"$ ]4Dk̗!A!#S^ weI&]V Y% C% iQ>2Pl`a8ϑ*%|[oFrx.匰<~)OoMs6[j2t-̤9jȾų(pdkTp 5ao=@[sEzD-[I0f(ly}~Vn$o|QrW0"gg)7 V1rf\[~yRn7o`!ǯ .u:*BP\>Oz8#}}0bP=4%Ӝvaq|LJSJɈ)i" jEyx.Nj>已ޝVH^NlgW^$t% N`(o(=E G `?R8Xi= % c'FDY B T@6N@LtD[eKS !w*`q\hXo?k-/w*UUnPƸZĪsS9V_҇bՊ=WTql61x"#&2O, }h;ߊ9~-좟9Nh%G{NT>Tyd(F51|a& MG@?5_P@[5ݼupb*=e*wT y~ KnpwY՚!zzlt5gQʐ^u\M ='PyY @WA1>jDwva/:<0=S>yjFc/1܀8L(P;0|}>H.ۅ e:A .SBEѡ?"狎>sE[Ux 3Ux3g͕`|R` ];;a6+.`CK8`̡R 2&/e,7j]dPFys`~*ddk/qSTʲS)e 4,n"jJ` aB%s0M2WT\AU@s&h1_$2 vc,`C;x4\1~1N^ڗ pA@Py͏+nlEÎw@lf(kT2^!~=JXdCc6c`>^ G?0^)3ǩ#2ȣCgD>'OCh qxYŠ=iMUX`+fjL4.#41D&?3 Q !)=\ D + SDJ"K5~2: )͐ĕ_6Cu):mР(9> C%ig(CW!qx"$%etDFDC|i2Gv6+Ry>۰/#I?IzM~\hm|dvοF\2W)a:k(\%/QRdׅ޹Q(Y(ኇ~_2dJNpM_ѐ^+O#+~ l>Dž/BCD" zp?/Y-hk mz4. meۼ&E璦"lўV҄sxҶBAN:|3c@Ik5b*1co'#wHiR$tF#RXTEgv8)!nC V T_N i ҂u =HA##"*2t0j\A 9v3$RB4q֭h7c' M¢6XIb}$n酹Wsc\B&eٿNuqalEʢwN%WbUHZ Մn5LyHŽ3C\Mrw tq?ˁIΕ⡅/%xxY/5m)~GkYV0a7 mVѠj[ql-r59;*"@ש|ͭ[ptNrg.GO ɭy`t& z}|Ϝ8,{|؎Ov{,Ct֙4 ){fmlCA 0 φP$‡,o5t8D]{9BNbUu3srt J*7N,$E `HU" j0hͬ:HM}IF^y|5۬,ba[VRW$<8[#,egNFS$"8:mPx}y* UV&^0#`>԰j?t(Z|8(nOeo *$lJ)㸜]5mUXoZțަˆYm_Oi[>egBZ6f~~VZ2d~0`}5Xm~Bw]|0%DJr,u|)õRqZ,BI[k/\{궴SoYƛ,D,""9* -ESjNk ى/ovZM֤k%#} ba849gzJx֏ ;xk_&k#MO}B`K-$ܝ\$E?/&9I#3Dʻe6_GH+9i8Ȣ_NFJs7r<\RpT)l_(R>,inB=6m`Xclj˖M8*rk*.6Y8%"a͋| soD\4r1D sA'NƆ~>W֞7ǫל5k)HRڶm‰Z)"d|A;$vF3lzFTRhpg[727H',S+<%\M89E wL) xl)ԍ/yslOrx۞ 4h|6qڔӱ+PhmFRA+nX1;zaĮklܨ<.nsSY`²مͳ`]=VGlfX G:"T$~{WjCqJD"GRۄ?zfƛq Zd-Dсߋ^nܐnD?f$-p .v=17nG%t))L\ ï@$ Am"v盬e_^˄DX`7ϖq58x[[}Ѫ(vHtM:?^˦.w>zUp =aEMw+KOMS2N?2aDn<_G"E|bx1qͿ@-I/k> stream x\YGr@?+?\bJ4 rȡ3*gHk8#++/_6b_ͿgteSw~yljY~LnS1l\+gn'7ۧ;3+^‘JtTpNM"F-pSF}-VGo۾ zu=x{ީM鷟^q7)ˬW>/i,2aP 1ᅍc oBGon}x~v6?<=_ξ}4rrt(9[ FHI 3uZdNNT~Խhh; ݧ@Ps{sy vt= ww{- DRvḠnv#F>ff4"fcAC74W''h|?䤴H>:oprif~.*P:YG6JdԬeh &}**.`u$zIRzE2tU?`o8l 24xDΧQ>`/9 mNM5&CYǕGÒQiGʓr);M@+870 Vc-Ջ;,!?)/vsuZft$C] 9oL#\P)t|$&6OX^*| nV6fKc mF})ߛ8G;d~bkvл1B(c]irK-uSʌ2#] }aF9*9F7RM6A$u$1]tW@glSNE98'q|dwpT Dr{Tf ܠo% a*N-KE\OT[.F쀮j>>ɹ̎XHZQiYȍF(dJ|`}@H'׮N-r~3wG K@E274 zD4I:{ݰV} el6P}F<#ǵuLsW]ƿ: g➺S xշ*Z/Sx}GبYA[b \mڹ{Z[3cjoswR^5{bVLU%2 -Pv@I ؊ Ih2;t{pdX[zr٥Cd+Pņ}{hxrc\p҃iewDiMSHkjӲas&ŘY1 H) `r-σ%h~ƒ^pXg?bfmgNͺQ2f⚌/6ҼRqr.4S{[,򚙱RJi)i,HEB$< ! WWE*TҗF$gUv" EW{Žktg?A(KL頷Վ!ZSEݟ]j(ءM'MҦDZfPD/(v,i<Ŕ.Z.2խBcB#젃&o-+ġq:j_G/YB[\K<Ԏu=X\o T(<)"1R8Oe890,BJc טXt.WL/ܝ" S/ŀToIgRJ'Kx<:9.Q.X|6g+]u ֺmLdw5nkKO苮VD:%rR Wxc;.FƊq, 83FÖ͍ 0cs=³2Ng`wkSqZo#mzM@Zcu@rvcj tp }_I.o;QHX\-FŅ-#M>IzEA\O{{Ħͯ\hob ]ggM Z]]§'9>qUz.2Py<ҜxZ~'Ӱ2wt A<Xʁ7 _;wK\*9kiZUf Hŧ/XKfm?黝ƅPQꊙꦍ#OeHO.&z Άvty.V3o PO^g>]ؘm2KLT+X''{x_w%e^fs$%I`֨VQvAQ쀵X+ZCp_f}e+lfdvK&UR]6t0+t)CN M\8مYpqV99.b ܢl~5LoLtE]$Y6j'h)e WcZ"7qZ4/#}2[n#.10"ܾ0T#^dqc.%,lϤ,GŶ,= NGüPGK)=4pUZ(f퐩/\nH`inE-m#Ԓ<'dԹAhV+X[咖 ) U#L.=+v4\a$ ֤:iQ#pWg_XZ^Z* R9;2eGlVRfG0*S4iK+>$cY;#ZY$|PXEaTMr'iHy[f]^@bcbzH2K;׵Mt/h]iIu[W//g5Xj}^N"4>4,kYV&jIwGE4T\ \P\kw_=z|?_v%Aي!o6DGeSDxN*)4ѷ=h[P5e(Հ ڟ9}X-Ny#&쇉Ά4olgbZˮI>2XګJ)Z۴r1Hb ܖ[ G@R7pt8:ep$f۸ᇀ7A[J(\l1VGendstream endobj 48 0 obj 5512 endobj 51 0 obj <> stream x][qSN<[o- )FC@"iKȟOU_{gwI)A`X3;ӗ|uUu+/7߼~•%A>MzL:fQ7ypTֹ7Gh-<,G8Ѵ?_BE 5OUq<,YUOy;-WiJOb1Yyꈭ3)ĢDwWk_AQLoty~>JQC\`aˤs]X)]Tvԋ~rk_/vq˹wz.ԎPXZtѲLk( s"P0pk& _'4(+'K+kS}m zR", U:m JBo{j8xUnUouV pi߆Z7B/#յS]LeUş-&?m~Z^@y?|}XH̵?M~مz͇`ƛ[7T&`$}jbQ(1dRK]&Ը2 fN%3yt6ˇCjç=.F=o soA*񭒎i)mڼQռGT~ºY;Y>A}[ߙcg{_VaG~HB{Fp :I(!7_e/CM!hue:'4]ļ`{Q<"DofC.VPr+=orq2̆\7,.&?i h ?Nt{CyudILA"qg>ʪ8;7y)n#AwIlA@Qf1ߍPgG~[0h{RTc?xj_4?/dg!JB|->BOV|@kd0ڄ]x0~dؖ`1z ۇ<S)&g HjXEQ7p:CMI{G&`AL`-z;$ DTXDGV`&ŀqU1HɴK+@Eyi)eib (N[^O*jki+o¨ q䤴/6#h4g8kPa2ӲbFɫBw6> >/5M?9FD=K8!Q2d@;gdAt,8 6:2󆂩e|d%_Md@[̒ 'YVqh. 2d'()Z W nq/Zm!LCm$ qhCLmL *C11aف|"Š+l[ŃuPW.BuZ1 g ɟ'hP\j`Z lUQ07<>3jk/yd'O0\}SFnsE:vr;Ol ;~LYqҘ41ƀ\秕tE6 aji4).1\ +wlޔF =n|B B%(AmCm\xkl >}ΏH>lw$,e쫾Dh+TbJ@jh硷h{m/^s&`yGND~0aA)V\`ZABpVWܟ\!uN|9| P 4lBP}P DwZ+hW▓W3оb%FXAVmMӻem 8@-8X.{3^_)֚/' k4QZ.FwK),|J.C<νꫣaXڷeGJb' 5hJm7Q\]@asbLPGE^elQ=ڃ3z{,K}NG6\AF8݁ U?Biا͑-H'bj\<$'c.FqHPݘ"e9S{6[Lp2KCm8/Ǹinz;6Wp,{Ւ)>>mMb-/F.=p4=vٌ6" Z"p](;/9qVԋb7FvAA] }!߷@gd7OmOr"tcH2lC!fMf!yb0vMYی!aR[Qξ E߿V`~UJ-4UKScqZn38Ym8X[WO徤bWPl $N46|^-LUyS-T1L,+F{ ^xok.S$!%1Ɛ%Cv$d!c>eDO^ "}JjV`|L@ c"e=Mmlbf1O9;1O+Fÿ=łM~|]tk:%d`oz4*\_HBwK蘓' Dt8P1MɟM"9Jwj4Q3tpbH?lS7vl%J}~{eҸ"aʐ915#ŚowF"Ɠ& 4 B1KoN/@0nSbZaՇ`07zj)fŅ&](dNƿ>scY^nC̃3Lk*wtȻѹH_=I1̍\ ;¯X( {P&SWdַ0 y&Q3p3+T0-(ױt}'S5K`{>/wGej =6QÙ]e/%ܽb˼_f:}eꝛS;hVy=Av܈"HigGYyLrG]e4@(fN^KBX"RR2%53lC`Yv%!QvקMŻcM+fD3'؂`#FѾĔycR<҇z mR7x/[ދn wTߧ{5b&.@.m%d`4 售!a]P@MeEgh){e]` uk_F%f䔆+ظ4 w` ;{ڻƞ)l)JfwEAFz~' pq:e$u` ;A"\"d Q}|f| UdS.)*:`/̓v=\:]6M~ ZUP\R{K_]|Y/jՋoߵs3ovsN'7m|C,qscpz,,7R퐛 X:5M?vz*H~3[ Rqz\m̜p!(y<Ё9@mK!-̖+e.hHĺ83.EA7-Q& @G2Xn AD]P=QyGdn [ HmKK,کbX/>Kuʁ$ lzHpb a,R}+L=Y2@!V^k[*fC]|71Z&>bcQ;׶'m0']6J'Vlx){:VE}XZM?}z[@>y 0iVV/y}r8Q'ot(ʟoڮe/U xRs.HpQFvg33%-AX C_%I(6W(j1Q!wj-|@$y|kI\:Jog ~I3Qk:x|.a~ۜ8Εc'q83P3o)gSƮbQHp"K3VBhS1!ʧIH s9D!4$!Iݍǥ.gwwr0c;X(7tXx) pq?R|쳀cbg݈p-YDYR;aliӼ? CQWS N`+1ٯVzZ3y ea%\^5ZNf)q=j XxKbjdxtaUu 0+Q| dg&÷Z:z&X |Ng8E`DL-5ZG2hAbƂ^3.bxztFDuϿ5%"Q.(!64gSjNVk$]Y/CI?wq/hɽr46KA\ػȅ?Q xy>Gtm^ %9KС.3AL=bbasHekjG7w.ޗL?E\CKk{֙h߅)cPRCV;g,'G9.;Y_5IJyࡴZ;߲:5SkıTOÏ{$NeCb?9le>gU;2jc*33Rߖ1p1Gwqƙ~AO% bMrjxOr=Ƭ@ipH ʸ!e!t'*T՝ endstream endobj 52 0 obj 6590 endobj 61 0 obj <> stream x\[oǕyGLm~QljĉA0%%RiK~ϩ9]=HJ TOuwuչ~R~_#9?z1"I3Mq2o\fR|?n_<;FO_?_p.x?M3as98d.WG2xSyb72s Cqn゜ٜ8o'G?Rga?G鿝ѣ#ܟn ]Ƀ(u΂t֞%wRSī)h7'RuڜeXLOLLF"WA`<.Ø(y$mȓ7(mˆcݓ+L䂫FBD6e-|Q'\KOKN觨=ӹ-]ОC' ޣop|ITA/ = ^9%%=I?'wm9=y͟u%I~z/ȗ:zx|@k']/ xݑ\&GBtMC2&w"5kEU|kSnhJ4i%T)+Πb@vM/smW#h!:/im1+}UCJFIt0,ߙ6q[hh4?-lX%s}oK ԰|볱94hڠA?]y`{m4!u)yw#/cKdȐч^^kLwU۱ 5aD7,WnK @ю^" cw|Y晪E$sSHzPm?T !W#dKgVmESӾeڌ*<{}GQE| ]?XnzM[xP#uZ+?ߟW̨݉># ~AFqw) j_y{sQ/XyyG:;.Ip!*Úd50k,u5#Qoa 'q<ςHi Brn优%3( `hm 3i%z C&*6z T2)V%JJ6sȝn|L ̒J쉔< S =:_GN*3U@/MWl.m5 @#CpGmTk,Y }6x.=pS^k1`@:&슞q En]P{wV(s@*:)Daڦ<~5( Y% p8Ky?0cu"mb{ Ā}GV+̆Bh a?K -}e;$Qi}XXWD > 'q+ e7RG4>R"Xm8ahh_cVW;~J ]蹑$_Ia#a$iEi2*^pT/F)sQ.wwݎe/h P .ު8)auV 4 8C=@s咪($H oPׂ/5ͦ2Mz)!$Lpq()/|*ek,eıY'f J{AY|1[|eT ^cv7[L;O 1Yq8ف=fRxً Zf0%WWAD ӵk] WDCfҌ(h.lWSY9v?ҙ\'@y8YJh` oOv%`"Z2jRScOG\d4I`Ky"dg `8;z}N$N H/ v3. 3V6 m#pM+:ygL>eM 귊{ %/hCHcl0gH30RePqkO};B>9N;P&RQ SXv[f#`(n1zT # o]FV{D^pr2!i2#uE'E e "9@#b5tb "Vi϶\"!,W1֜K|%-k3q"1C0/ G": hg/iui}:f,vS Y1|Dc 2o~&m[ ξ$>3ALBJʬ%x@wHʽؙ1sס TFsHeyС^C@r vuG=R@/YTa}~7y^$emWlU7y** DF J*M/&i@FߕZ/G#<ZYZ0eXl i}zǨ! +V..ZY~0AW%s a4€kU QcɎ+5n͉t9fyUebA,t)`sbG7#(pHqXZ5[04L_<]2?H0J̐hK>M<`%E["NTF>`@d~,4A u7 Ndnr}n %3{Yw]L_7м;Cn.;ka!cZy j)L%y X! 9Q\؃a[S3cy^NFr! m끃Ewh nh-LM 9&\V L ,|/۝UoX]›f^$>.ΌyouE2M5"Ϋ*LLj9;X<("U5 ʨD,[ bUZ:)R⾌B2I|CnqVԢa++"\MRX()C ^?m-b̛t^Al?Ę+|^LF/S}%?:S _+,DԩF清cǝW.e1qqQA 1ͶjqC/MHCdt6 dX:%'+WOb4>*`̇xsV4ﶠZ@U2 3r; -w9>u>Sh/9ޅ#yc&޵5̀h)j;>-SUZ8bԡnTKc_X;Qͱo cv{T4{d @2 iI\z Q(ex`.{|sХ+MJxd`$9CJvZ\$$j?5|c+UB* `eUJAmq +f}" -@yB4v\KY42^'e,56"Oz'弋 ݒZPt!k=s}gݣˇ8Gxe}a08} Ίg{m)1ӽdzz֓ " y (jil6NE(+$ISw*PYjJj^cT^=]T}$-U5KKp* vxTܣ12gRttwɤx_9#,N[oġ9 qvNw)eTujR=x$NO]"Xr<+A93*k9=qC1 ʱ-UE9ຮ5ݱ0_ 3^NJ]+[&򲱼~sVITT9[z}Fu 31Ql(oذ }gv ]tL :<8PaH~QҐ2y R9N ts㋀(3rAXlO|MyրQaʿHS:-k}a2c9ue5m5Da3WXO (v6nF谜jqztHSoy8<{ԋ *N<0H^}%qqFwVc|Aȋ *6bR:#Hx߰/A9~`"gGdy6T|ْ*iB@4LSS@T=IزkphY9"N9Ly,D'r0-2FC19#Ae'&sE(o)aE=),QXf  ]">.xH2Sa0\x (.a?Ӱh wXvNJ~L 41f牳y;$z="{p7r W^e_I, z_Q#bq5=HA\"qR:kq̰mtAiKv_ll\{ "2Z~( E it>m Aҡ ;T[5ƒ'٫%3WVTfl {z'p5LO۲734\0AB,S8 WmԻ̣CaКm0M26,pϒwEaA18YS.KPM͒~.hzw~Z"^vi;ɂNhҷTnxE ܺG%g2I H:{uF<x.*3S Syثx*œ1uJ2,Ɨ@EQѿTɌ4`M(mS'=rX.ry9@d;`A/(s&x̻ B?HQܛO$SKʣ'kz>#2HaOhiE[׋&;gpM48~y[Pr;JYc $yŴ%-B`$ZuBYSy̵$Ue[4ݦ0d\"HרtXO3NL7שiBd3 LBpn2!ң OZz{^nr.J|{eF{nDTd{tꈽ\=&RSK3\@.(`𲅖>>VHbggn{U_.qܕ-t b*@Hi ve ;Kbuޯi\] #9zBEJ| -LYu3S+\mdt^)֡559"q>ICŞ,G ^ў  PGa+bSzX~P['{;1@>1Z^INhU/.FpPseeia5b*v(5b00;TA. Է]ff [WGN̂e{S@"vRצUR#)@$^kB.ޝ+ԓ644Rфj8Ȭ: ibC,Dk7,Ǹk6 *s[n=i'~]\;@!]T, d>x>L,0UUNfH,ͬ:yT21{E߷!Ub͏y?%)6i1\I"}Xr?F6Ja:yj-ESIs٩R*/R~LS=O zP,|NJs6rxNUN$E 1P2Yyv^J3¯-crb33G" 9'!=/X'U*qWhxR|JU#ZT/,DV>Vͷ{c)ǙW gVɭ܇~ &DOͪ٨weFR.CvQ"̾Tfɭl_}rk$bUywhXxH r ڹ J64s->۩ѡzYŖުZ/c' T3kmפx>5ӫISA`dqС'UQRvDmdzN/9]hR3\ Ӧ2`}v"ڋKgy(On# ׬8kw,&ghejdffmz*5Xw\NvZ{fiŸV:b;zSڜUT \I;o\WK `OhsF=)̂6#ݥe4;*S (iuU& -K]Z>K@z q{lmY,Y!W,KFëAܜ ._L ~P~ZSgCսѻҍHmdV-<ؽ8ieA.b*W%]^J5K2}T[1%Hy.bkIPgX[LOѧ>UΎx12XO}-֠? LpTa!$snMȽq|gYRi/^>+vYSlѵҙS6I\ q^5A8uLEM,3|3N.1DOP>s<Dj ޕhy*VAśa, P΅@S<]Xijؘ.R2j~ߐ BJMzϔC\"#Y 47i&xlt2_֫ N a@W~ѓ1>e@nL{xTˋ-gku0= H sۚzC8o3kzLjngIt)t"IƵPW Qo[i}E~TVJokSo .j N\ueI&@Ibpi2U#։:&\uc$eĎG_EofSLtfHdS'ou&PBΨ$5o_|V50;m+6]i} %'5BvRhTzo+Iknښet}ZL=u]M ^smpuۭc<٬S,8yo˂GNyȣ\+)n*GM48%Sx+$8@yzpx.۹ǹ.d01 6N{'hܺj"roA{6Z #BZi6afysVkGϼXDְӮjFj{oaiOJk˃cqa.de*ϊ͒;B'c%IMǏlM-ϩ# eY g6W vM v[:fyOrL]I5bʖ/z[Aq=m1N^bWxpūK }/ K%*_|v?/߼~go.&b?ЗTwvɋ гuR w:k ;քs.nқ$sdn'LNqLQ1^hlȔ_Ҁ O->h֊_^_)wո&:.SbhŸdغ3 $2=B"ٜl=v%3ɯ9n=;ЇOˠfFXIEdb`-44FL'wR'#fVNk\'*dLLio4©;w]N >߄ XTyW‡Hϫ3uE6:5:3eRT_ YZ~ }<+ϝ[J$QL,ʡ6%Ư9DFv0:H8Ni%q2@=Ӷ!{cv 1֦v +dQa8W0լ̙smD2LR~YĕLƶ9Zk,SF3䂒f7+fVF.A7f0? ;o)Ȕ +3=kЩʫJ <6`WyDcd!4=U5$,#+m9H(rґ\' d-͏\cv0T|uuSbPQ)IjRlhC}zI 놻ǝ5+ĚȴHubeROEtB:ضz dH=Ys>59_̟52;a*$*A%-ƭX&V-.n:XְM(61q&)F3G("72Uk)e~YV!|~y6壈v*hA $ 2^#¸>Y8Y:1j6vY@!&*8)iM٬OAl>a$DF3NOZp s@rbFYˊ"tyHKrmuZUsJXU ޘ4st@i:&֗ĆC*+jSp!%( r0]zT;C5U?q/V ^"#M\چ>*ުPNHl 5?*^F<#`m^ʗEL]޶$~ЅOZ}6V/RiHHU$sY-4fϘGS@ƨ@SH=zTE2ZMm ]sB+XʗwO]P>owoGoN(ZLth >xCV{ikҀ1*CM**O!CA@Q;6Mϱ($A_Fo=n&FB 6H!62MH jw£ [wO?mB6"-\c>ogQvz.,Z]^s|'bzxyUy7%*lĬd=q1a#Ʒ*4L1a9aaݮB4*(*yOie:`}eoq;7[`l[Fm s@ 0H!8Olq}Q*8ȶ6{/.xΓer}Ra~T6}!L@tqN`ŔF#{BRұkbf:m` 󼴤AEŪCU^?(R]=.qcF5_r>0?s&BV,:= IʔWȩ/8;]V3ozF#vHݤ>M:rzSI+2[ x=\莭kCvd-Ȉ-[q"T\&e7\BRېф${9HųSjv(|z4Ƣ8b!hCO\p`Yl=Vեr}ks%er$~ 2V $endstream endobj 66 0 obj 8335 endobj 71 0 obj <> stream x=ɒuyr17pgՓ'q_Y1y8=Iz볍B6z}vҊO)& Y?/oԧ6rrJ~ 4|+a DVA.{٢QO6${0D72Zg{C0\Qfu^+&ieN` z_!"L# .yWe{9Шl-=t1/hS%Y;|bQ]W&9 7pGPڥ֯=*'zO'$dɋzooz2ZOH\ ;C-$0XH"5m]E#c%"2s3dރf2GT4BB>h8vQ}߀/a 2[KU*^ j}^^zyӈɡ2 D<$F!*B?j΢+8ә]jCP(G^e5DgsF'-މ[n!1pEGOq}a#H>9 -^(r+ nbcǟ<:y?W\??y?y'_~ }Wˡe7 -w80*_!./f/ߗaCWJ7N%\0ԝ,!n?4 carxE<߻(=RCGeK~ۣgƑxL" SB%|$\rXl5X. Y`ɂ9K>fuq  ӇЛI~a<%$f8gqQzj½j^ p$r"hoE\5(`[ HD!WYUonpF ikՕ#օܖ)cvPLbKL;rɨ*maJvTm30;G1/.,NkCNj19`lsYAB@ɐ \&-._O5frAN*F9*8Wd^yd0 j^[TB  ::Fµ|ZV}hW5Uō#=Daiݢ-+ܰ@b©U:MffZv?nIT /юOΰueљ Ȃ]p:̤QO prqhΥZCJiICfT~2|tixmP̊@"ʜÞ"ҍ Yc8ZQ&=V*3z)˔ѝ%,V L+@T2J,mѴ^O 쑟R ;R)7fNR{ĠVaiR'Y0꫔^p.?fUZx:r`8T^YϬ$6| $JN O^;"[ӶI]t>.OUlUjڽQL(AY{pCЅb~2{zћ{w_RҺ[jԿ|h1UPax%fC~?-( ժIa/gÎx$oigebo,~8C{JA\7O_KlLIc8i|w"*w?J|ɐ?L'wf"_\m͘*}Ч9HMIuh`P?CqrT֣ly9v{ZLpsD3*qxji& pbҹ>gI|FG&G1J]M#R$]˰)){̓9 ՕzfS{L} qUaХhce῞pˁNt3VǵsS+ [ְO+Go fhAj~[)]@zxH(,HWdgWg`NiW弧O_v/iw7ltF{Uj:=A>A,4RMq6?KqŦku/OzyhwpzО:-cpRM$S34X8R`- Jڢi5-;?fЋx8t>w(+CB0S]5帖, 4Q]@ȸSťф? cGl$/ ōahH=KD"bFp::6 V>P>W!! Ҕ$)5/K fU!n?]Pm{':yZO&F,єBȁt"y |Plh] ZuFx\/˧*6+# W_)ߌ̅3&X5 pSPR |;(H~D*LdI3*^7CI6fu8eCfؼQe#ŵ2 #]#>.XLhSRXU#J{-{ ⫄^'YMxg.;~ 5eO;B*PZcZH *3ppG0o+YJp[m.0% s*],Ό2g<{V?ϏNzv؞!<=J14TN|e-$\Wa%J`mHUcl&EA0PPG5ŜRkK)agDC( j!I_y ²sE""*c35!x^3o^<^^Ƽ3"]L`Kϝw}?,%_̣#dʁ%j Xt0#%X1c _aMABS!F*p}=H?HaD9Rbfbƌa>Hw.?endstream endobj 72 0 obj 7406 endobj 75 0 obj <> stream x]YǑ>q5!A^6msB!GJ$%jFYU3$Bа*+88s1s??/~8R:2Eçg1y|.IϾuv{v?Zɻ`'cLA)zvO.Jvb5fzֻCO{ [:T)|G{{ګ{a\BM^o̤ =nՇa~v׮E/`('m5-w21c +4Ym*rI e2}fbw.<;_vࠅp/&kd> g {&rZI41&#/[/d/]=Qlz|7yV"p,LJ{c?|a*X"!E\]|+yQ qW6*av(0h tqࣆ߽%_ǧA1ʈ ܰ(9F՞.FRGG/̇~ohw?4Yn&=a29%zQjò}]$~HDb~cᗠYjPj808vy'*&Ca Ƥ7ff 7Ob!1y9X ,mf'oc~reL=F (7E7ĕֳ p {ADW,{y x?ف{\ooa dO>ݘ,$FDڛ 9m_?r&-VO&2 d@oE fn4FF =ɀ8HL& c3&1GMƁr5VH€Ce 1 r Bv gbҭTS}3ßi/ ]O^HcdyϨ4Æ.}@"qc%<"E fdSGGnn>X(SV)te+A9)5 q)q`7]< Aۤ73`BxXP!? [,)]"9$Cb"^Z}}f׿gUjF&.~|!V Rʧu_rLj[XQ ڨnt  ޿B/F9+팅X!%J|sSXd҄覴aGKR s=hg5TBEm Ra0z;h8}HdG`Q,qe53x ܭVkE%dd#7";%lL |+ p,х n@(vY\^h+^O5d -@/X w`m ۮ J Y2F=* *f @_(0٩*" ͬI//i@oƬN"j$; 5왖`щ=0lNϙ_83WHRtVٲ6fiHmjܟkRB!Ώɜ (lp]5`12ҕ) F&; !}?xk38~ 7wr&HΆ<i &dh_[`̪3e)w\%mG}@ZYlRpCS㩾aXXб 2'Nruܪd(H1aq/il3qqвF'N܀ǝP^#r͉=$zĘ wS(VEkME`{Q̩&A9R [ A H*6ūo\T)s.1eê"gkJNɁ! @^% fhko#ȀKp a[ (. ]c}7u>?W阔'r 8|1Q';< ;\]B$Milky3f|0Ȋ,%g"8'6`'ZUP*X>@a,:א8TX=M (KJ6o2ǒԈ/w.65ʥ#y?)Ql^\UpCo_*ѭ (F̕8cRZ)[)h-Dȑ䍟.mJ=i ꕲ gbP#kH߭AJ}862F-Ѻ(LKCdacyI'epr!czȾG*p~ 5ʧ?q%wq64} LnƝ^:]`͓W?׸YGY:_?^.'/: !Aе iGǢ#!*CQKh_x@}qù6SHu vεfrk=8?_ݿ˳>#O9Kĉڈp~Ŋ&<] )dcrYmdG9<'%L;nό@*WMSܖIjYF\(ɶ(kfFf3,k$7-~6+Y ggBRD'\Y"oh`X3OjS8C+ f4V1jJoCi7& 4-qYfgoZm:~ҁbS#m'CE`Zt1*cã͵PjghHY-nOFgcFgX<#B[p'Wrg'^^.)XSOz\{K(CTL]|RJlϠNNbou:ԕ7!2ҤU\B,)ޒK\:6Sk6-EpٖslXd93b ۬z;O"u8?8{bRIznkDTC/%psX]-`v0R9I{$XzU&dR&X&E$ZԞp JnJ%Ens* _ظSKAe5mp:[zQӳvf(%M(Sdr)'ಜH>RVz,`S: )u|@Y Q.\洆zyTH^Qڷ3\Uyw`!w-ᒌ4O `WZjsi?*I1!%((f">R"A/Q|xo;'n't)w:&Pםn׶Jai8>0#qh-x|9FfGy)206Fۓ )E$Φh`H:q!EwnS ]ALi7D &_ْU}R!@܀҆tvtѹ$7>zQ6/T'KvO?`L?:>|0#e  #5[uiQQ_HfώYڑͽqz@ӧcᓑzvcʍ8O!o;%Ѫ#<sV P)4'|&l4s"vbzq!ֺMNgA ^3zlQt9Isv;Y VBJAu-nMNl)ǖendstream endobj 76 0 obj 6116 endobj 81 0 obj <> stream x\[oGrg&o shޝuر7 F%eX-ѱ?V5}fzm;_uz39.ߜ%I?ܦ΃^KG}nn9uxacj/ևۣ^B/\ ƅŮf18|9$kĘ%tߎ}PnXX\siѫ3ۓ+OX nva99 B/8S$PL&3I!|z5m{FfoMUej{ hӕm@c/p_uYW%qVx \.t4pWϿ'eu~L{(Дa6BlW 7x%̜4L<|h̪7l LŶBK+guyCYU)3@˘1aYeǘXs:5u'e,ze OʘF_AsRƀUJQ(!LvL/$7W7Gon~UH~XٮE띟6dk1ƈY7kBv5a/_h=>tR&K;CfcW~Ҥn`oz'I蘀G,"Cy,P&Z#57 3D}L<*kr[|A)kdJ v]cI!PNM1v 0av38 .nmhJWn`VA\Ԕw**RpKgjWꄃD3@OL [R§IQ4,[1w՜8 kAwO{ŤpӭQ,^/ڦ%ZߤA]\],Ƨcu b8Tp,JA؎NKN5Z-i}-wP!Qp 8BjL5آy&T oZldM#g}[Xijo^͓ȼM+` E,0;p7M(10 &o!Dp֕O~9$0ypG AvdxќLAm$Δg)w4rCw'^NApǁoc,nh2u~?Q {u1-M/pAV%e 1w!t*N2,U,*kF䮳%'^ JUb.ɞH`SԱ#$QaHDx2U:UN6%p '_YCOrs;w’xY(%9ٖB2K_Da!~$[$;LcSS$*˲"`}(W;C}DZraͬ݉W JTbf͕٫ӳ#~t[a,Vn4Ng;%E5ềDŽq #oDf1NiP ۢH%}GXW6 p?Ap!0SkʊyKI џuAvH>1;-2۰ɲ[VO&4-aL%ydvs0\]K#PcMKT&# M?q7]סoY^5?7R(@ϳ?}b+'*߀YmMbj0 TdZEK(9g2<*NhZRoJyG;Q[ \GCx!Xƍ.Ք$Ug'@īDD URNo%Xx p"'@&t\*{v:<Zd}VP#Y:x]`++.Xo)q& 1jx]ﲸQ7]Ky2.XM9z{a(]J$zVV#y}ucmI! 5AoDQ =nIy`zy@Vc* B24g,u E2D2o!Fp,]#ӌIt"4eWS# lwlLd̺ t;9 0Z"kr e%gFTQC1>|cyxr j-c@UOBӲ  +lZí io1xo~||m|) {ޞ t\ TO*{EV8XSU#ϡ:, Ǯ>Y@EڈK+hi!~59Gf^0T|=ḽVYl2{ DS $y 4 ?cK,f1OAnOEgg?Rq : y`b#Vh;݋'9Ŀzo?Ձ6L#i}f f͓ardp ܒ5@_-%I yDI;-\;նOOif %p[7ҙF{̊I d"p4SWT >Gդ& Vh}ruJy) KbǍNjȂjUZh8'L_zAԁtv(Ql `3:-ֲֶZ d)LƘ{XrD5]&">Y94#Ks؁_ayY|2ޢ= |- Q1\yF<`!LpkCM򤞍nLEeU*Ӹ/͑f Ma<ˡ+Kf]Qc #OGu!FJO,e}-w.ǧAq˅HLm"&) )M_ 슆,O:Gv\prViXF*:, [>21P3f:+aF*X'wR`>w!rYC/S0v0ahgC)CSR-؋Ua87)uTHy'KR=PP?ސp-v1Ǐ1CG&&N)H]L"ǶbR $4]54ku >0eTɜ WVyhmYyOΛ2dzsE;pWXe#S_a 9'BWI~j`˝fps 6^>ץ^L}I)vVQb[gԽ; cZ 4"髼e{%|McٛLJRxׅH&q2O {A!W)WI'TP*ZVe7렦]Vì.[jK 6]X\EW4Y'/m0dJD-gisKRġ5sng5vbpiDV)飿Bݾ{AJnsۤ;B` zxuҴ~bRnO*&{Ry׌H{.~y`vzpZ+U*끬sO͜i0i 8sFpKWS-6F?"*R"oz^uWgR< YL"́cƛztum8;LByLlZMXõ& |exp$z:KDf*5dB BWóc D4i< yJH qowif|yE ~u^*2x9݃oYT/^0U3Z\|pDzlgZ;P~ݨ:fQHbX Əej^i9%0JkJUWS??n:endstream endobj 82 0 obj 5243 endobj 85 0 obj <> stream x]Yo]Gr6"S~1OdF<}`% {$!384)ɂŖhkקת>}4Gg鵖b+x~$xlKc{7?]?>cyts8ĶԐ.nҖ8dq{>,QDyQ[rع==z~?'Ocy?gBʓ E{Y{I{%ğ+[;=Gq$bmAѣ] @r?W6W핡4e:u<ӱ~n>8 Pړ/t|tㅲ0Kglە5Y~}_ͿS&mVyI{;V/RF$:}\B'oUXh*zurgpa֟ߒG s?_MT7MpgecA6V#m[+~9dj2n~ emɚ!qV9k~"q8(i EF qEK˃>{/?[c!WnZYޅXFO߄<;plC(<p7 )HQ_"go5!ї3Ɍ+^єk͚߇s$a1`> EV&Cj ')c™݌gn |V+7+7}zq+a(_7W0,vs u<l@xs/adPAŢ ]6 _mҷYe tM^,Ź@c)_žd9>Sa)`Sxa獋Hh "oZU:SXb4a"KBa>uT`-l47i^)Y?rҐ.pF&!kR Mq5bF/ZCk]^a1V"wJ'ط0aG-Jat`LE JvZ'%<..w?鯿7s/CA6.E>v[&p(]6)1Z:`ґeV~|WĀUKe;Ph#{ [QW.D3%\>'(EtLf}ߑ:餻a)Gݍ+6< 4Sv#EI/VҠ'6]՝FMjuAȮa:X ᅱHBxA,y&K3N_T7%ub0`FVM kf{)|E,7Jb.a?'3w]Gk`G`*]S]Ʀ>O^M8ae^BRn6M;H xѠCR B TrS; _!z\(ޑ 6#*u "(glڂt{i,< J52SJN]HC6 틙MrFbX#sDi%HV[hՈQjST,:8U}U&}ܙd]!(=iaL6"pQAFM "`ZIo';Dl/V iM u[M h>=sD!0X~~JdvHe傾y, {nu#,F+3 /AzE5 hao= aa)a+ƾOVHЎ++_NX®uxu`̂l`tsGhx"=H>B6jqQY:Dm"!L8E A@ -@zՈ?eE⤳fp ( 75ée/2zݤcfEt-߼X/^ˋ. OߒcLbrR;?-Z)CAF4 :EȋFv88a@L!]4?`:Puz! }pqa=7YԧOQW/4i0*,?%a6z7ߙϬFu#tnfctx?SNX}ZQ`NDЭEʢ{N?gD|j⭓zT`v0 t.tx`In\c8n;,w+hߙ@rIxr9A"]-VhP * jTrCwW@NJ2(ɝ*6.2ũe5(r& zwK֛,6sݺ(]"LW @wFL~TWTˬ/)+ DzW릳ʳeags>}6T}/SqFS 40aq`Ő;5JI$VL7Ar#ڨ%>`xFэr@GڱGCCdwmzz]lWM!>`"dW5x]"6;]1:) ]f.ѽݲИV(kW40{Lv~5`}P%hgzKi|Hq<knM}M1:dFڀ-ˇy5-L96I"P8\`ȑD.[Y  ֦l]^i/5gz|LqaYJTX" rIes[GݹEFkGEC?`ba4u<|Z{S 9j#*zܬVoQr ƨbch?dl\;Kn#´Ck2% \N<5n-[0Dl3$ˀ2DU0KzO[5aKԊj:qVLe7Ig1C)'=p,Ter3ݿ` F!²1UC$3b&Ke՜7k2@@i.pu WbcTVҝkATAF.7%Pc|9dVL~&кc'u5N|@Tt? 'gQKk`x#âhtcI 6>|LQdGy|;廓!M&잎nWɍZ;D9v! M8S}iNΤ\Ng4 ,/;5H|F J juWԑ8u0^JާJ땛aaˑ*c;y:^7Ḃq9E:0?=j"5(lr95?x]ѽ?); 07.9XJn a F,s[?n2x!05k aF2x(Kً0yc8leE8Ď_'6$n)Zs 4!Ec"Yi{`אrf^.(Ix)ڏ4}1> ]vcDy"?e.3\ <0dalʣL/˶(䊌eUڃSyTR^@1W\"!p1~5 z5TyaX9%^peJ7S5ȌY]8!K&*PhDY븑n,%#u)2y#SH3ɑFY,M;cuvąf4Bm|ot?Y{%a}J!ۻ&xYH6KmsGB[Ohz ຫ磝]y{ԝcnGEv4|Ԑ'N2f.V9SkoS㝗o$^mFVhZT A2{le)ӾpefTnUХD)%i<kMծT|D GP4rY`HgA-`SYHcϏwg#5JP}cʫJsEÉ"ſS*u̅u MiT TYDE̘fz `3MO??my _8ǥ<Dn.lc6ƍ[VU?bƲ-̞6JчԱ`wsΊm0+mr{%9 BΑOl[1v8cӄ׽׽݅PqɰO%2ˇ4=l ̖rp]q},PUsw ‹8(ʯp,81:&6uԫ6VԐ-1QA#o*sRD͋Q4s$1-?v@)MQ\?ٛdRXwE*-Aŵckz⸧Vii5:%t</ֱ)fR'Umi[WWIXbTzmVmvЮK'Z ;P\YDaK+kRYm#8yXQqj6uG*̲cS-wg>#5o9%UP[J&dFn͓uHVb<̨j(|qjU{+=ˡ \סlL pZumMo{IIT17̻Ң#*pK\GԫA<}WK{024 ~y崨Mm_c;zʐcBT(SbLtz3y}t6p622AhZшkNX& 46;d^^e-f"yGNr`BPh{t,nvu ~"ߗKg-̾CF#@c!NmNMP*Ayz0" d*O5\_S,a%I^&}*$%l#s Ge49gCsBPVa:srtQw$-0KXtM2c*'{[恾:mRȚdJE#ҢXC|gFY'iT}c(WCN8E7t̎J~y޹\$̹CE&b21UrVA+$ bR%`Úf2W p'piQeױA&l?ՋN١h~7sx:".օ)ޅm%f r>˅e. G=K|$⪶}4EJzu4!<VUeR8W'Nbھb^]aBvڒ:^fCl`B}uw۩@";~D6OE6 :u1DiݲZyu"l\M {iy AiIw=uBPؖKql Xx!rmc5o2PyӼt`I: ҈rNmH@ PpJ~+`ԧ q9coqpo"b4IHn/EC-p~ej Vo+TXNX> 3^}x Pb7d{`c'k"ðQ>J2 ~ᆽs(]ȫ>n2b3xl+~Q%A8煅U`b%~+uendstream endobj 86 0 obj 6907 endobj 91 0 obj <> stream x]Yo$Gr3 Ky iڕ4>X~8_<#nrȅ!xUYyD|qGc 1{r?w_<<{n织?ΊkvEgz8׋RZA;R,|8/Z✕2?. ~81(s.afWe~8mGbs0W0ӷ.|V3<ifY6^s8ϙ #H2a;$l_ K%jZu<':}8\ؙtyC^|].>+?g7y&-OruɊq/z|0C01HHd*A=S > C|U[#^+XZf>E ! \=  H4t4cayˋ4e^lυ}fw%#]"*̢`f-*4{ٯ=W=t}xF0r(<\N=9%}o> 7>o[A5s[fś lWX;eS8eތG%ZVn,0Z/(?A|E嫇gߝjq%[ 6 ŃOugc>|/Wv߭ 7 ܛE%Ʌ ?7lc%}''m̧eW3{96$v M$#4]e`*?Z1*Ԑ m{/QV8-@ 7AL xpg!;+nlRa?;jJP8OGuA~G)9%[ Je[n #-7(n%TףgpE[ZHZ,e (tpZxB@ܟYa%=zd4$U2Qe@Q?[k8#=T}7A } A2Õ(e`y>+Kf|bI.<ŖI|uT8XNE /@+,NTޖQX優6Aɩ JaB2˖8~:P+nj}c ԝ:SRqЪVm/c0c(WKP Kr!b<\l< $-305ˁ1sy gqQ8]ToA& y|]-JIt mGNoQ>ħɱ ##@'Q8赥B$qh<\sb*:d'HԭrB0 KtOҢ{IJO}Qp+*?%rl͕Ij ?Y=^$7 ˀOJ0hGU:DMEMtRFˏ`ǰy--^K Y4JMG3*ijhW߰Zjf YkNUV=ߍBgrq\ۖoZԿ%9QEv@ %r ,xZvsq9\ѿ7|Fdim#ka<5pq!YTyi9:&(,s+bk#I"c& DHK$p`hY)A"vt5"ڱxTLݙGɵE6zLa9I &˻'*mNBD&TZ7 >ā0YJQGUD||U?5a/&.%>HA@ :Eg$]@lv'8:e#Qq߮k͉1@u&Q7<Ҡѹ #9,3'n*UQ]S񓼭ljK.0LD<*x}`dzK:9Uh7MQfTQ@ÊC3N LOPV)P@F*ήJ#A%v{!>M9x+_xD !x4k\}.loHT8}oP5Mv!拰%:&F~F;2(3(o\lN/c}Z`?2Csz\8 muQk6xӑxC=>htz@Kv4ro L2G Zs2}]6vZ|1Cpzu.FVLhK; 7qӮ΃d!"8$)E"P2d 06& q#YL\"e "3 mw.`:,C  f2IOdܴזc„?΅jFH )_ XKL%J0 7ҒISrNz"q)|\C} XB)&gi0>R.Xn/ çfpVI҃m?n`P}jp oz1~΄$$c(FFXbzx)_r:/$]wA= $ ©I.:Hh-BԚ SWϲ 4t&?:,dDUi7!6m<ˆ,Ju'HdPn L2Kev  6 #|S1K5-@hTRIh ,c5A)QWo uq+1vIa˦7dEٌBOS+irLXarɺ|I;_΁Ĺ#>1ўTm׉Gmc U5îI !΍:3Uڊ5MAYfȂd .vxʶ0U i'*6[ߝ7餩hdd+լAQzKcܘJdkkoY% وq6 ml} UuU $4($UCxAI oZZiKeЯj a|lj '5ux s:15FȥXd8Wi1О PN01\yٖxI b56kn:{B4je[x!WFVΓy1s6wk2$NCdZob(.l./ FRښsL`(Ke8^&Ƅs[;?1:@aU{T=hDQ׮'w Q1F\FUp!py)q7" nQIWG +klLw J\z:SײKZOh#_40[`mfv nfT;ְ r^jh@ekj@~_)?I'mp,VVvG+Q˫y>UӸim[ ɯJwCsFHQ4ՙ-hIQ;[L uU΢hS+:ו _[g_ҩ%:ItnI<16|nj2M~ԯ<{S\JJ k L8=5O6U@~GH/8;;<蝪<<ʜ]bR{U@J XƴjXP˿!հuad8ޙ'+"zyıcPiS{.7U֊Ӷf[˓SOnI5sÃaO;Ҋ>u U$ fv(M' fo{\|lӶԩǠjFko|M}"MK>7~Xzib̦9/SȟcM<:W"7YA-R'PKw = [x5sN+] lƁi!  5eJWSU:kS-1mbFe 77 lr.խH>Uhfh9^F]x?C#2v6ƴ_lc뜃0V٨5E{v_FlEW!AUb6;Y # m>)<2mP[egF$c#)ؚx1K;R 43j=1`Z>U {ͧSinQ LjH4pbo 2> (vz$ [/+psLjRlsJn9Znl.ؔ4prv(DݍG4Z~e4BdASm8x*f٪qq F^i;,~#yu` Mjh arA/<ڳ,k.'[щYb^%x:]:***H>Ek'`T:^|ɡIF&|@,w"ij_[ѳ\%#'i*OEBweϛp`-s~@ލz+p=vc6/Ю~{![́%JIdPHA/ƨ~|Y.T\=6uM4Sfi[yB{Q:2Y2{ ȶltCͼ;ElǷ!U~ME[ y-'u86g#U}h㞠>R':./}Ӈ>Cb黶埱Tr45Ge#O ֈ-n3L".CKx799cos%s HP5FLb8naTz^kSƘDX &4ocr !FM;i{/| [/fJP5kHzfsԑ\W=߭a#D zhsbO1AvNb"bj6v?f/657k=D< lϷl_4is$^jSʈW4kđq}Hħdlt^0^6گ ?Ι$!"mn 嚪&gף bSMHuh2 |&Вsx|0Y }G5o*9'2֙eG7! c~¯|#L(H]-c0~:ևYؤ U} |_ǤEf4BνJ C1U$cjV:\ٲbl,$zg~< MĪBl ZGw]((NM>d{߶sm&O,:$ܴ27/e%_YZ𑼕5]P:V_\$5H+5>57ׅӓE˚}ܤVEK#MnVٕKT~LzN -s}On)7Fw:Cro,ͮVTXL>7M>`9@6mzrtH0~ʯмFendstream endobj 92 0 obj 6394 endobj 95 0 obj <> stream x][\q&OzI8}qQ,B)8K.E!wIKku>gf_Uya0_WglGw6?O_m^ Zm<mӓWgz\IÝQNow{1q߾o?$3|{'޾Ii*\5n4w{idOѹE%/w{69#}.y3hԜq}RZxi?e1 <]œBmo0.)azK4Nނ5OFLyˎj󿝝ӣ-R s021YX$\ ׵ۆ\)kn5vN`س'U]X̤rs qyX;+R` h@I+&`՝RҮR, ;5~=Pb sCoABZocr|y4EHb ]&b&p'3p~.VnWn%(,`%4VyWa8GVTtP7gbKu!y(O0[Z EX@Tjk,!_/x6)IS/q0J¼:*CwdZۧ J2J2 hAj:ɌI=.&e%˨q'=/6evi *O\h$NNLґUjxa8yЁf /kȜ@YX\y'rT8$$$ψd#(3H UuTX sh+\`+X&<< 5 VMba`sht$:HrJdЮ8ֱ VK\#Â~\ "GɊ^W1e QT D!:ݐ@CoGM*hЛB6qnLxث.rȴ2Ї0s a}xC 'dj ڸfqL0 XdWn&#{V!]]\hD8t[?ֿlf.%!+G#wUW~qlۈG?"_R,0FQK4uoZ1pᴦ{ _̖ULG;Zb\,i|-0ԥ@qf58)av _JZy1\uzqh O6(NEbL!$S@mӰ⭨V0eQ}!CE '6 7N1IDLmbk/O\{h)SF|5ԏ%BoÖ(,${{A;!pPz:I_aN̂YjF&cb. 1Tq`dP&p b~K]=ls\7ޱ!h+rz$Pxs}n3:007v6pz&0'L㝞 KߣlB%_ !iŭ3LIfѕ^+J) ;'Bq@fyp%pE4-DtV@W>/6,8RCgap2͐M>"P\2:^9NSj)$yL3.>94Əym c=EpZnެC3^l)I@kKMNO+GjyJe] %I%1; AW), "zGy!KfIO'5!s+^Ra 5y3}&QpmKc @jk93.C=W6l2&H ٌ) 0"79Xm)R&E0yv\(?K4K:ߝaP'0:E}W࢘\H&G+ ɐ&%uj4~BI4Si4{M)]/Эra4ۨ(Z@h0`HJPq SpޔMjab)*Y` PmIYbTtI,]D C6x̒/)4~27fUEh!s9?n^ S wi(R#$hCb%'fl@ɅB=aA:E}wooï?l4d sJC š]|4<)Ao;׆Dp^OJ`psXԅAQPe!U@`I-qlQZ0}Aɦ_w- (nDݼ`.,lCeZ\/>*+ eAQ ."4AU`k:3pSxهFϊzŚ?R,SFUmJO 'y$ЖXYT*rha-~pW6~t5j(qZ5kJ?UC㫡چOBZT슣wf3}~ȣ'/7Ioxol|2zCEshPYh|nj1l4ѴX!bvpxr2?猦>l),5Ȱ6P WӺ‰miGxCO+Io4 5%X-7Xahzg.i8WM&a9,#gE=xPCYRV‰ IsS yLs9YWסp,o2ˈ&y%l q%rhqd1\,> D# J83Ji4;AyVپm02@W٠ۤ&#KTtfGGFC^XPUBI{xVEuQѐBu [eX"Vl%}[Z>I|QAQJ[Jخ;u&+3"ga/Gg^8nଡQ1aDȩ^WF9hN?a4X!V%j09"+~[˨ E@Z hf#gwP&|ק˦ hbmEorvxk2ƅ<0J9rqRjd< w${a_P{9az\vcH[yݩXy"6- 5:Ҭ?6| T(v t@M+q*I.n )F6g׌si/fYB2绅wG>M&Ҟ厤DZ=jf04a;n,-}Z<œx3YH:88E28do2G{m+",8{(2e<6׬ޔh A4){hʋDŠa*\y Ꞑ߱8)}<&ڀGJ"f?veQeOlWP$KtD:\˯N?I&%]W2 yiѺDxB, :\81A ӅCӴ?* rq R \eE/sۈL\ N#t'i[$pIuFVUgcaч8H>{ ̚q R,uۤ:c4^rgѿCu5Nn>f-DW"aWAt,(5hoYsm Na> stream x\I\qV8|?`aD?ԾP" L`@ zg֚Y^7.v0y]]KV._nSS?zq"NxjRIf Ax1 8ݓ[wxOoT}+=ɝ¹i" H%\g"qOdiߣNxD'',EStgw{}d2.dzg !l=էQ{z۫%ٛ:R}~~=NU{x}mf7/Q×Geԋ!͂ckq'!E:1TNILttNro˟u#miI'JO}Oۉҁt/y)] V_9C5z|vζ}%ۿ90{xP绽Bî>|v WT@g!^%?%{WZӹ2e}j7]dP_P3: sJ/v8l|L+R&2Fm~H赦7Lz&8`MU#Mv|[i`@}Sqk̵ (/N 57M@aD5`ARl}dQg/(pj,hB$U; ݈%D_* ܩ{$E :3`!xA,V:ejmAs<}؇MVu|p ?. P9A9TN].¡U m#BI_XjeҹtXtLAm;X"7Ukya؆PF P|E<.VtBc/C!-Dk*/v.:lz Z3(-Nh2`-!]2CYQˌNrTyߙd`r*0j&}j$7r m#H&:U[Z(`ݦĨ⁲ԏ(Ji@ZͶ6T2p0=fύZ/I6x"x~V{ bcΩsՁZԖ+ՁsW|8:@&qd֣fG^?3^e ftFG[ pDk?%?GufO^ 7%TMJitAǘ96HL Wq]5:5Q-ĹA &mOvLƶx5k:Py\~Z>jqcrCqnd)t1wU-lppnR|D \SD"N3F>}O~Y\yfɬm; J] ;RDwP_`^ySMtfE~XvV^)Cx3FJAf^?_u7 7( ztСH,?g]|U._p& -@hFyi~*;v|w1|iu}XHBvPcHo{7 ^2yFP 6&tFBxW PVy(͠Y6؃(6yGn۷ |cYZW)3MEM0|َ,x>ĺ݃j`&NYYW8`mɘ\8f0SGx<# t!NIޢ5G=Xd#[w]l߆M9]CڣV<G&EO|.Z$wij6خ[Y[￶Us);N;0vhΑptt!$Hԯ~Z-[e6?%ȃ`g` Jq 7e ?|1 3ƪ[_.fw"@݉ X?<لᩍ L]ԝ>:35̔{ߓ u8ELL%!l ${:vV٭f[QB՟a^IE97̣U .QkRLI0* 8E=4ރ]g1{l`,gtJ<?aR iqfQ\+XݑL[iTkD?0p֥ /C]q&\Egw H.vZ8[tYҠ[΄?;D-!*X<q,#;' 379#ou8(euֽ#rѳ<Oh^INj7y,+Ko<]XY"d@1hJY* 3x--"%ť>[P2Ɩ"+aZ5p`o(1NUid;@Dr|G ]H<,P?:1%w BXJƼM)d#@uʙ})ϻOVmXe:raΠZ3Abᐯݶ@Fv*ݹO=zG0R$SMŗg`GłM$52$y~CCu`Dldh F&iˍC%<| mHE%uoPi@T-F x(#˵&Ihof7gmG`&+gQg$|U\V< Mbp֎OLet[HIM}XI-l9w-I@ gy({IlY![G aQj\~sd\N ת(-tY vVy_9ı@A "r7:7i)A{[{fI ]]0eHtiۈvg~IfZ\y)c|7ʋֲ;܀j\hU^JI{*`%!H ;pc mh Ӄa#Yfܲy{Gތs(of_riܘ*Te[ JۅdF+MAQʨI0t~+nG/Y++xx? !aC=Va0Yӳr3labi-Աj鏲85LJӳ4+ N8f ŵ):eqH+\-/`4}!%/蚲4~o7 2~}; 09JR%dMe;PhVIbI Ĉ]JYZn@c9+>( |h,X4Փgi+5>s73s9Yi'UG! XAp4:u5^pI/4Y5`\_\oaZNm{kѕ7Poi4hJR!#GoV/\`]4F +xE[|B6/j0nE䗜mn8uJdJOSu`ޒu>ʽ+ Y9_tC‘Ϳp;o{IIy@BaQ`Aˍ:1aՄ1=70%g!\4c ro C[,8kr8irܮȝW* NJ}0b*03(3D$iӗb7TOmMo{|锋X0_>?/endstream endobj 100 0 obj 6286 endobj 103 0 obj <> stream x\isG泊q+|nREB L%dɒ8sN\YMQog>gi}'O.o9&r/)AlgbdUͤǻC1yٞѓzN9';.>Ik _7r>7W81LۛR:=Mu{sb !H)l=J itz? 6w뼰vNx{!I֣ 6&*88A|W'%4+SQn{B<9_Ϊ95;e !H{xhh?,)gʓ11y:,ڏÏӼ`M9;ɛ"ʁ FUyڌ8+8q'#) ,6Tjs(`-;˥T1b]'Y,+Am o_@ͳ'((/aSd,ʌNQґ 5W%hXC#&cdE@ѫ'] 78P+GAY0(MZXGD2 RU UcM%8vo" #j/djvdS_lҌ̠ܖ.Ϡ  3X*p$%ojPAk{nz*M*n6xQAT0e]&NB%9o/dwWuw'N3nW'}%dau[}o)E=+Cձ , @c^SoIQ  TFC:* 'U&<b, z!y 6#F׋:r<{i80b^沗M$,}y X$Gw4r)f̐ѴC9 DYwu@d3ٴg33}0|g.2ͱiå)LG)աt9g5xRf;tNeQ}5%gʩ ا"`AtJ pP1dﭑ\ ;;{okt-]ˤ`F\Ԁγ6^q|vt7@>f1ROcasm|O?g7_'<S`DذNʆ+s觃e"i#,Dsdm͞-_q,A v >UIG,0P-dfBp EaVd>q[çQwhdrlGLH`isoϽֈ޻Ї@l^KG>8-C4`se ~(-F7dktyfbӔK?a Xik!_sj̮K9/iѢw* U*~F$Z= g.($HR-#Db$VoF.'ShjI<3 ytknepfٗN d%IX򸱚GD=I 6 gmdSD鷠 3 HOp+Z)Z,$ +xt)AGm{goK}Pr>xg2`UQ@tK9se/jBW*ga+#Zo̊m\a5Rȑ5|s`йI].9?cjVq_2˚gZ{ \(2&tX:jgK^eLV %k"T-y^i2IX ÃY%|ɊD#Ϲ. ]&.ú]pV`5x:m򬃐0 -(CxxxQsM١Ie$UmHmWGtvبzuc Y7BCdu$ ˦5=yNq%L"qMX ]+!9d8&BTgMtuJb6nU>L2L}uaLn7KVSm!Vd!$.XgĔ z]$"< =! {eF ̀8|o!:nP ,oܑ1]'Az&{cYUݺlzPu(@ t(`I.9RVRZTS."y}-\X闛'kB) }ɘc<"C[&TyVuQ.Z28WK<0b&`Tzv8Grr)h W*5a>OI"(I"շ3uJNެ2ttceI%&]MO"eseH. :QRZlZ&$3\ N{шt,;vD޷yj`{l0߅yY$YO!sJj).Uѹv, ֺY’ [zԣ*MkoX+=_F5Io}՗ 325r5EeDvZm[ER(uOyܥjE4X!P'`-kh;r`sNq6N:hw"SJaH9wq}z^&oFs VtAQ4{VM6D"ty VqI}NiyHa3niBnX+gJZOЛΖM&Mrx%&"M>KΫп~,:)=>/]g LfDg$$ $ه4?0 L;3 g( MR~SAEG1^_JE H>iM,x',F!/"0ߓj o$ЬVʡ\E+{/6O9GAxP%(`qaK=؅L̊R%ĈFj=JpFrlȷX 讜ԛ"Ig)ai:Z:v_sBqq~6^o(.vN)F8SfQ19hw,k[H`޲z7y+FfEִaB\\rK\uhkE|-ҭvӮ ֿaS"6x3H; }m+- ڶ4yڶzZCXČz+ |Yy߁A.'$+8I1D2Dk@TSm댕Xq)o b&orgl${?5`η7U^C}9ZE=߭wVY66۳5Qq5m*h _a{$42m>r4rZJ(')de*@}o\6}Ea>{itNrzJRI o.Sr%sh(ڐ4zz0i"GU4ÈXvr^bͦ``6Ή_KZi՟|q_%Qendstream endobj 104 0 obj 4702 endobj 107 0 obj <> stream x[Y@?b L}d%V$Il?hO*nH+!&dՒ |_{t`˳ū%\ .wf.j;>y׷'.bk<)ygϗ\u"#A2~PLŖ[Zest|r;h<|yp ;4N-.?{r//z7h qV? t6L,Y8yUFWx#^7gx$^?pcl-^ y7 -7j%Jq<߳E%y؞%wHfv˹XkzujÚ^ q3pVY{ c,2%aHO n Y) []-u Rv,E3sg"8hA46;B6닖 (\qcz |yzt)V Ț:8FtœH_YGgTh==Z)QZ[."MuwM/]gExplp=R[TD)|\M1I$z5R][5F){mʃa@bAaBIR~<XFV\n`@wkP1:vdXPwf<r6'Jx`H90=0/ieYz" W% -]TAJjާrb[tƿfE[h$VD2+]S]3h3N ~='G^#~ e:6\3LY.6^͎7 3xSZOe[\Ee3UXD*Y]GYaL7oG=2K1#|2g}i4_AB+1>!}:5^Yjώlm6ḱAXF4 NoAa(:ʠts-3 ށdcmKAK| ~h$ iG'^~|!Wba(",!@Fs` X8pCӦ> 캎SC0[\}^Љ'$*Z),Ӛe3NO*A*v7 L^8s~^48C2TbDVxyF(7Fl][G! W1krfAc2GᗞS%ZI ٍ{!b+|,\1pcƆ,y7GnUH0gXޜCU"E}=~D2@.%[c"K~mAsH14HQNvǰ5z \LE:=\PQ2P17g _qڎ; %mtHJގ{@}رtsoGVf&CO2A0N4ͮ8ME‰-ƈy 4pY!X{ez҉/bbF@<?:XK{(#'`dPݹ&*F6Zb6dBB|wwMo2CKv)0v 볊mAWDO]xU]6FҩN=^DR{<-A_ԣVQQYJ_{r[{qFgR"pac^;CyYՏp6 w6rMlKVw TL6|63au=Uym.8tUО7xASQGQɖ cfo6D'}'kK*-A C4^7q!cVVn6;Z^T'}^UγC:n$j83{L*e<)c3qG8\o1gT rog wkG^ %¶?bpJb(qtuT;A=ɍji!Ph-\A'=uw($`k9)zB0>9•v*X1xaVhҖ4X έl(O羨3~Q1 7Հl Ճ!*g:օf3LHZG2,%ӈ綅;(kb6 ӡ.ɓm- (77wQ6_COzof#ē06l!HgoB7lU-ŰjX ȞlTr0ʮ&ǰ\ϙ]nGÜi{z`mʚp> stream x\Ys3+߰9vShp*[Qd%J|CJ)E⡃_ncGH2;;4ƼZ[_μzaUӽ_1 G&7;a'\VNZ8VMwX6ͮԳ^nvef}Jo6pLY#ZĜL'a 05ڟ~Αvv#&k>ci 0g)\~uYH_BpS'YkAoj_8l||8ft.ww%'R#'d{o.<V\ZZ3cJId!]:&L~֟g>Iô?zV Q E`-lg\; Sr=*4cG'&]sTr=1_8z$CPA.3/MB9aGbbL#.Ib M ޶ *]kdgPO. $!ƛTSXXN"#2?9>`ԞՊs^%81xQbES' kC@1G@=rՊ &'LÂ7frlh޾>?ܹ݊ |}_Vyhc~ ^Hӡ`WjۑgL\GIEy"p2U^?F=xg׻ޱ)\~.~TMN}d f̜HgM8뜵z_݁YQC\fqugYg8\)[Ǯ_h 2Q]4Y ${/0 a$]F/c<9Avq@C6$ҀIB~0iuQTWxpy˱A/{ȐW? ufxL23F}3XZ3&ifR0&-/h?A;N1Bls9/֭ Kp6*VKxDq rVn>4>(@qU[EyBYa,|>Qrp$z5 Ɇeid˫vEu $SAE&wVA4'WEÇbW^dI*o\_G0?oNF9YL\Bof`}bm1Js&#ٟyg2h:{ +ucH~!cq.~3Z$M-"hPN1|PIi/0w!uߔyM.ZQ'`g[P3wDnƩ͞滝'>aX߭Mr"F ^)9tqy VHI:]}/Q3;_4@epQÞhb̪r#' bGh4ֱ`iJ3$&_#󏊐:Ckmϕ,ƲIn>赮(EҫTc T ǥ {#q /m烂ǨƱ"%|)c$Sq7 \|I]a:}xO)Ҁ/;%Hp媰r*ըp|ƏQJо$D dHb 4ujF6>;SUMWC,FSHQih&bdYd$ 'w@qGh y ӌb%gi Ŕ! b?%jթ/O\AAK +ɞh#pi .ҳz<+ǝxm'dO`/GCdRGjn>x7v>` #OʙFhHNH@v-%g ]svW4pt?3ge1q)2{ZxiU-ZEIpYjϷeDDKvU.C2p#%=F" 2.~y9) d)TG:._mʇ˩ 軏Zt4ANB4SH^)@{: 2sXfsZm\@/ 1ϑG3-ZB9DYQ/" "Eh?|]kGB?p#X3ɳgϮiPڣBĖ:.HoSK3Ly.2> `AȝCjDA)r)y JO*B\J- p`eyd;6NQsS|EJb(Zm1H$eByFXH]X Te{J|WHޜ*5$NDNTBc`MGb֚ ,XoAz:@Ip KPP(qFSNgaU$ 3 LVZSddD^ \.]Kz,=Ykku( 0hL8ߐ(F4ƩMhK0* Q\LJIb)Vsr&qCh \'=^xzu~J[35k6r (%e\0?/Q|(9\(╜ͭ6\CF, 5vTARGa"7Q QԐU:UP5#$*bmZBiyiHe'44||1Z*aV qs&qΙU%N '#p[ʮ"_u$ 87$aQNN~y1ֲX}R9_x$u J1 $@ch> B.MAV8Z )jMùS+YHA=*$"&L!5摞Ac+p/v.ve@߂Ɓ_*.d@VC$3M7k+=6R,ԤcIsL Ny`~'L2@@@b675b2UxObtS/Κ3 ū|apP/'2 i "2ztH FŇ:61U՝QkkՈU /?xsvL\uPm*UK\Uc6,R^ +8@>Q+ѤX4%z(byZƽZ[|;/D^@ =ZJdKĆ&p58zFUDGǎ_a T5'UfZ# eg#6fX/  D^ºhczo9 >[!LPUvdp )CAۛNF&:֙}/! F.7Z!rc$cEֺ^#Yl@wuHi%ķ:e =E~KFXQ)uN[? ‰q{_GӨRذQ6}:אoqpcZd $nXAY꽤PGC)}`VN z>M4ݰ K ס,2U#ɚ~sJq9x##񋖈K;(E?+XogISnkeK[2ßQB!/\.:h欻Mrp qV. \s;"3ȢHےarKI*m:Enלoae] rnhrHa /\H1sj {{ +LTa3Q횛1u" M=egh\gI[諼kb~|2*V|/cjցch3pi"KEM "lJ}Hrd׭yblt{_mq8,#uvMZ-#hG)yi\ay K2-QjՖ.& /4pHmzSb /(%JJ77X)LXXr&ڑ iR_Xzcx۹3_U듐.xHHՊ 6lWYl`7MSin‰p/lѱL})/c3j%LMCh7дT"a񐴪.驉)TfVQCw+?bacj[k 97X|wV[(R`Jo>EF8 )=^^K*'yfo9/vfD ᣦM* ^QU)N,/ K};Xv⤎t{~ } a;ްhф ~3eK>09Wߕ70SrN]ojJr1`ѕB^%V³3-\s?(Oendstream endobj 112 0 obj 5327 endobj 115 0 obj <> stream x]Ys]q3rµ*ZeR)'$T( _gΜ R.Kg^Fovb;x}"v qDҝ]ݧg',QD;{~^;hcع`vgO{q01R_N\Pé&9pjMTojé\.{y8 G j5 O8ih'\^BZ&x#ټ⓭/1X⢄0- ]|'K^z .RJi~tar@3)d._~ֵ__NTPv)l 5n?c0AQXvN/ʽL* &BEx.V(i  E% ϑZyԙ) N N%*ge63E" 4X yH=)a$6&e0e4֏hRTdhCwq0Zt HNE:7@r e3˞raQ;jJqnqB)+hSM6IEQnAKWa^"~?2p X4E^>G !N%8btz1Ӷ >*{8!sV(?zݬpTiu" 3!j bMeO?ĢBt4,iNPB jWfj(Z_Falcfn[5o6pq+/BE'as?*5^=pI)cNde"/n hY$~„$@/{/Vڮ#JNd+{uԍ+9r{|?r #s|HQ`i3~9Sx]dW & Q)0 p(,B$Mlmcm gHU3p TaU2dchwn4cz%1̪<ʔe(ԊXnPĄ\MgMSFVpOEOV͝#jgnпx!=;mϱo=*x0nXY$`4e>.:>…l܉ Q9%---M4@kKx''0rc=Ɵm4&V_dD`Bmd&9d.N,BvV' >E7 άdXYRz&'( czHW]g$bQ6Zde)ϚE g kE&{`HJ;૾"*fg')ЈxD+O-+F8X!KPxUҶw[ZQ ML ءyۍ\[r$l02yL\oeM*̕",M±kց'q/'̦PpMRI)C@npipB@0޾Ejm=Vwa20b.s05<Ӎ (`dKN0>=7 $=O ]mqRf ,P+cpTaZ<gp/,*-t@zo!#CGTrK?Ya3Ѓ"3UITn\[` )|0+^X 薁]遌lRHZ" k 1zha)IBc/I keؗ90 ¡ހW'Q2S6Ye" 2L)9%]㖊p </Z2(00\%/_2q x؎*xVx!͓H O(YFt{!>10K>V`S,>_c%x;mB%sݞ= n I9RsExC^$a&fVa}0TГ :Af}dĀm([ĵYvd"Ac a"f\9.zy,Z_i>;d /fVC+J7G |S04綫{U.)M+XQ8S)hT8VwV ocqj6edjðcTvLr^ >Z7K"ii͂q/w3:@a4Gd0ާ2XKTB^5 #ZQg%ms&DgZ|ĚRrfh$oEw%|zg'!ss얬S-Dq)B#aVUHK:R@ ~iJ =Z.Pz2c6̘a0ϧÍ!;JAGcf_6%aC5Ҧ̊oXL= E#B\5LX~6C(Y7U~I5i!hx `~=CZKr+ӅM0_3 8O@h-xxٗaW#ě(fC9j,+`* &;#8}~W/>*$/iON__/~W'g¤):>Ǚ~6SZ'; b6ziyRRXN{.nOi7嬰]\D!}kLO#XZpD[0 {K~ w{fgW|Yy[v 6tfBi$SO\s挒lyT}W[w_oaӫJyyt$Ev;8PWbSSy`7y^MՋT/~.~Y/~.~V/_l?}:xʙhJ>Ļi\JbJ̞f_?/ŏu<:Mބڊr1v1ݫzGdWUiUJuG%8Wb ,vRry*,DoyFx}/bēy*Mt\Bic5 mxOID|\'6@0~*;K*O5t=Lu6&z.ؘW81`i.]7K`մ[ұ|_1%, 66%"8ԩ!E@lVCLzucdMkDxr|eQ>C>yz|32ԞLI e!+{PHNQEi[fT҃Ⱦ /sWڰ.a$4anSt]5g)ug+au`o6+Is5v(%X.םq6ғ )vgvT]OZ?a݈M5u^p@ ~vfZ8ꍡi./WfU׫f6u6Rh&ۻa²Pl}C|UүXk,2u<]2)[T5]cKd~D[S+̃_A.kd#[MKRIf;L֝īiEEu7#/Cydxrۖb 96y7NܤNxٍ30_u1|.߈gȂ,Ţ0 Vi81ic(DQLj0{]<&19i%}$ƶ%vٱ5EQTo?:j8 Qr3܍[솔jf7Xi(<ꕪ`E=>J&9ԅxJEY>>2i@2lzCx|(wd>|1u9MC7w .r9hZ:̳v\A+(] u5ݎ`-!&`1r_]ueQ@U/ Q!U'͟]5i 㙍ïh6LdaW'V .ȥ8\SJ#3":sjgfM2`rK~&";ZXv< ItPw`k#/4D,y9[dyqQ?gx͡ј7G"c>LR#E]L-Ԉ9"F)f7rܯ#4{}P9vڄgR>p K.j2Pəu4!bO/ADl(;u9 @;Nhط;V:;V@ 좳KҰ"vbYJ]KJ,ℍcŽ&?űs"TtO"-aQXҭSx@c`(_"QV#`t5Y <4'"}>D&WB/t3ʦX<<.Uh76U1r&[Rxv.[T:6꙼2064A SH\U跂JJܕiٚBF ҫ$!VX83I"%n(mrj*iƙKtnx} 5O>!<&u8%>`7D7흛$S*,͕W3*5MHt*S4GT UxPׂ:2G%i&( ;:#7pT\0nYxozӀ>%4˜6R<}ecgC]UiqOu Mi&MӐ(/ &}8Mؕp3g$g (7-N2Fyq~&P*0RW ࠸Ac8o`dQ|O emKfbil V©^!UmF_8)UC>SY t\#0Ka[0:DFX2t 젖}Hyv"ev}}򑍰doH")C?kዓK~endstream endobj 116 0 obj 7188 endobj 121 0 obj <> stream x]Yq z캫Ѓ( K];YP0@ f2ϮE]_?ϋϮTO֤͒S\IG}՟o>ݚ%DONn֯ӓ^BɄ[~]Ůz,1cn>>Y8Ui}.ؤoxp)gnN&.u2_ieo^n} ~iVx8#xXh_ϰa 7elr7/ہ8\u7+\n5y0c/+qeGr১<+E%r%T/ʩzlXEtMZ6&UsqhE0x?nۣ*W\uyĠDH$ |G|#1T0~2fh8„ Ӳ*Su,V)1pr7޴ℽՃx&qXW:,)* O`5squ*.:M=h^\r$qUeH}zIK/ɯ?h%cQ Gy.+ͅTuNJ\}}!ի퇍ݺkSa{2Wf{Qf÷p6Y-;ֿ{=]ΦQ @VjAQ̀#XA 8e%CFWآkPKD|G9['&ApNPD%4Z; fӸ_XÌe}w_Ep$Q--Ga,]a|/i%Ȑ1LQN^\q,1Ps7&aŭgo=Iy)WܾB&TV# {[ }M9P}v/jF@" cihh-)0im@~;$iVVm7`"qzԤn39s0˯u U}UQ{z IZ»a~S4!poIp u'U}CG} AI:3KѶUn >l!G>J WE*$ۏ{85Vg輴OpG-F1U2#uIst`Cncz܎6>~!K=NS},c 06tI4`}M[_2sn`l&jqYcgI]їzd& Ƿ?'vf+PAň0~fI%V@ %$RʠԸ]ˑ%} gQi<KߙvW'>t1KM*/yAEu jr̤4\_K \mA LT^K Gatnr(H \IR|kqNvgCz3*Ux:I3K +FB/"#w~7rZq^'$W﷪3ߚ)BO;Lk0cC!D?bb<+, $_!6CeIdqI #%muKk5 Kp3!|AOsDt/^<'r{\_J##MD'EQLƪ(jgs~IԿhd\y'e\?-[h+;Q?/l;20/vČ_Ȋ`&nfmj`3K1]vImCэ\ ieڈ_U/%j֑T֧Fn:5.n~)]-)/ny1M&/RT[e+XklM1Uq,;QrYQqdg1y>4cV{pͷoSqc Dk_?]5-D#@0 # )2-3~u$Bg6JGSP PTb>@s };brcBItJ2CO[Wv)怑lv!fcҦMF s<o j w7"CC~1 9YyjnB+hnv2L\z`wl\t=yz\̠r>ٓO(98 eЖ?{Us]E81D$ |;?/ s6"hR\x{mߓnT*!5 th_4K-=!G &){׻I|߭@n}~n2DY~bn?]p^D10{.[gNZ2~} ̙9f~di1 70. [y˿q ;TEFGlPv-9 bHf x=9ڞKpη931Aز0f!^^X$#C8Гnxb;êbߙ5=^, -\iحa~X8fkOJѐ&EA L) B~ɍ0PV^Ba\E 'ge=<2c#bm@IܚfwtHe'FpY9T%?ŵaY.n'85!gcٸO?&^ ^i?MbGiȼ-wtEe>903{n ƼJ1!1D|^ex:-r\P,]y9W+*Ѹό8pzDLAjC&VmkvG$+^?QG&nYG^a]iKɅ;zao>r|q[?py0YliNap=R):"[_̐8fR*-8F(%,$pP:DF!Vav9;QوB]y b'֔  nŸ"Zow$ U;R?8q瘝E/#16r)^1.Gg&j).( |{i v'[]kH)ŊD|{0b KQM`Rdc$1"Juȓ9#eyįBk)sSU+ENO;F3U^odقb3s86^cm_.J1댡LPKч0{CpI$)Hw2qC :yyCpϵ(riJY_l [_F_1PSzէsT-U=\"Z3ǵhEUR'h/__>//lXrG $c>n}㪔%`X  JLb /Z`tjqVMO:U8ٶ3'NZDZ6V֮Q7(<"ysu1;JįDP( Ăp嚕5ʻrX [YQ+UߚLyABJg(N]<ܾ70Oj7>31BV޹E,8, hE]z cA,af<33|Sf|TB~;`8$܋iXaVBN.aO F[_gH?RT7f>R1 ہ IGD{my eLmoڷ6H{Ёo;!`0IkNbm4)x-01 g ;YOɂB»g${uP$l]J֋7GX4LVVR^zSr +̮w˺&6ޖluSSe"` 8Tm)W!@TCQPh$:Pe)v›d#Znu:[#^&hl67"qsiѴ? *l cD`BtSZIٜ rŠysag%^C̒$*iA(hk &iQ;*Cʣ0ɃBc .QRjhV6m֊YM>7@ƥ\BtqB2g6+=o:A CDq A^u9z6ˏ#Q gL1[m@qr##CLӜF]pG@k/1?R_i*yWzйf'4C pN§%Ɛ04ZK0pLP)Z)4W1l݌Z{:7*>W{?ߊ׈FBD(XJ^wV,TEh`椼ɓU Ei)rU8T^*ÌpB2 U#Ф&üE bcĺ.|GkpF]i_>P>[Z?ZX,Ol_uqY@>eK~3Fm(M*+z"hޯ,4k%%yIJ}9Dzs@c'Uˏm/tk%O ҦAx(A/\?@Vu/yRZ!#-N̙r 3HCHŬţPSm+.:JlK `쑖R<6X]܂Lw)3DkdSiGGy2soVOMʄ7@KjAX`MqEh$FK˺fh*[31BLg#P(I}G Y ܙR!P^CCWӫ_}vm lk_W|/?;VW ~ }t׿P}MC 'St ұkvW l1${aN^haqI(W6b#YqF%b6ndV,)[Ytm465@&A{J a fFHRfv+eRUH6|\\,0?=S.Ha!mgv_ 4쥦im)1fUNÑ&轶o85UXor7DԾV j5}yd cBS|/sWN``bEŚe=8M7޴iҰ.[wMYd8yM! ܑGy\ "ݮhD^e0J Q昖S9=,ahk6WK}hX+L*Э*Χd6mĹ}޾1\ƍ"Dn"l5aKrUHDm=mG6ftN͍o~6UdXM~5zO)C)ͯ+ m8^V"X$DâHCz2gh/Ի"O$cuk}aX>ѽ H>77A\CO!VHRc+f?!{B )l \냾^PBM2rwY=2 r؉HRY=U>ECMcӨ} po|F$}uķB4TfYMkvDِ&7GنADE<ʫlA}S=:1-2 9RN˲(7Y}9ކk; -\q>ek$l׃BD7}os/oo_?RߩqqhG#Z#rI]nsZUy?BgjGe$/uL" |$6 x Zgi@Wqk=!oԞښ32FcT'7_*mz2j{+Dz_:gzwm4i k͠8W4Җw) n}yb 瀮JN>P'Cf@ᮺ $BaAF83ڱ;Z~X%Ŧ3S`׾^JTX v]tV)ªUKQoAƞ3 Ǿ~nNendstream endobj 122 0 obj 7525 endobj 125 0 obj <> stream x][őY~Ą_vNtݫL`X1 cI#I#7.]YttNwuUV^Tw.Wz; <{yPYҚ.m2ś/}tї_^7kř\.*~Ͳ&h1WwK|\põHڻrH+ Bj{l 66OKeX[I!7w|m]LA5Ы~QWh#ng?=nE[uZzZU)X5 qI/O/_~}y}z%}dt~?>쬉Wo_GWC- aҐs*<7Wm 5Tڀx/@Dkɕwe _+m؇L/G=D4yFiܝaŭcBfLŀ\}\dX#~@>״XTfY]eWB'|ߗea?,,`fIӱgQ#:]Yx+}Eqץ}p=?āA`Ae+l @&4xA#r0D]k_B΅➩Lg;0u/Lվ @c%y R <7n`3TG9$u{nlⳃBklצ~˔Fs5tAӡpfyւpF&jf02i''gi8[OCBmLc6$VFIU a m#;;uqE\ՠ?v々Q)بt5"7C8ǹ030YcA;sل3B)_Y(d5m(-+Y"ڄ؝v^܌r︅{uwqUaML?:4\%b1*8k7- pD\,faЪ;Eqx(FS0lY``T #Qq-X<Ef ܻX4p;1TBF]k:Ts&$K0^Ah6m\KZy7Jb I(ǃc-;qp/̐ ,Ԕ[( OŽ2f +Ph!295@ 1+ p |4W''%|@<ɵNHYLREilXvͩC_p1uC ԂäxuˊUfӊʖwjB.?2xQ¹aU BWOB>8պrK%D cK-!V^@ Dcc#Df="%/3;Xk*1'Hcľ>0pWf5<%.V`mIՁc\P4#8*_9X "&S/LBcy4xpVy|C1W2Cyj$pZMտEcʤ*y4fla3UY fG4ln}D`܌pU:BzNk*B9\a}P*qt)5|9% r`SIthub #6ÿS }O33Q/aU@|%۬vPZ04[XSlޫ9J 4r HK8Lwxګwra_sRHBjON~2];PndQ%;fL8UmA1Us)֍{H@0DPu\gU 1nHzރnL6Pyvh|. bplGgYBdBDŽFcVp{o$!O@KRg`l5 60DHv;LMY5ښlJ\PI1G wѪ4`"e.li1zɕ$CՆw{[R]RmR|fV?XBn`%oiW´xê` Z d/++r-TZcr32¥|+ZC&v:ϊB&Mru[X b"$JR%,D)^fe G#лh)o ԛɎ;#d>nHbG{LErº⭺cBZusKw#V4x z/cQ<  `1Ӑ@\RxƉeL >`nW+R/:c&ֆ\0ϳF,g^ceMTU_O~+j' )r~d-aqŚimH U4Tpת<x`PNNJ&FvH$iUHMۄ[0 pFjh!Py+ %ZZsz!1LǂT ~"܀u<Ė2_.]ŒN[PEu*OvIy̬DNVw6p#BaRDPuέ`LF'Z'Ӱ+y<&ػ Y(ƙW~Os,o.Td51C.6Dؓ 531|-OCY;4|ܳ5mT l KA*k`!pNҧYgVE܏"ʆ]z׎h5h4]]֢ #$׶&'!%ڌS,U$~K@2h8vA:΃O۱g jrF7e0䔐u ^টBg05ܳ1Fјѝ=5yVT?8&hu R)HD]9=dr8f lE L\,Nı6r-&yVH)1X7 XLj[5tR0 w(b9a&mNf+pie]-5HcyFc0^!J1YI_XM_މJ:nD OtoKIN||U}9YQ*o,{㵯>j^.-G蹅[}o3b] <wMi!UhIov~jTxNF>A>->d<~VJ`<&PhCܼ{*%BJl'r!H|zvp<TTβo-ɧImGƷĬCP/B1kB18;چ8,*GHל0s?(kkShf))O5s =i{M5ɘ0k(1&K iaXtym#.,eA/4ܛ`"sMs*H)N[5NCKonFkFƭQ鉓uR<; i},pܺfYҘTo.7S ʌT5x ;&?Naz6%\*69`1_lГEaq0B``Nx8.my2HռcË U]:0 T[6Wٺnw>wVhWնc}=/sTKݬ-gצڇ|ߦ9" 9V"dzU&%烹>NsCyɉIvB},'XqwЬ=6r3"3J2g*fYI_d!ۚkvQn|LmkyV@(&xsv>iJC\niʊ&N*iwB'/tݥ^-KX~Ize`pÛ/>3G {p/AY8m>O//}![ҵ N厓vgߗr lxUoxn;R~:t݇ur!<,W|Aϰk"6L֑]) Coʓ@4 6#Evxq3Za?ɉ!W3һ$ͧwyNؤvQK[PkԴ [$?h=Sa}niqӢ@#c1/17hr5oak>Gl`nحj͖gݠO;1Ȱuw_A߰w3+Kf-/iVUsÃ"7Oroendstream endobj 126 0 obj 7197 endobj 129 0 obj <> stream x]Yqvq!+;uW鍤I [K._:3g@3=ueV7W39=Gg<œ U)\|qtΩ k.:\xMyw`1ri|Z6].B0wsgI;}ٺ߳07\\.AKx'%u#/>\m]6/ӷq[38XJrGcߤژ5`w|ެ[ǙYât }tu&>֓}8N͓T5ֽxDFG;]Ѿѓ!:6~~V~ Òma: *h]Вr]>v~m6i9 pI74}*ϮI?k6˻ºr3-}ruޠ'}u_x "k:Dp_ ˯Rm\ b1%Z[٦cQ}}gߜ,n/$nzE=/_zzO>O/٣$ML7Q ydO1Gʤvfo4[jq/Gkbff|v|$=܎מm_OG?o6!=kuqLk&*-Mdb_\2ENmn#t?UѳND)3Y;ԙ&j'XW2KUTfүvj3xR*6"{"}5AXxX 2xqDjS8ؠۓ@-E/&?~ŷL*kT5౵)+gYY'涘)c2FeY{>:J}h' _{C2L?&G_3@U#*<7Z֙ i| vEuMT43\csHD\*Ѕ"({SZirlQRU pHk]  Rd6f3;iڧB)&mAjK|S>0+NW67\ϔYgoTN2;n=JL`^T8 y: l4akKqR'Bќ#6L;ULFUY*3bgmZDy7 (Y`\'>OR%ŎbOab YX~;Fm}PQYڪZ"+nՔe<[/^x~#]QmffiUZ0TE<3 8 ЇCR/Q5L/kam+ƮCkf&(u!G@L_7e;bE숆YxӤdoh"e{  iȲQe*q:$|(4ĠNYU DxZg" ׵Bm8+6MB&ٮ2gPU2fd=z Wę3L@1zxh-r;"8O*DA +u2&ܘ%_W*h pYx!z!Cw%Hv2l %m Ԟ]= #zĀ?alB\`1)=*`]c#p Daz^ pYF iGi61Ђ70:{ uM.kTf;}% _;)WC~8x&#gh+ոXQ+vEMQ6DvX'<`O>@v7^jvX-U~c|/KxZJδv/Ïz}l[|?mW"??a${9] ?TS Px7#iP|rp`5zwOݟ%@a,-l((~49j}4ͻq3>19yjUy;& 5h2UD6ɓtUNQ6(&7!n^;1 Qrpp)p[DD2!X1䴅=U%Rp^dRƻԺr )!PX%nm7$7Aj=z{b }\螊>0G nl J txӪh dW"'@0k:;?Ye߉0%ֲBk(5]ޣ7Fp)ևOؾVn)%D'8w&mVGkTG}Ne)~ݬ"p~;Q_yU=& sim T]u˼ p0d >\IJ1ga;Ǧl$ZNSbBP \bj| mW(T@cco$Ǟ@8IM2"^Qw`%H=H "n1t&G9?5Ѫ= #UFc3QVƅ, `Z˂ jOSߑ:xPL1@c=zм^!p11Y5ខLUXGy@\2!PJ_`u^uIHmc .ӳ:" 1_es*P,t݋ΖQh'bHG_.L.(6^A fmÿm>o(],OKFT2ZOWcŽO]uQhyȕ)L~ *eUϝ-4,OƊI-\42_W#pUG1sb_LLjY`mEdɒƛ;;z'NW5\&d(\gˊ-/ !#z$,Moɮn G` S=ÊC↪d4}* `{u YaҰ,-m񒚿6rK٩MD`xؽo)#v$"Ma8m>r3wR$ gIfIL qA9*P⹞{ ΋?cVLUmbdubH2wA31KrxaW#dJɈ1 q ,b9nE P|? EBHg 1i&vfYLlc,ZZacr&;tE$ܒT|īc &+I؋wu8X׌U1ϛߺ|,GW|mqc%?I>„ ap \&C wk3a`wDO!k9 A5 -3͵Y,#f\AL8WbIIItN"3hQ:R1@]/pf!I_I6ŭbG\ ևn%t%i'g*!WTO_~8@T0&6[˺c3e'X&zIW FRuաػ ҞQG,/8o~o"KnX!V5ҏS_0M_W7{FS0{|ˏ(^hf7שfȰ`܀mƉJ=:Fij!bUMĔڇgLD K<ݙX+yh~R~ybg;(%j|l')3^>EqyM⭻v H93LΗ-x\iO#S( IL"l%s8r z=Bʉ 3VBbzF?R7*&5E7Yx]1ۆ뤊}Ą'6 'dY&Hɓ|M9xN6rO ;>#ёhۭ'?T.5 ͡j$843HvE1n! 0hCkFVb5ӓR<;r}ZRb곮t_ '" a}fG K aN"O׸l;6t{Dl_0V{)}laGk5X2~%?+\`>jjRflcQ< #0wvsCB5Wal~T?kL4]@(Q"}3.ŀЙ2d[}Q:ӞU!-^Ow^$E|XgrPɼ}dIP璝lL(9*>Z(z g9QDDmڙ/P.\^e \ pQ0#7{_87ryhfP *~e~nT[|1GQb[J_K3#l u(Y3@,wc#D2_H;9t\Ȼ>M`Q|'=-1g]q;;͂Q?iYϧ%X[ ϫ}4N`'/6X$`@i?Қگ € -46NeK)q#LpW+ZMQ9.?aQD iMoFOZ/؃Pe;R-w6)U6M82F=WR#%26Lu9(pR/7ʿqmQk-_[L3VxbrUӶJBwOh$"qF픭30Ng죇I=LԥX!$GoĄK;Beʙ'_5J k™'FH<̧nOhtM:ہ@;wś+PqnyJK,Ha}_Cv;̩Ȭɺa-{w+6_grquc?;z,H=)CbN>"dUGs/Xd b8o&c{i: ;Ea}?-I5 ]}n{㜰ldj89ROOMsrrC#ޅx=tIl) |5ՠB.M`V5> stream x]YGr@o+L=yc^-+? %!E_<#3{Hjꪬ)' dGuF^ ܕ[?0հVܔUdzƧ [5mp0#as/^~P01~U6  A\aE xN-r 8hn+ {wM~ЫZ Ƀq,4} gzӞygg # UfUիX*_E p0!رF/Yjڎ'oɼlyNx21wR>$nzi/V'iH'Yx~] _2/2(fw_{90FM0p^$wvj-kz<~\9Hw/ <,-ZE'aWVw_qHTu%,HO=nZq9p4H_AQ >Y7ЁGl_gR~\K0[E~}Efs)MKKe ]5 0Ӏ{sD,V]tef~֝2G#CypދZAxpֵOB־$F‡dZedzJ9"<#n%ExvDў1#k3xB.p/#+XQJ;u"'pOpac2!go7|_=& %M0<|(Ԩ]哉𵙛07A[-(zNJSnizWemLj)tL<i.mOK* `k0 gȣh2^ rR* *0P߳AóMoJ[0* '7䎳dW2F?:g)+LS~KችK;\{E* %'~ŋEZ8_싳W|t_+dY98R >:{{zsq9~~% pX:*m][(4He">>y P3d,LM!9ք>ݗAI9/P[ SA|.#rLE:dЁ66$1x?,j=X2;j:*t&P`ܳhbC[/.6D\Xc$gYt5ּH!$ lRix\xNhp ǘ%2hwVQ@Mdtb&KS qּ,QB{%#Q" ~QE?OllP`ouq,O~ fZ$'4jF6^|Iñan-(0CmYqyI|T@ 9A"x@o(,4kD=.30=SjS$OJj8H~4#] c'^@3"8bK(#U ADSzOh&wռnln;q< Hx=ߨm.h*lN:(.y( fȶ@PɀdFulX"e FަPCƃ;#Hb@Aq'1zܨ0L\Y M@m|1[|T~|!~Mt gp]nۜfz4z8YM5Pjajq"rz0FzgicVo$?SIPn~i6*-F>}T("6l gmRw+*"8We_P-^T%Rbs~ۣ.tZ+RM6._Qa9}{LLt #e-}G/$\3y '41 b(P"sP"c;H`jA6-pA E6 jΒFC D7|_Q%K]<$6LV)&f{l䍿?IMB9^LCΧH!aߞ>rB#: ݼ9#$8tEo_Yp2>(w$R5aSkPfx>Db<ă}g[q N1Ngo.ҘR~x%W4lrml/a]Ӕvr2WmԉDtzmqĨvKDȉCMd,I&ћсb1W(!J|"g71eOLLgCn;O'xl{oDrZϣՙEwl hfYS!5dE5 Z쓒 CplnjYTPQ?“CEoR` ^BAV n7యЖ6 ]Eq:XEëySUB tRũv;~'O/"ɰ'$b̪Ai6aqro\S{oŘ< se5I'!AFG'?XO>Dpa'.X F@a(D1N×^I&8b,"&}05$dIJOZ5E6a=..w'=n~Wo>>,%mL%Aw H'M_g lD$bGĸTn9t_z=/)n(O>,O} : %>!"媌M-@l;my&n>J 3N'&gO(F?X\Q$T'̺ӌ]r;5B0%FXp6Ttj[|VQ/m)OAq_VՄѧ6&E2K >B.7u.BK 82?U^, ]LwBDǁI6~cGa ecE#A4vɱGlO`Հio aD>)s@puJsxpó2 ؛r+SlG#"٪&W1d%9)825ǸRJ"O¶%ZvAСD}cȞX/:ï!./Ysy+x" q$fK!0 T*>k+2p${Ibx#RFiް0hXscuY%g΁=FlS( _Zԋv?ѿs7첥$Ԛ"7REQ<((A Jjb~[ 8]ȤQIgNgl#ube)ϗ `mS$ u9 z΂L @QrŠC^8Rj:X!lQٸ&V! bw wq !NueN[tZEvWKGmt4_ku@6\,(&p[yc7202UZzxy 5&E\=]/zAM=&𽚡˷0n<0#mL]%_j|Qz\[ؐMv5+ JG9^!3er,o 2dX+1T}/|cᣵK"HyYtb\e$ɹ%!::Ma?},b*OVV'U MSQ-]N7HE܄wv21Lվɱ_rxSQ3*$ovMӈKe΂,6Mf#O fnv6Nͱs+l2vAw!?/,LyIhS6ҏ4U,˹yg>[Ts?Q`Bh!#oV2{&a/s*=p!n3Tt8&ya-uN)E}<&3~o2~P;h8oC:615.+ļqORtHOd ^Hibkc%ә[ho >[,ڵĞ&O~K+AzY8?Jendstream endobj 134 0 obj 6501 endobj 137 0 obj <> stream x][q6  Aa茦2 ɒ ql-~ R6KDק=5sje35_ϓ8//Ͼ:yMR}YM;9fRg}?!$hbrVΆ}ƨW]0_rvf`?O+Yµ& }06ﻱ1i`|/`8R)v?kC\zZ?S-&#OSӬu{^Rgxh, c5aV/"&2z:`8 @PT*$M{֫^Yep?)PT%Ěyo L;H# A^SP6Se&Y̓bUi`W ݈j%>E/0ۈvJ4 5))>Gu9Ik \@Vj @[|iCoAm8Eg"Eaqp uf~zU;RkY:˚Hk{0rQrf^RFZhtqQhNΰpHc$\r ]qE5Q(<̤tQ9%tq ; s gp\*/:'- 90??F*x͍rZ A'{Y\BfI0\h!TQIޛ5W^Y"w? JvVŮec@~l;<(Қ8OUfE|XUAmlx8$:@|gP C[,*3I_ɂ?ܗgU6zƊTQ yT}]8ڛo‘]p} 1H8?-4Oq_&:;d(<%\<5h|;fD##9bͥoťra?'!y(EKjaE+)F80. Lw \93ŤDTL~h 1L"{0z-꡻e[Ayꐽa3D<+ݚ7G-ʙqVj< ("2ZsQ#u W)jGUU /3O}v͘gdŞdvG-ҩڬH2I^9d*=N2HM囇Ȕ%RC`dY~@GVB%#qhWBtĉB!CuEJsuސ[S+"1XՆ5%Ytn`5@U1\M[k98cJ*WfiƯjpj7K~$?W&.,KPMV[XD`;ކE^ntD _&ZA=R#A"}ӔdO 'קQRJTZFEkr5Eظ`¢զVu`'Q>;9 'mLߚ%2:$|X bٜ-Ȁ*roXHR ?\n˕mee&p Kwr{EB,,D 6: UJp$BSv !¬ɚRu%coo2C ˢz )!D@K4ƺ(,Dvv{I 䖲Wtf\8qL5BbpOB)Fd[,KI,LX!@bjxТį.E≔|1>Dx71dE m:9i?zMDK=#b9vXcĄꡔ)@`H!mi$jX)]TL睥 p46&+O ԽAb^6eeOtH̯Ըb?-܌ $e(q0In[eTrGxM"C 5 O&؄ u9'FyZ)mIus.?y)YPܐW,eS_/ J$l> 9(ٗ_7R\- \$:eجE z>>H! pb:tA(R S{,Cd?XGF×BߧߤQO Pt裒tឭc!C0X#oEB)*E%5^(rݫ,r0}&z>V"/ayQ0 a3ؿ(OOת cȊr-2@ 1.1\M~ QO:O{yX4!@VE h?'%:sbR2)cN $EX91OΩ.ܽ&JnuA/3uNL=#TEEl\c3Z K:w!7#ō&!.JT#QRʪs?6e$j=F\11墆RX]S-5MݾC^w;)t,Ynn ̍xRqe+tt5;?l~3>>2%Y]t9v4}-mSŒ[5[Wڨ(㩑ujuN~, *%8+OC*4j಍xz)dב->Xt3)U[s-F3 Wӡl5V k9'a(t痱M= gkڈ0Xq#Q{KzE\1b[0) $1ߪWeR0p˗-Nqueť[^ g̩$JD"xoq:,n` 1=^zQ&9 DTU[^Ѣ$fuM +u$'ŭ%Vke=qYp+UFe+`L?6IޡA^xkq%#(4J !-Wƶe6/PشW{kNcDU,Ʈ*Q7;-2G76c9럿}ҖVZkq+Vnl7޹ٙ6)7h*wF .wB؄K[UsԳ"VRX 8gǖ!%MR)61ǀBx6SaeMpآ؀gd3G(pg!D˘n>n~SeW@qZsM;+j@ھ˖}cF㫝Udw)Hܛuc4"`}~d~ ev[E%g{@\2Շ'2(DQ  jFpgzeֻN<]Tt:] 84`Ă2`~BhV^σr\ɀj\6Wn"qhP@.5:RE 4 R:POU ׽+2\ȋ-zTF.BWˌH*G$,6q\ F"׀-!aՊJ\5@zX/{S>1#'>!Sɵ5 ϊ48V5gKlѾ{/y(@$O=UـpQJTGGfoRAǫ=ƜSHQ.rQZJw7#(Z IA:FvU j[)Eh$x Y Ryoϻ Wt,Ye}s0]D-hQw-C(y[#>WI:d.\ 4TLW M눿LX0ʿ N:>85}\xh_hn#rA};<JbP݉d%awt;$ͫr/ YŶ5+HwOL)ϨeQ7bگ!qIe%.=t0+Kz]ǃ]p53Y[_69(fӁ8*5Xi[]rL wpvH QSgn-O-M7h>]*^d؞~oA2=.g*Zcje2$yEM`'zP"ai [b`?/Ҋh]3=MgGbR\Iy4hUhfgs˴ocN_mo8=aЋJ2Th]t [~%Xڦ/hZfP>hh\bKDc۴)S,wX㷕>K݈|x 7&ZnZ|,fcVviʏVl)"Pa\"h|r<79j6v\D\حdhmbյ/"-4x[I7r|<I!nAIӍ 8>b~/Bp0*c7f2ȸgBĔaHZ@ [[8fZ]e:6 m.kcMRAh\'%j ̈1?7jxSa՘ 9~jL;~CpOuM#e\'5-L|ў$.jZfXHtݱsѺK6>}9Ns̩Wsz#֢O"‘߅] `i\z|>$Ee!nup|B_@xrR1x{Dqë.&Qj&$w(k ]g9"Aj,4;B݄A,eԔQkZHf9͓ јj E_m4eҭ'SCwyw^X1wGK+ .q4~pGUdJfVc)P{z6BQhxܮ$ tTqĊQ]ϔv'ig#kh a]9.:LY1zϔ\t>=LHK-ꉪv=Ⱦ- cԝ6~[as{0FzAL:bX;B,G\'Fy(зzv_?x V~fı򋠎2Fr1R/ץ"v{)h !mj{W)ejB"xFw[X&~ыx4cOqrVaGnOs&4#4n+981=zT'&Ig.( ZBH~n6r/$bYr4W&' Wi)BG{p{4̳sh@Fg% kQIg(!WvҚܣH gf9nP9̕'bկk9, YClWx׉{ $Uq\%OGFԽ>Dx/,(MyP q"Ľq ^96FPƟ!@͡"7B-]I4ǫo =( V"*MMfGҾŏA!=Ґ_} hSE[#uR fwto8ʢJ1; Lwթ5A$?.QRY²+bi[8-!#j ;SPDendstream endobj 138 0 obj 7919 endobj 141 0 obj <> stream x\YNƊk6Iѳﶧ;5)Ņ^P?۳>ىZ+/wrr^_^I1/Os4afbw(Z a|>d#>rҒo_շq5Ii3I0nRX w-͕wa' d J;q@ b8yh)xK)؞ITho˴6pl'y =JgZ`XNҙBi:2|7~l9_Y +eشlM$l{Gg%ki=TBLL!6L1N(Á(C*I"+P8rv?a)~l0']]^(+IOpqQTpCx|rezPP@t͖@5dmB!B1p {0UIlKzD9 =qvH6zV≬ΪRJy@aLPY#Uϔ,"84d .%5z |!p~i-S,3s]i RrhPT{0G ~ڌ B2h|1, "ˤcvтN;mG0A899a5YTI[?l,8@;`F:ǥQ"\MVRy۽@Gp;TĬ| : t$י0(eHtdY#HW ֑p@Fw @̊:gҌ`{#EDGЙ"9 Zg1,Ïy|/]#EzЈl]$rv*(W.}&REn,'ZOc^A@R *Gb3}*`\$Qr殜] !"KqZVS蔔FQ7[?48?].-~10!"{.zs<%xAVF a=j4l).)R4v x; 1s=v"!@YC4e3rۃ7 _þ ǿOܽpכW׆+q_l~wpibxYF=@<-qq[`F0bJ?` hOQ5K΀yZDZ 3ڿOXN1LJ0"j7ZO?Z W$_G22DAo?*pXT+TP&07B0ܢ1ǒt"B ȱv6j:G º].Z،AP3w&1@6޲;bp:@02 f 8 ϊ D`㪴;MgAHxnQW3>0%Iزr85C3 IӬ] S,"J "(6IF-+{P f<%#cl*A9eCM-:Z $4@Gخσ[28ih*[}SGL Ϳ3,lvdy*3Z`4 2Ɏv1.E ' qd>;mpIӁ?] 0^LcM󑽝xWڴQ+C #0*!  pg|PwQ4ZӿMl@ $:8s@J݇" iqYfwacB;sl?ew@i<&@.RJbip d&jpDR#xUƥ,tz5+7sR; pbF->'Ly}Y=-OWHx٩l-8m [0p Z4s/x`tya] .ͅ(~P^Yc|G]*K\3"E[snA/0="ʩF9OԀJ_ɬͺ7f0wTW6/qm(8--]aNcT)rں# wY1 \{90Mc yAOW(O/;*gqWIe\2WcWs9mTAiH K}-ޱ[˫&~iy:2{[ݾF>(hR rM.`^%ܪ(=+.QmZ9v\U:cX$z…r̓pWX4u*Z2wcJu&J1FpgKs\Ih\&Rj'uV#JsJlsƖJ?NIEM_}ِŒK5w,6ف4|u~r\<&_JQEM1I{3>/-vGaZ y(,R.9氄>ҒB.\d5$lrkv`.FFu8Â馧ˑ9 }XWOF}^naHB\e+x^EK˼2u柗~m"xVFi*mSvSgr"(|H!ؤq?xl#& K2&n+xhcw9.ki g! /#,{U0?D=;O`{@ha^7[W.ke>*DzEt#v?š{ l@\d+Wdа)1g!9crFUh 굢XS9> stream x[[O(?b8LM/I6R&D%k!w 0??Խ!30,vUSÇQ^h9}1?_lˎ1YxuÐ4_'sF0gsJ$\2 Ƹ p[r;Q* ֿOYm/Pƍc c IZt7dzg:.aZ-]8"鴶X8<-||3[бx9ݯfuH uDפ(<0B:@Q E\- R /'x 3=f/7*M_>?s:_Z WL*&wߗAz LA f/_˹ b`[`zqL7_("h B08/4Lӿ SYXY8g@p(e4O ;9VQHaҙ&CP]LnǷ~ȊO9SvkgNIȞ}wè槸S}lE.|v+k^{K{?Y?eM$/"n;<}WL*BIFȱCR1ET).L~=_Py ^'p#gKq51qڐJkpvt>? vM_.GEiݨL=ӨqLAC wux}G:CĴ3)ݪf>Q13Vg+VJ6q DOpej֩37 3BΉ3QB)31aTgV)N>*rSU+E?AK  JD8zӟ1EU>̏weEOk8شە5σ8D!g}><2wv^*23P@U:*HiH-c{_` KT1Vb6 X;]hKBE6ި7!6$% 0Fy:OtֱPH2h9;Hl#>L\BZb ݔM{Dj8ÅSiѸc*B;zgzP:~,utE  10ϣms8q+!.E*.3md!"[n8^R?PHT眒^U<t+kY;+%- UFKQ6Mk$n[(b=?C[j1s蔴N,k=sN~P}*9%`2u !kmsJ}Ny xRocD`sm8;Z8o>X"XTj=4wWÆ 5`9ŕt]:޴r}7l1?kՂAR`a(Q-߾_ޘL-j^=: w۱f+: \|! Zt,)Lvu7i#um%pU,3ٴaaU'ǩ9(2-%Ŋ8ňh˻Z 9_(ݘ>_lLiѫ@Ʃ)/'+URI+I`"0dw͆{dž/NcXSog')ZϾ+KV WM*Τr#c*D"g n2 .Ț˘LA2{׭g?(`-g("eIX% )g8NIl8U ]"ɺw:_P6<+R;*/3 ]cX>q?  /Ig4'P$2kY DgRHTar-GW*Sz7ҧ;[ #̋74 -K(lo3))CIho-o[ V,.rq`5Kp9D\ۼgmS`endstream endobj 146 0 obj 2443 endobj 149 0 obj <> stream x]I\qyG>'B?ԾKŦö,68 %;֬z{*h4^Zs2X/\?W^eś'O/̥KV]>"7^.]_\8-{hNbP6gnR~?j/:FV~k }:{ͣfxMݻZSƹC~3aq1>G8oZ -vf&€uC ,b'O/~wvN-&mt`bt%']<_//.'ǗK ۧ0vQ/Xڠ d"JJ(Vf-[x4BkDNwu}/~r>@h4ҥp$1ho=D2ݰL'#,KX㽅?-pbn~FhdB`GqQ6QMv(uމsXQ_v34.>]w>e_jCDbNpO+,#yJњl!˖s{zzN_52TgnYac2Kڑ,,,_~7r +"dNvRc绫;ֿm1Aaz?'5 mjo ]aLMbg:GD'B#>ϞY]9&"?A2\W}_܄/ٺ '{l\?W  OfB8^[LbNK|n{/$(p:K2GFp(c3N8.b RK$IբP)-JU|"b& 6 hXzEAր#=i6L49@ܙff`0M07ޞX,|08cdZc!c۾fl~=Hܛڋ_a8YZY®5@B@Efɩ q̝$vAGk%8ŶuXb/!21m>Oe[/+.*])Ǿ']]W+VA?{^4y]Kz^:%$Zx [ NΠ|g<Чn9+-,M+Y*2V3d=tV pО7 x d䇆%kߞW`FY}S'~M棎~ ȍOy9iJ9|Z99 2yL"0~QKL~`P5Mݶw5ݻ._Xg1?x_BOǯ;ޟ swz^l|Smlj*P:챂a*k4s\f J*3|6%xl]l7HmԚFWWZn7OЎ!&KcL+:'-]JH-WuT+57z%0o[`b'IkXQˀJ $ t.] ` שl M:>hmR}=Vo(R+zx?%bcqEI.%''dK ;QZ U8<2&&lI%"Y\U>8W%!2"TwN^4]JW G~8=++dj1'={+~B@v:"rұzRY;Dߙ1{Θxb# yڧ>7p0|=JNxT^Ёe+.RFPgZ:m?5tҩH{Mp.gEX]BE@I%ޤg v '#'j꟩ bMq<(0kUtsƦL}QUY#MfhL=J>pC5ZAk6 Ea}ǀ=Ȉc\ь4ؒ'[e HbՑ0y>lٙQ?!1l|0q|Fj":5K^_[=( WBW\Eu2]-wAn8]S Wt8 #k`ϏLٺnKU^l,3IJCU⑥4P$Vp+R n1ڄ%EڒO;GݮSp*ӳ*viG 59FPD5wS튚l96XkAB+[#"|5CE,hwu95 391  ­Nz*($"@2a |&ZV7l+')B=/RBof4^,6CM>N70ԈAL'M\+wžH'=]څ1c @7noג_|6)']'DBuH!]C0Ç)SIuKi拄`&NL(1{3ߨR^6@9S& 6rC2r)izk$Otv)ZJ2vӥ v HSY$wвtWr*®rB>v"Ņ^k)]_9$)RO+KzG s>:+RF+5tXzj,6.)ΚZG0 @yM `#nثnuxR&Rq2uR60*]],nʤ $y=piKyc&)w#5d/ظ6SFiu0o@ޖojNxp|QPY*oV4a*iFkdt hVTUJuT> stream x\moΧ~P䮱|qqnIFde[_U\E.Krfyf8_՟<BO#h8>Q^_oj'1Yk6ysV |G7ZMֈV𧒓m#z}cMw/6K /)x,Z$P^a͡F/m l8b| ' mYsmGi 䵷vuxA/7vN 1(^aLjNH_딊3W͸ơpfbnuS)1 JaT8l,yQ8bbQ*؀*3.¨VŸ,iq9d҂]w-oð[l4F8jc`v v%= MC?RAxM0;)h"#tQ˦s'fMqISu찀e=P`pI完uYrזּKkE?rLs,0ǷMȣ̤@Z@,'/#sCfB^7Q;lIt"{\] $ A0Eۈ%$Wjxm4'N[I0%*~KIg|ɃGL=ww}&REHqq08X&4@85 8˕?G,uh96gG? uܑ8:m'grRB030|z֛x}2v<q.(rE}"x3B-Sڶj>Il5 C5 nJ n<@oØZڗ<&ٳ \Xjv l0E "޶Qs$QJ2z}[;g {#>J7䫑*0*o(k GU K qE3OD.|gp ]7k vWnBK>o9,syÉy0hճ 7B6x|Q_NJ.!rJ/ }Agg.:=GӉ,#K@) bbM/+_i,]0!"@џΚf Dr\H#ЂMI:.IԻSucRU]`|~U#!<3r`Iܫ)R !&^Ԗ|#G2e8M;l3/ZZ{n41f%+Ǫè~:l{%"-A?.(VaĖ @xM04)gҘz*xr5r% s %m=4_Flĩa'egB7h m j1+`/VXWsuP͹zj#i$!=umgXr;.ԸIt49R0!M h }ȥ O}LUCg' 7ŭ rĆυw#{ y0:?cg-,NQcPй%7 !I\XxDV\<7G7<68P},ʔRVECW俶WƙAZѾs ql$HA"0\ `m*+R ڨoFqZo>NrN=:y9[h_/Z R."y!"aϓ>U|"  47lܱ~sk[LrChdDd )i $ڻNcJQRK8֌ͶuW)ȣ6Ig;(M&6;:|f е[9C I9 ;njoW֟_w|wWcnKԾwzh3C`|$J~pE39nϱ%DQp,!;^PJUxy^l-˽64qTP˃?pZ^0jK^i2l:'3575]UJkl9I=/U}dm[%YGn{4C8\~\VO_D[nTzgv˩Xp ($y DUnzBvJUl-5zU*hU{K:8,` |4;͋]fwGB騣כ9KE6NB o.p0z|3!4R6LEt32ݺ!+jXYoz"h=q?G3`۠@ag&,!wDZ|NP7vYDO Km:`֝Qg1t1f"b1QkG*JZ;A $̭Kſ؄ܫXvn0t,/S4!! jxz=w?dqc%5j.K挗>q[%M`Lc+$. %hnL;vB#i8>:ɱ;C~\[D/Q˙k/T%`8gJ]gt˚ V.j6DāǦ+9m $cLIT)852ӿ6]sKW,R2vlb}r mg' $~n}#Ԋ-hRn!%:m$LF #Pa~Ю\ .Ose8Sh2`caRVs "uS.L@X(X"5 "?/a>ImSbQI挥 Jp`fiӶ=ocUe=.Ug Z|C_ʣ1VyTWpÑ!^ ΚCbd SLU]$ǷGLhp$MCr+tc|WRQc_6@[õPc=튍 |\Zl Aܧh^1;"0XV!p)JoUh֤Vv{Up\/J;L'<&ή1?1ٴBrI*"kBuAny4vBKZX9K`lwZA PnՔ9ڝZSeDcƮ8<)Th_?vD% #R1Ӟ~.qspֿoo11S Z.Gf+V[EO8 YLWR%%"TyLR^~0u gMQ?\?C*/mCJ|eKnˆRfۘY*Hnb%ӼC1l"wԵpP:#}d4SDrYg=SK#G(UAa 8PI3i*Ւ؁JȞ*jEO6!æ|<6ph;, MEyIۃOR(٦S%/E$QI.SiQse6IY 5pQ 6 Wj Gk 05P"wg6mYL"eHJ6g}#<'Ԟ|bF&< $Mee,6_^_mc\ՠ-,&=Z䬦c*ewxqh3)8xDgN=vGFU[muoqQ$Mf=?ˠJHCfʙs"m+@/:Plc9ӹH2cDȾh3m̻**/y b<pP[QKՅC|>YӚUCoMQ:Vwl2qeq :sNs5EDf40.50-p,!HO D T`7,)Cߝz䜷^Y--pi({ǘho1<./Rk)sHSEPb M|o0_w$;oUηAm:Q8?svx2zL4gB s )Q/GjɎ稸LRT|-c>:O!wFKt(ͻ rŅЍ%S2JmMF9I kʯa%ݷ?)?R腃ύ)D8410|ҐSjgc9ڷ_saW_`2yz ^ZB*t]~؊C+&^n \maXi.Kendstream endobj 156 0 obj 4776 endobj 159 0 obj <> stream x\[G& y8a^a}Z]*/Zˊpl`adid1_Of]3{ƣ QOuw]ef7y>w_}s&]Gτ)A,&vNNLJ>h&˃+!^b2;]/߿8\MЯv~0vӬS<ewJŧ$]z&pt,np') 6&{ǿoOк6>/Aod_c'Sy | ]zpy&^̻6f;+(|u8$w/`?FIxJW^0Moe$ڿld;y0Ft|w030.[d9?lšpℍ.Q"TD2seZAOFN/r݈{")<* %ig V af.;B.Aoa%K=U?ƹ}qA( ڶة,+NZF Ϡz bh:j@쟷_E@ Z iU倣aXh#z؍0qmiM[fUl7ٞȫr,FWu[dFdp]=P1|c lI-= Y:Jby 0jZBl Ktzuô7Ԟy9Px[g3V >pJR&-6 DhRS}d;SD|I-hM(REI\ne,N% \D Ў>;71\-G:uAج61yp±.9 n+)w:[*q[Гu;n[lhr7\ـ9b N?ѼB{ENHE4qIA;ݤ@AǕv!8ł,m^'[መ`sA!y"3֞3,.pLgt %!ᰞSZ(852iBrS3].<"#-QdN\2 Om{'\I={0aʑ"8K ) NF~GR$G8O2R2RiXPo3܇srf<{J=/h=w|V"zo>K TR]HyҾO}~ΘIR8$0eu=zݷg܉Gğǿy?=y=`ꝙgXQ*t)f^ 1 FC* GE"7$C{)J D3 "8J!';&ѕ" 0@ԟ|app;+0-w<@%EZ4*F+״rAI̓Z渇IJ~ȹ f)r݇͆y7\9F#I؃ S;p~loQ%rd1.o] V@@*n$iiOPx ^jꤜaA]Qm+d(":01=ƞ0!է,h $(*2rdJM }Ap k`3캝 +ր=^˫0?bc~4 h3"i,fa_Kܕ0.C,Nb]i*CLR{,q#.1 hS-~OY3:7 )ZK`&1y}tf4񬉇$G+ *2G??X+zY wlXP0m[! 웎Y[{p?hN DI'pX@ykIn";f_P6Z $p0CܖV >δ!E/poF72Gs/{oa7}5Xi[tW(4EX5Cql^҂̂Բ&PhXu«ZoaE|rg.h -%E<ޭ=+s?^r% ƷJdJo@jxO*hnVs &e 4j댄|'nꟘT<%65s>ia7% ra2a!:eQ k E<"/K01"!׬V+bۋ"5dۺN.qDH-/]Y9QN:_:@sş7[N$!iw~T8zV-æӺ~aYuƐr)S"F9wbšf8yp-syUE2<'b^lOG Rw2|*\Xo-ux Y )UE1?H`c`[~UY)uiBzOx~zf,O4k-ԲSh1{ |16r]GS+a3!gle2[ϳҝ-3t>1tbA-Uӥ# +alSͱPğTsCї^V k)'F"F3UmLX!zKh`dZ>`Egך /-\/??'oendstream endobj 160 0 obj 4950 endobj 163 0 obj <> stream x[Yo}Rf%C"YN8q,08@V$E Hgz2Ѱ:8'=/{v5#?3?gWgL)l~fѹfd\sr5wŒJ2~A{ε؂&Mn%|$ڽw\-Do$%YX)-=3՘5Lϭe\wUiX1v=Dbz ;Bz29 \_uo`ВvfL6CNρS/earop`DhÙ^ξ} byP@C?LAA>;u~bv99r?s^5ׄPMkIj{Yν??NĠrj:5<"}΍RCce7݇X:byinqЛx҇x3_ReX8,P:uP+2\&c8;hBLO#E6[|~ĥSjʤU&Ld@+LҦ&, 4Њ}+ժV["a&d*T TdpĹ: LXb %U(*2u"!B>ȴ|hO*E׹ J)VBwܺΈ[aY9o#ٰXREoU}o4egPО0rL:肠UޞXiZ-3 ol'x]cLNrv8We/aZZ3 9+h%ЙvGȰ&Ie/p׸ͽO5{Bh`Q*&}z%#ϳ)LiYS@ y1mCW#k R3GA^'єdҊ8b뗵jWljAJGIݏp&7V*C)!bn]ĂsAI|[DNth z8 DJx>J( v܀ET& w룰`(Dj훦3_&_cb >KtꄳW"GA&5T/e,(Mi얭l^EصĮ88۞z~w-H+n7͈>hTe]*7f̿}ZME2A09q2KxV9pg|RpY8 S]bt!m_^`f;0bp`8+r/X,%@* Fע(2R10E}(wC\dⷛ"]dH}A8#1`*.h=%*{cL4p:AB kA :'C.*[\a2n R|{4btJ3fs/D_rȌ'!DPu^AF4LA&?~YD,J/ @USs٩2-?WqhAE*)Rȳc!I㉇lDXLtS)psH"bS@g sߨM-rmNSaָ *v׹fc)Z ^@io9[*ST͘9(}U*@ 1 Pχ_vRB&r*n taЭH{<]YRMx .wһ !L] ʬu`t8W&^6"9jt آ(RR@˫'=gyp oH>UXa^ћn }Lgbr`}Ce=,; ( )5h9V:.~3*ST9ƥf_ F ԋh4)rPPK\[~ /0,:舂4P?b׫ ,_](Jƫ@DO(h2mhYZ( 3$7sen`*b{^&8G-3oR|jF,)Xqh$ cir; lolm } ]Upk]!&ȁ*$ijqؖ+-N@L|; o?gW={%EwZBt69e'jTŨћӅ&p˹me[k2W}2> .w= /1͋^mWx%`FbP}AWE I?zpNݙ|vV(< LT7/* jxH-.2aDe䚎ʊUU7 5x]ل}AV/yt9 bdy `deQ%f X's*?JZ^=\Awߑ2 ^ys_{QFHN\>GqWIqW,.jJU ֠3=|bp_nKRD㾌o76vтG06N6R͍2#:q RNlqcvEI)[M/Zgfۓr >0Lx,,86nTQF@Bq<ٚ}J.!f'U^+2v\ ߮ x8+kI7X큁72ǞX]04^:i8mnFb"kܙendstream endobj 164 0 obj 3145 endobj 169 0 obj <> stream x\[\Fy7D99 Hv(@6`I66|>3]lAȳgz^uxf3_3/p֟Փӟ[חjwVq_[!Y◇o7lRZcB:&-Bxl&X>Ϧ%j sy{ÞJ +]lI~V01gqlMR; wg>*?Hs& QY6bu=rWXRa8vf|P]3"8zR o;=ُ}RNW#=~w| "b'<"<\c %jB2[ZN6/9_PU3-̦X"9t`׬YDD1)vH;ܞǽrSBcFtfņ1Ys@י™d" ,,}$$}\0D~y82D;yM C:<X%K nCԤVW'6( YP4h5@3wv9\]Kl,z;5O6kKUd?$ X~YcÀPWF)\{ n/ CAY޸D& K?:l̉V#OAcD9b[b6,(D1ԛVda^`k~k#6}K7 f2KSkmNk.`7brIW%;c0 eyƾĚ#|T@3%# ~\.:x ^)Oua^uH=I1۵`H OpA?'7Nl38,YSxG!;gF.p>s7ݍj2iأ VQۤ5ꏔgE؃8s%MgsTla\\#9xVaßZXNm`U Epf<.l|Z_ٟZUN߉_C0w1'v1<4-?=S90'{"^u8 -.|B`j1HG>#83^KhiKVXJ/tV@+{>G\A>Tn*U֏N"bRP)`J8ܖ[L$DVmQOCoF {YCy[#gȚu['gH ;ЊgrE>db|UJQL>DWb_MnŞ7lz>^/t:õZ*u~YPWb}.[]c1}}~gO+·Gq|С9Ϫg q|Z>MG-LWhJUASXɱuE6xR5G|:tnfui:' S~rѦiM & ީ7+/}[Bs?$C//2 //=ަFtvtUteFAJq*"̵ń,{ S(Yl2C͇;T^d(dVqf13' B-޵͓IT޳5]-ͧ k }noNo 5cOKW,;7Ff{&j>O+)z o, m<璦c鿥a.꣄$uem~&' .GMy0Ud}_-Y1j8qF.g {=8b@gKSsaJm_-p{ J LbvE#Z\oawʸ3MMRMp,~Kf:_d?6LDBl:{,gh?3i7T?Aof_JJ;sgM4O{pA$\CƩ~D FL{ 84Bj8C>i#]M&9*(=U {͝$#xQTl o=XR.ɏUTso`%r;skŲ?M. 5L|R(Pā^\!nl: *A6_)X$ǶXJV.j@TGZXt bժI$-YA~0Er.m$u4Ŕ iPX֪ʋ*jFJ _%Md-cDvPy}zqBy F_ҐLl0pbb*> stream x[Yo͋1Yv -8U}Vp ax9vfe_{~a6nxxM/OO6O |ZWZg O.7^Nw|q>}WZZ!ȽvbIc.ccԚ(h=)1bH۞\'#9[ǙY)rw۝417ӿN!v,ay𮂯q6̦줳y#>;Ѥra0UF![\Bq/cőX`-8/擫p>}`MZCK;}ިE|R_Ȁ9\װOZ lf(֦yegvYy1Z]^)f`xΙU<-7ߖ5IFM WḨ7UCaL$*F$* WE}Y tKQ"n: BaMP,S;erU d¨} 4)NRX>"mg&ҙ{IbtdrK8f! ^^eXY")#9e'`ke!J.pENO8̖{-e[9+S_ޭIM^̔{)D%['s\m :*' 瑉N,Z, FQ<_$9j/smuP9YT"VeazyyR2?s@e<2R KZbQxۼ7{5)[;:tgH'ҥ0,xNz*|F5 qKa*|ED: 9kCG;MJk.XFopaB 8-D԰$Ըr/˔':|yiOz`;8orI<YWyKkXn 0zӢk ;4hB)/Idh7Qa͌w:Tu0X;uH^ka;Rq #npwVz/ "\E4#!٪oΡ/l޵yhiH-*!"FG_ 񎋀9u$>STLap'h?{78A,[Ϋ  D#ʯl0F<P9\qa])rj8*:&q l>|X AN w=7:<=<9͓lgßg۟m>9X*,  ^CtҘ pt(-I**m~(g[}]D&gb_ RQ|9e`xաR29MCw@%s@%I38o$6$r+_<C~e#rCcHO0'i|JCrit\p`~ fSD_x(  kf%E^bZ1+V.Cj*} f<*rM_pPY ς0K D>}pP_<ccs ,uh{8BR`&A <24a<,U7lgendstream endobj 174 0 obj 3809 endobj 177 0 obj <> stream xZ[oEyď'4 r/ֻ kK X1؉= a%[wfL Ŋg7 36Ah N3qjۛX?'|k``xp$$@Ѳmh՛b?Z ^:bwz8X7j}gqs!ݸ1ܳ$zHv-#X*,kՖmge/WB1cZ}^:XO)z^foF耑u Wrͫ?deZ?vi,В Bqcyac~:AN H`G]1{q#@^'s6hҞfp6  yeZ6h`+ä6?`RzNki-Np.DqU ~ 6gZ+4S @)C:H(#f}vӊYim6A4ߠ}% Z1s_Oj{:y&Q2眊-Y~-R_!!,tI(2Y`F YτJP𳝦YfRm Rb8Fs+o+zFDZa珗]hw%6u >t=86QM^%n }^I3ɥ"G+wW8^W(O1ٷ&vp%lM̎zi.-kĖȷ>NN;A SH*)o CJ$Lr99PY̅`NkqDѩ3<PHAh)8 )[8%5<HY36n8(a2WuȦC`ZRPFD@11C ݃:$1 -k8Zy[I|2=.]qrc-DL)\cK (ff]|'ǙӴ+i?m*+ոRf NTUyt)~c*W HW7DMEjNOS ޜm(V4dhՅ^ܣ;*c/gnkAUCyƕwz/@9O@<傍[rRj$6@ *>Z`Z 6O%LtAsQD;f|h Jc#ʾnG8ehvs^՝rޞ;wP^ eb!l?o"8 # r } N 枠k,8h/ ЀA2PPA9ytb28+Ajv=/‚=wEC2f߭jPACBq"7OI.giR~sUn$!L<q}h 3Hq\ςp&+|;rݐφi>DTpV,Jw)J -*{ܿA%zOo/8MLY`QF7JǪ9/endstream endobj 178 0 obj 2283 endobj 181 0 obj <> stream x\YGE?b<0xZu<c̃%X0dVUWeUgk X{+//wb;+>{}!vBovgw^^D &|| \BGi( h&oGa]*}@O^M:Eq^deyC07@vYww{g oNhZ \J;/"Y&`!k$Z#  )9:ԕ[߆J7I`۶50q_x_BbrS2{ ,eh DEnnRڴ;ڷWm HҬKɂ u~(OF2\DU8Ջ/ENH6fWNqyɩޣњB1OBJ'mǧѸ*%gx?937&TR,4+"ݬ> ׾<'أr^ᄢ6E;-j@ϺvV[6섛0c!\ |忓D q2L㴽'¥YJ7?_Wvq2ȻO.?hWw/m'/{ϓw?2BJѥJL,)s!WG ib0yb.\R&ozڂRДP@ gD4jB:2ӸC \m,%ČȬ}[UYmdY "rp7e`7,i4BYHezUM wgz6 !Gvw0ދ͝ [ fq ؽ"xjA_8-P.PGn]E2 6ƙs>yEY~FnEQF ~A%T!]t5s~sW ^'~\^HnʂGt;%cNz(G /x9_(P0\Pi D! h0lR SddO6@`-; ҿOd'/dAP_l& @;ak'!8yOtGGҡ"uz#IC$#r οڷHCޗ&RE :.`%&glΣO'H 1) %wWçR\- GSؐ F@t}|BE]YaрEMi'OQ~Wj͖ŧxz@(W%wo#[GԹ:oJv,2b_kM]]9#p PH_C\G@Α+>6mgRTVh}%1) CT+NC-).YWœ2}-E`5`!*ns$: _.O~XPd:;&>nu߾Y2ܐ5$SNcSt<:).ȣW7Kti!RȻSRREl4`2zWFF|<=@D F #I?JVO+C}_.fNs*[ܫ>( I|i?l^vňI`"D,_YA˒ɭ7!@k}+ =V7ͽ`/5eoEB=A#!VrL2@X~qRQPb Z)[4.q|(vg7}\K7յ薿l "ja~Uo[Ɩ ̮wxvsMק/!D۸9T3B>O(" I\9r?F/u9 <:rLHBoI-oq&9!vi2 w.z3HD\_A;|'nō?<`eks`PtGcd4𡆠wkI Nb$+h(/`QD3fم{rcWiFL5pve;( @?dfpc~]h?Dg=B_@^jC>PzFORG`񵵀*2(<x&ƆY%{11NAGS[+)0SO]d: ةީp(}eiV`"5Bֹ3;"+2izA`.LOro")h zUCۤIׄAGk(nå.0U;5 &e]N >Shڸm, ]0 @Eo>=F4LC?n+B*#ovxt䜮u<{[&1%?x oW2Z84;^/e?Pn296ǯLSVRrKƱa4\J])mO[XKdvhmBBLy>7[a&RP^:祶t+zTS|r16Fe2Jȗg c!' |q3KdkȟO5 4 VdX5$9rcߞ9 8cg8' ɦvni?b[ߵϴ8>ǝ< EՒm(íğD鬨v}[V|J\>Z[L݊96؄dKi DW훥Oh1S4@9]И F uT1\hP>;[hxFx:vPl0|CRdnZ֘-Y)Q Y8“6:z)$g[)j?= 59}*j[pa}Xvki6W#cg.W4j.XbGȀ=5(VvU@K a!'M`3T"MSnyBm`,w"MʚȠLLǡ.c9/K.@< 9U9ݐXSsAZatd;~SOS~]W91۠h"IaӚVRu"~Z$_BvR N:dPK|o%I;vA* NU^G`ya14ÍI[Pg[8TRwǻ,xB6_#@T oh\0)JHɸٷªxZwV! ^"B~"M!6}2+׏hh˩OyV̕zH,~pgKnr$Ѭg ?SknT}Mg4^$'*؞XR3KvsT !b8cxf0+G+lVg2w=?M z9\2S$}91gR}8A%D',S-,ʄU1l._<žڔkh# B, k缓QྯP4jXOK@,z^W!zfdx9&eJMhD||a,nyDwc4'Xb xE5K y#]XI $QAw";@XiIߘ&常F%P3?[?ֲ/ gendstream endobj 182 0 obj 5242 endobj 185 0 obj <> stream x\Ksy+'eץp,WY0ز*(X$%t٘.4I*pholsKO٣os>x|h_s+ws oϗ+9-Y K>HiB.٠{|\..Wl2s#jp3x^rZIw΁^H8!K˕fF-.+1k\-H-2.Tވ@3L^ ̯WV3?؜k\;Hr`(DÊ_é5mAsĻĭv/4]R[xgOrތKF? _ߖn>WE>q0݄P_Wwf^tX7ܼTrjNGw: 4׿g8uγ(7*oi$YPq` yP~6sfZBF ݦ$IKZBz(&ZXJ(PADZZR2$j/j6$6LYEtF4EVu$RRº"X/sֶ`hSyo2bi5Nhiԑ)2T g ca-IJ+8}H9}\l G5q]SPUu4*J%DnD0) Gg0_bL OQwP.5֠9Mc]S}1bM.H׮g|$B7Iu"/ =L (la#%Ꙅm+~ @ |m}&{&'UQׄN) a9qg_%$ԄS4$ΪcXBsH9츗@7$m >M03%=Ҷ 643@.7qZgJMud| ($4H:w9y Sc.e k n0+i F0%tGD݌-'x}sTt!V˨Id@Ϩ1b-?I +IK.-Z ER$sT#e{2G-` h26^}c)%~k/1#@N[^{zŴtϗ"'a\Ѯ΍m;q* Iqzv~օP[] E^^C L )n"*Vӥ!0b9j͹ #Ǡa;rP $PL=nfƛR arKBT\@$9 pSܤ >~oGH4G" L?p"㍰ P6kj` 4MkbM^ӏ&D*2VndSliGltB.u EVB "A񿬶9 ~(\˱FA#\q%-Z -0W+!@&ewdww \24Q*u!hcWE@@1Md)x=6}rSdW;Bĕ9Eo˾ F^e+ɰ\7IGCk=ɦ"* q)ʑ$R}YZĒ:d6_;xl˥Z=͋#{-.l]x<X&' _FtȽHpy5D uvRpB‹Q8 KE?9syn G!NU棪)U>^u}ȜZNnUF~hdO!d[d5ylbpO[;`Q=Jvvl܆^^X_S(b P@- Ġ ҫy)\'[_0}1u$VgCm h!Z ?ps_S*I|aJEz-x@Zqn[qG N[<6,~r S+]!ߜP] ^Ü?HkhҜ᚞5daavmz94gwPRH a S.Kf/cendstream endobj 186 0 obj 3856 endobj 189 0 obj <> stream xZYo7}v} M:I[-WI}gceJ`ԆjH9ߜ$u^Q*ɈV?||K}Tۣɟ\V?a2HV*"dwC3D+.tMF0 %Rlf^! 'R!uN( 969.L} (^4PƍFBXf, ST_FoGFsFzQiTZKAEX6Fߪ䯊&?cjvBN83bj"3^^5G8XLjig|ѥY3V́il=wW%>ױ^l>e33pjQIv""E&Q_*˜s|얁 +*Di%6M|ܬ!H~w?L|CU\G"".}c>_w9u6r,vL8'?+$CUTU#U+xa+f4ik4?.f&VBF~ e R2;*JM>ud9MҴŕmD`%H ÔMI q^մ e ߯~ D$,4g0~B cqvaI)[L~KroӒ}Q *֔%%]# qZT2T+M\j+9qaԢ .f}.}Di:c.M R-/s8I̩]TsJ0>xnYe:</xbSXA\Nu=F sM<w}HdDn$Moyݲ篐kԼb+Yq*]8Xl@\?8,&U|)dn]RAv ZttpwBS__ Ayxlp\[ 7h^~+X] r007o%0.u%!ӕk "_=Z*B뫇ō+1T$Tr)ÊnVDrMCZ~7(endstream endobj 190 0 obj 1798 endobj 193 0 obj <> stream x[Yo]EpƢ/ĩۺHQe+nxwEAdo[r&<[_ŻOgˇOx׋4M,}`0%ggb V? Zz>A2V\]):Zyzr:nfJ xߑ.O鲎)c  eY'tLraq!=F8^7kɜs.ҙPLyegZX txƔy肃L('dѩ s&8W޽rU,[]}<{;AWl/ofuFߌ`tLUÞO~\P~kiʈO6B`V?M3) TIK40:625f_R{<݁Y`drN-;]`Y"ǿB\8Ά3|𲂧ơ:Y#=xd\j+O:EC7586"]fBV]x=cdsnAhtCDA2$+}|p摒SL [IMe)jOJ VBk..;׌SU& Vl> (Aw!ϼHx=~fK&!јGl4x' | ]$,M` MU[Kp Yc ]D- DeUTZguFG@^dH˸_{MJHXy_i  sIn'׎$1E.HZjЕ鿬%$`sQ-f:gǦL7;*}Z{dRTv{XY!/ӕ { yZ٥dxҌMzPZQD0,)4M?YO=g5,thӑ_Ue /F}( @0`Lf%aDVpu4./-9 Ύa!65&rEhpO2{Kl)raPr:ִj)!"£wwKex̓31V/\>^I:YP޷Ǘu,E^&7ptG2o݊"j"CakGV/quE R0x~hO-zD+SWX%/U~d6Zyh_ӯZyT R)PF6"՘(ʸlS)v[QNy'T8'>BSrGίxdF{tObz3fWAk}c$o Nh @wI9֎Hn#ZOH$ѾR"2o+!;$H  LaHwiCn~ƁHO_`FƤ\{p[He 8p/W9~Ҟ0:s2G ][ 3M B5w;/˃x`H}J46>I 2 I@,afv&D`ӏ5K) nN[R.enIP~,x/jDO[}5iۚ)GuA!l=v:x?AV:E)Q^ GQ(l{nMm˰13P7wL+=6u@p71vyKY Jrti; >:)bǤL]0blFs  nCbX; ńth=.GKD*{d|:2FCn$Uִ#G(3(ܾUɞnӭy&${]*z;e,2Pݑ#bLͮ~KŠ['ګ6J%UQXAҒQ_|@t^b-#lDCFHWyINOZVS]5@t+S[GKSgtc k[$nr,JJt6*ڴy>D׵vDQ5F.r GG;OMÐ?2KV~xGjGְE-BJ8:KvIM07 t^*jZCL:3S,d{(5T=$g4pȑFxr_y\l*ՑeFf{NU!PQ O_Tz < Hl8S}CC !BNbMJ=p[ӕb*R쭀ti wDy/X+}x $aDHœT^z LGUD`c"u {U_vh+FM I!;;"Ǵ^wnnԙ2 9HK#R)Z-@x@ĉfg+w} JVQqBu'!*P4"?i}Iܜ{>zNǴvTf,arE`ޣʹ/!%ht(|G3JLX[L')Μ%:M/mǾ%؝)5-+Q2ْ]'|Ai0K&}=wE Ej^΀2Cv@vyS+fU /MgpY"6dJ~/6% 9T-/xB3N̈́Q=kRszBI{SXUϒ_[T>*rY  RO;((XMņ};BI9Tx!EJO(9_K5R l6Cʑ#ǰdklVͮk,U|xœRkJ=m.zחGp2#E,6XpwgJ-JRG#̂wc5}tcQ[yK}C#Qf%@UjByFZssWt70FJOH&l[ӽi~g9}ա_ija괹uy ?]qL| Jx,^ A@_$D`{9 WheF äa\f8*F_GNy-FKlF #41 Cn:1.uWYHrY~y nmBYP/z$q Ψ AE; 7Ï7~Xuhcx@jqcc jI bJQI3)$2 t >x, nE#T5M2vw Q{: ˜n%k pg&Pg W#g^Tw&>|uUu&0n<ϓ&K"4-H p`c^7$Dgk$=[ CZWL_ 6|y*M۪9iG!dVKT^{R~_`r|QݢX6nk|/ߪ?endstream endobj 194 0 obj 3847 endobj 197 0 obj <> stream x\Yo"?bfGgzGmC԰:5gb??/WoW"YNWGOxX nmaJWO7v'%4y9jrvǙ:yhnmw)$}/;q>z79ִ9|k6-kA{7,of0Y}*S*)1-ܐ>3o r+$S㏟ Pk_wVz?Ѧ6g1<"jͦOraKH|:l%?vA}'3|`!xw2y#Kc{m0零幡w*viWze2k3iq&k PKjScs4S*෬tL߁ՕCd-(\|Y (y|m?b$-)2o:"P#/$xSH^W_ޮh a V·z4~tuXlAt{q־~]\Wq.HIycAE/0"1_՞sq4Zr1!B(+:a1Ա PL aPwScs/T+ԨKH 1e}(gh4`!8D2*j QiH?50CwsR MGU>/~orۨa䜆7B=#HlJ)hMrbl%Ͼ:HM j :.j+S]oU|Hxp?ZcM 5>$9\uiujMH&] ⢡6ƈd\dټ#Y| +O(g BV= Sx`5R F&)[*C]@RDh ȭjp`Das:JPJҽ48% N;[,m] mX~tvҫ8Z]'0뤢$:tyKqr)ENx0 踴C^y6*A` ⱉuÆo 3}0P|'*Ep7T%QX鏎[*8,! d4 khfb% %NAᏂU8^8.Zeޖwz]{ڼi}ObOZ<(|tY߿j_ҕDRgo_,Z7%Ʃ{-DWlf 2F`2юH 6mkWd)J])6huh\I\ BII0!Zr 7M2VKmL)Qg6 x $2xNbiMy݀᫲Gㅓ@*]Kd,P1 1|}^P1Ϫ*eBy}G5BEİ5sVrd,wf&͊N R%A8 snYѶ.JQbA'֫Gwd7tsd=jg 7]=74].Ca!|",*,MXyKK ^$*i'r9xs8* A)hwf َf SƤ5 3d0$ܸ /Njɣú= kj$5)V-s) `IddO P y,Æ3lZ3lhr'.3{Wf/2 FG>pmK#~dF/jmgڥ0sLxhGb]A:pS>,aQÄ YB(TB:@P_ |Ǡ 0u:K'MR R+"bZ(F]!NT} snkqRy"[ټC'`ntH^ڟNf @ke4a Ry ˴f:\JU+#Nˊ%L9ydvXTlkut)+3 m}Ԏnr=ژLnc797X-\rk؂\GPuQRg:@(V&R^J&͋"zSc 7+;ź1YaiGwl? Vvg%p"b*KH7*qX4T܊դ;-yϱZ合7b2@KQOKZ:C]񍤭@lxwPSz@7(Pľȝ\E8[xQ|SOx :OFRcxXrMBqD2.a^YƁf &HP μB<^pIgH{k5qNvur{Xh'Qs>FZ4v>pٿ!?jw)"ƴCħ]eVphB;AhЫ?_ ,= )]~r *,#8=)/x$8@B"Q&py>D2Ʌj}k#'}"aS^Fyo\~tJ 5Xb"#  AyJpNg4FOi}!mh="y)3S⁣򺞯N!XvN9J$g 9)WFP[EV,2L/H6g`-6i^PP\ (\V#?#ܨ<[,!hꡳŀiQ_?=SY7YegnK@ |Ƭx%Aړ& Ԗh.iT}Lkft.:SU]x_;&?Qި!쵢ൊ3/qZKt%+dD?:9ؑc=x @PT0V!+x'~P g GA`|DQom2SHҺ߈Dp@P(2IiI#wD(s@7dLV 3Č0؀Ш* {-,?;4t;0c|JxvFe<]+t'mTU/АiWxA= զт43q&q\[]yt.=n -RVPNK78槓Boiw%8Y _hFņфsr?Cf?$! 797^oK4m@l h,}$AL2+]P`n !4 '?#?wV/2vmb~43% ("oIseWPPh.:U!mq YHQ~`}-cԢ!bF C6dË!'~zA0 IH0y]E9%?jd(h,6S~aEü28m@cm"0&xf[e|W:!6v/:$6#..~;ިf6SiFQ$ClM¿M3 3y'A԰ 0((jgolJb9^L¹T BZVL,V/焻}? A l²&;*l> ,4+\cg޹I2S010$3K?mۣQ}rFRgM#x{JLCӋuN3҇/sNc+. BIm¢X5پg; [Lmn+>zALJCERxx63:1KdL R۞FMY+ֲET]+zSp+a FQMBU-.kCJZR "T@:5)x`T/Pt-jKryGS7lT"R\_(1 I3s9*`v7*FC2 n\DO&RgO%Qh\Y+~be-z_'IRU `h(FpQԮ l$;~A+uOЏ"M*ݍfK^.H^*-'P9Ri(RLv[v5섎!cgao= wx|i}1U2٤$'tHʪԤ{1rFDā;QkEc}s F6‹NQcށse: P+*9Ka J,IehIr=$_P:$P (fIa4BXwWzֹlL EAl,)AE`V F#Yć3=\,~v Wy3/"K]Ǽm5g45j<:Ev*XG]^¾G]E]T4X~ċWڽM js)[||/gȒ dųn$qyWMI.s] jm 5ְSЂ'i0d|fߓnAh{Z!X:l6v6JNH =ʷ<htCn}P ef;u[,F\VkpMaE' |57gxak2%U١e}\TvhEwo CVe;_+)C1o,IFGȓ%-`s O<~5 JZmn?Lq|見܇u{0b Bp%^VPLy9bW=ƽx] ,4/)M҄Y!T) @.)rtյNnx%0cc~OoZ3O9$I1P<loUW":xxi­d|P*XldURb 轵* 0io6A\?C_J7%vDn,K&[V;i6MK m*֪<5%4wpUQ!&hL>p)zƯC(.)WG\$tЗ0vͥq /crp7 "WBL`( om8p;Nz;!5 .um.QJ{t;ɪ_ArU)図T唵0ouS$'`*tw8]Of<P*yktCIXį nng\A>^qS!sǽ*hW-Nmt S-see j:zO7WݬU9yinZJ,?1&"%VG~,`ՂKL;.s_ M"vXuڇ5<{ w:K>Y*Iw#tn9ŧEC~; >_qj՗..&hC9Obd> stream xZYoG>7LxYö>D@ J%X^#ff6v4鮮 %oh7z.L$uh$ⰍOhֿGopL^Ҏ!hyyo٘a(QǚSkmh/;p!2־x"!Nv񲇗48'<O8qZޏ#_N1A8 )>&+D/[Y7iי$!euZ#j/aT(aMÝbdD;wJ-#q?O͸^jy豥>na2j+m?Kt<'F$bW-,VӍEFROc&$a -d(^"עt' f #IC$l'Ǭ/2,t<^< %\Y eo XQ¨pN8G꽬:ODQFj >h^qľ@0 X&q̰A,.z!ܑcϦ״9VE1Mw}@% 왁w3b{Q[a-22>0Y?^R<=8/Zw [imVQ4LD:MK[x/Ds:Ĕ' NHVa_ ׄ1_ iGG<:>Vj9!?('|谹cy+jlU"Ly:ؙܹ=1fxʆqrjR)UhJTq؁Ǣt7tAf8T@ť{&U/}g9792ԳD[KL%owJY;Uz}<ն.qcWغ,P)@N6@pLt;ǎB*o]0Z/]ӛ1''Qhi+Y`Gݭރ\9p' &I2[AFz_M/ѕl*I

ʅ! ^Ҡq(0wUX4PlP79hD޻F0}5D(LM٢OʂjN<,xb5T!U{SD$hN~9Ti\L!\TzW!?Η+ ]$#Z܅D0Y;ba eRWxX9f;hPU`v>Ո;,5 L]|*$ 6 1 Ohk`Ljš1C_ckL4( 0SN`!F)wh?N68*A?Ai``ܡZfE[Z3s174Z123sK c1LjĦ/2+ =fņv2 LZžO9MU찝( {5tM |E''o}yڬ[঴3AޙLos<|QFΓOjܵOܸ !) BYW<b2 ayV>j_gpdhtY:Ek"a~6#ȩ B$FY5` p5@X@R]lx%Bpw(X|1r9_TB#r_x;W^ QM"I^Ot&_!H&7'LjNJq Mz)r\ DwL2LoGuHQWGogV9ߩIU sF%+b. _·ԐX-S, GvX?:ޠmYƥ:ώ9hH&(W(Kk3B\N: nK. sD)v=LhS]mwI W*e?oB;ISx'Bo xX6+'z|%sUKv׍.d?=E?T? ˣ0si0їVJ,|Lj?Uk}oFyӅendstream endobj 206 0 obj 2129 endobj 209 0 obj <> stream x[Yܶ$?bRp8ʃuQr$ySySK{(V~}A 1{ieS8`7~wb⿻Nj~ p~!2{|z+R\n,mbi% y4n/~hjW3TZ)eM3}^ZՉAiu熾I+;c٬ӆ4r~q}sٮ4ꍦtTHuGY7@OGz^Zݜ+ |-HѳPم#jodyȠ| {Ŀd AxvfnUS:+%nq³쬵~5!24q23iaZ 9FzX>0Rk!%ꜳ*7JyXG'@JN" gV4rՃ52>N@OI {i<`!'D.8fOLmD:M&fZ]A'CO`T5 `wmGzjWq 2#Xzia8X1NiEX^kG! E7yxx Σ"ziVWֿb73/^.6݅(WdEEG{fU5 Ow}/ĸ[r7ރ 0{iƒ]ImAgy'T<4 zY۾OosOi8iVQlx΋dzv%?hLĚPVౢݬ gGYK.IL(('p"UY^x^͟"zT#Jޣ' F& _ko>"?p9gq r8uvEWKBIU,9 2.yg_ԆL!L qjfnx N85w#R -a t:³\4xP>|dmBoiyE"&fFKO ah4F6  W6E@k"_6*m_eۅT 6؝Ǐo`sn26U\͞9 LAgd"@8.)܃^#e<*nglp~j0{u*g<%A1 _QT9(a*JJ@fq5$Hu\m:!^*`p/L2X1@  gc-˸9&7]ԏ/lxrO v6?I2`MT`zU?AσIFHd?ڃ5 NӢ t@VvՀ D`MZTC휪SY{@q+eJ!V˜kn0"j榟SEtI+A u;kc˪d{#YU?jw)Y1 OjNy·%@dXsv#W.Jň-7wT0Ȍ`8Μ߉Qlry}W;$ؙSR2i"&1|Wx?VyPЦnʺj~s<~xrƱ :Tn7Fo&Rf]ӆl09?A⧚.ʓ&u*DuM,"]N&ە;I"C'b?!](d6rIa64u0cUsf=szM}ܰ.&+WV=NQt]N& DIlG:V4M'(<{~l(CI&< 1mh{l?ܣu#Gf//p^붂ZBqmj\:{DA&[Ϩ:@ɽm="2ϩ@Zf^I5vM 9zpS]& p쯤&^q|3o.]bȜؽ=tC/QIc-/w_cM]oSqQiH؄r5T;pAE"$6!t/`Mnz^LfSxd}hH2ZiިK='2_? g{߈'zgܫ{L7$XcOVmL-I]wyK| `rwrztBzSvD2~4 Vu/7?!`:%-)4- lU|FIL(* і+ q׵!Qn۠u2WJ7$C5n Mq9xߧ-JARdFTpsPC!t;؏7mtc]|eo?E-yR !/'߱7i"ƙ,8x[](b9&7|&A %0kUjgM8׻BS"`޺O'[l ˆVge ~ W=|FwM˞+Yn3"uMʞ\ievlnQҡ!Y'RPć"2= aΧr.].K1)/ki!%تWHo -oyS0@}A$­x_AF]zvQ y=;|S@$jM"Q-{+b 9Q&'1^PXuK,H+1)Ӝohr$ Ty¢lb"A|a#di eWp.V쉰c JLs9o$?5`/FDl 鐺9?dUNH' wL36ݾ̳"wXM*C٫#dY9KPs18جхy;oť֙Cysנ|>ig@>Lx, GPv5@K,##W0.d]13Zr ed@9^JߕXZ2 eJ$Lp#od7Bendstream endobj 210 0 obj 3398 endobj 213 0 obj <> stream x\Yo\Gv3И=j_$cgx3`S,Ω{6)QApv,YڈInW=u$6Ϗ~dRۉ&D596.z3/>z|7<=z;ۑ6.)髣=ǿkx="Lq1 !c? ?ǻ퉉~*q0b )rje>^ӫW-5k_PlLDWe{:ھ?kx3` OH:6ǏsOZvuۏ[#_DF3_ڳ>z3MV: ٞUK`YNH'66< ) T~ITF 2 ෭taN9Suk}i}cZ/%Ұ+,^ݗ21`k\=߁Ar hi[0/\íM`!̤a2 \ȏLך8礍P'kƽ`&Z8QXVF :LF:5Gq&#l/)&ٜIGcXl'#q&~w_ƛ* 7~^_ِ03gy1Pv^#JƓ .uFK}#}zNJl"NMQ2Ø*_9aoFoə4fO63L T mk|ډ|ߌoGu?'"JүF.WV2#tU"hhgډjg fsʷY~f߁_4l~JH3 >Q/FF|8јv[a=w.Qz&ztDjDT}ӣQ*@g*!HpXkA7 8)*0.Gq*عe)RTN#}Dw2J7QV%CYF[>}h [2w2-_|u 0 -FoTqu˸mJw_7DNǡ+~=O2p-'ad:~IC{"$7yIBd[^i"b^u_h_$϶fN6kP+2;kJuhԱNA9fyӕ\k))}Hbz'jgc^fOuّ$=~ = GdNpjPǚp hS?Ge/M' :qZr0#Ly .1RgvhUYGrت0QJehvi z 3#|#d`ӓ&m_p)|i9hGr: x,(f0c+>-vZu&+$.ݓ )YBBŅ!HNg.Q5QJJ2b0pkfqUY̝br(ag8ߘ e'hߩ-QկWm=}<#3XD<8/ ƴyXXyG1uE[zډ$_o`u _PNUv4(dV ʱ*0]̕V}!SL393ˆmX (= wAU;IfVt$21(CD]޻ &5M.5'>hXܐugPGPg^Iդ`EgqP .z"@R CZ2Oe&(0u8k{]PGc$" u jYO ?Av+D&2d-w̲aN"{]AgJ_FbPҪEu:zInn1,%uR[a (Cȟ+xxh,I>|GSigQ`y`Ŭ*+pSDz҈~ːDf^ècs:Á~uI~ahU6pe5E_jlvFT1Qer5ʒ 'ENk"r8v9T]%n4D9PDcu*D321b4AdoW4whe񧖾S%ADyJv`H=\%lmǵ|EQjaeS ZC->%-X?0v`5wCd \<̩a1 f>O+xOŪI=:?y&ӻoОt#b2fa %.tʧafs9 F? j"i9I Zq A=p4Ƹ+LY0łYlhE7Cbl_~)+\g" J\O4-Ct=_6M񂫏M4ɵj<ͺK&031T6K=bEQTQQ[޸k^๎,v|u#.~1.KX }H?dƥL_wbfq{TwR@ nZAq% eҚW-Wrw@#|UNG2FxЇ?ud\ `{ ~.dJ{b\ :AaR@P(]F8ﮀa󮳝/#(@)BD|p.i(NfL{& !y,r.\+me^& ɫJ#K``ХH5C[t+U򣗦0%۰tFLbPj}C I=V]5%iݑVeƽ& sDC8Ys[ 1{@ܝ ZB(Ęf$+ K\-7LsN=(HsA ūf9I,XOk5Gg]=/yp~}]b%f+p_Q K>晑l!N@<牠b?h_1*s'7"ѺƝ5+,UMc2%,zzOxo=hRɻѝ=rVg1}wk\q_; %9J9W^P#j^/9D3[TüWؙEyf‡a%Kbϕ}pxf2GV'i䮈q0\7tT,l]pJެW[Q7(HeJK*sTZDd  z!" #q9. -+Xbש|q5{!A}\#O 2zA*a'?j fgt"Y˰.3P.㤖ٔx! Gcw7RЮ⾯*k+)F!5=ԋx3ƬloZ~t{]n/ثmi[e)MW_wdw߇w=?!-f+ZH:pXOS+3kڸ/!F<:pOFs`o`8l}xӧu:(myJe0Ϩ=28~[S3vEPv Sٶ]~O'{O+׾E %vj( NS􍩇Ϭ]k9R]IZE7My`{6EdZՅ:qDD]Ji%l:2] ,>@׼`*~q/)@`ʳRC!w_#Qf]]o=+?${ nw./A>FXx}B5YKL6IRWy,˒ =Jz*ku{d%RLa;\MmjmP6_jZ9UR|Z!J>EZҭȏZlV16,J$\j0hN9{,wqyTTp*vv'#%oeA< Q>O!$kwP5AߤW aS0,vuk l{(8lRr0eHъq)v ƥw T_Du/× pŸG*A!83)x1 UXuK1viсYcbYМ*tZֻCM״Ȕ@ ٫D-<b|6o4CO5 b5`+,m"6K\ \ b2#f儱FasS7iHdC=r*?Uio3bAUXljĝ5=^uyLFZ8gIϊV< } wW6oJ=`QAP3PǐsF2|YebAFcZzJ"c/Ւ @xLLKzL=@zE踵u@^T S ~{), L_ߢ:ccq?胻zendstream endobj 214 0 obj 5414 endobj 217 0 obj <> stream x[Isy?bNĎF9ұǖYց(4)R=%\5h-[S=olsƈUNg367l?׽"\~YvKAB/HLjF/tGn_vV^|qq1t#Z/>tKIZ.(0 S> %/|swXMWHaaE'}WJ-LORFm)YsH(4ݒ% pe|I&xxsfD4B%%Xzn-]oKcz.d^Y`r7uRDqnDŸ8u?zd!5[\cO p©S 8Vyi6LefCSAg4i'0%-++߲SlM1!wV:|ZKcvgZ='u?,GGUZ`^XkMҀQ@$8,嵡5OB$z1z]t+p0gܕ0*(raT@E )_ Dϱ[hIDH.T5hK% F% a.@&M/7<< @M!5-/rQi|2Di?O=Lrs+"9q5S%%,_0LrըJӪn/%-B q}XS2yKQ?y{쌇oBD}2;ksnF뒶T ̋AEx$t 7^RQϮ+DAt.kώFԸΫmfʑ[[ޛ78Ӓ(ʢPdK1SBӄL414L. pj(=rf,dK=DںT yN[w(Qv33ʼM՞73-}6ҥ[;@l JOf41@{/׭pF r ! c+۲\zX櫴T@=_J NZ]Yf^$}FۭgeЎb %lFdrZt| SMC}j1/ND3ijMҋy%>и!*V+"Kf'!ιn7",KBq3z*G)v;;]#JEGy[^o"1[?1*cu9OP_Tx&qT䄵ȍPJ O*{ &FTd[C}^3޴0zd:\Ö;lxܷzN,kYr]Ux}$.fP\kCYi} :  םc1b<}t+roY_ͽRh+B#9l1HPh-I\&K[_'W?QUqZơNKWa-Մ5!# ۰;\Me6>(?Sk:գϱgpn1Ĝ#h粅WQB[ $r]<hzdӱ32ִ$BNNM^e};dՐ*)8w-[1霄4$&Cq;һ-;byA١3vjKAihIb@ л,3HtA<%Sp  ;JENEtNSwtRo w0ǁ1Tl\XZ ri|<[GiԩKp0F|Kfl|wHܶ…f6pNv1j j61piA:\s5ZLXK'O],w{+.9ՇvkOdDp1m| 0(YIWaѱrF#GQ eF !U&TVc䬹|8XZ j5Ɂs뾘`JDLTHa"4(U]#wL[Z>aU52fEBÆJBmSն QMy2D$^KeȉA|> stream x\Yo67&o'yWn ɖ 6dp~HJbˢ(zg԰᯳cW;0f9<=}匱)g/w063i:ov~?Z,Ez-X's;\KƸ[?FΏbwJX֋RvL:0p 3?_p kqm,DǔmFGNC.K:5hc;$LؽpGﱯvӵ2@vœ d;|6oz槉a+wN~ί3l_l-N3zX[~gO/g|7su6L$z\ڙj bp}z(g9G$l3c'! aqNXug<9G KfxGǟU!yqc@q +遫D .N:IVB$SRzAtoeeu0B@ߞ-fspI k>C+(]$ pw9Fϐ#f$^ p\S6ś =xMa 1m󉗋uesJJcHb ?M4g-z#d5=ZV6, (0;WV8WVNȲa!=lE,W618eys$b4Kn6DxgjOdl!gBRYgm `&0 Jte'=N&T0~%aROdi;v^T(GIfׂ hہ%j-nVODFal6X <DB|Dn< ~Xa̫qxπr$x"> T/}̈́%abPQOsn9gg4ցDMmX 2XMRK:e5y`!<괖XDzޓ589[Lψ30[ӔɫL%KtI-`(p[@t^ ::_"*5zp(LHc CWpǛ`EHOMvƳ߽zJp.7聭<6suA ,d rk[ՐUĤ:.bݓވhj~0 }ʃF47Q +CpFQԃJq868 j/A I6O-X|FR$20W0)0ڰ]t3 ,]ʕQ 28$K"R2ylLdYX4݄YUZ/[6]fz|(C/[E( Z;RK`j6]~Xm{]yhx(cj)*:d2ae-`EՋ} V}5EEp4댲G~իɷwL?tSYa8c<+JD[= qMǾvne^b+{/z3L&ָ7 ]* x>G hbmq18&8Da/zBD`J>6&ߔȐjS5e( MV:lub8){Cػ}Ţ2@p*:DLfs EڹrA)ї'%pr6'ځsi,y/I\L-XKUOʇ*7C!g?lɍIӄ!SiLd˳b)egT5CmS ȃSE4(qdu'?ήod[NJV7F] 1V+W2 cè،-{(J< ;}91'fߠh &%L`{=(P?UJ=~nQ =Y-4GʪWfV% g=|f "mSpAHF5Hm/gpytg`f`oZLW&lPr97n40Iɦl 3? 4W;/F0D+\C)F>Wqu] 81k&ˈ㨖ͦ}iU%@Λ^V1U>EUIޕl:o-;1xhɪ6،[llI6lL}k!=Wp<>%=\^ҧS}z"?8jd$Ӕn qGhOT؎bg: <16*q'aqm"|?3nzu8N*\C~g%;@*WjY>Sd/N yEO48vT[ *:Rr^Wx<1RF}H7KO${o> =CCNYYXэ*y~HN L黀-wǮz'˅,+uW'F >BKAq] ZjCǗ-<_&U>'xR33ݻW4>r`x?5' uїdNʰdQ+ƋdM0^GdGp/\Upۺ^$ Ak<-\z!Ui"7l,;P`:@u.wVX)B]0b^7}_cSC!vLjeH:DQwH,/)U)^}Vڌ fH=M=+bE|ۈ~9Bz bЏװdcE ZVPTKz.>Dn[QV> [[us?'$ *L**e<%J5^DHV_j|ыr/L#EzͲ]X̬* fp_ eiGS"TW c$Zjcx(+#BMEB'$t5L[MhA٬ R(\8e(R*szLE T&dQshUG-UV֓@;֚Ӡkq* Ȑ?&,Clk>8U۫aIlzQLdL1VJM/,o!Mk#vynC MXr|;e$J0>˫gS;A[DT*$E#|hE9*Ϧ4&w5k nR K^bV|o%ge&EX(i͝dxߨjpo!(I{k7W1o{%endstream endobj 222 0 obj 4739 endobj 225 0 obj <> stream xZo"aiU4gIU$Y ɒ+p >1pH3%wݟnvW0 =QǺE:7t*"x,ٯ 2*7R)S!RA1FAÒ;$Z Ma1 ֠g0%qcO*#7k< b!2i)Hm`Kܐ=@+!@2Gi,~=n0e)f$yMim}p/PdpCSNE䦘Eg=F; IB:B\%cE6/529 > M)lK=͂vyz v*D+Cp6nޅ!Lgd7 'Jj4c.)A iaz.X +ae-\(qkǹqyc<΋ܹNY?`pxV_=n8<|-qRYl̚ `gtq[ xM,!IKNx0Ҩd?}{}/%|zYDC}l\+3LÝAR*EN3K5\wVZې*^liLYξ\]gaH#Jv~-橧FQ wJoLܯ^sĉ_WpI5Q$t l1b3)(U\J/LoToAζZ3͎M!5h'W^~*UǬ>WY}}5CxSǨtLIRV:^~:ZkU\B ~`ֻZcfQ۶pMX'z%_g׵V:S53 أo[3#0lv$:f}L5h)z  }ipj*AaT_P)BZJttj~PUF1 =B[E&?6U@nj6 N}RHˋ=(TP2+Tʱ9;)?T&l?TNJU7ܯ.\|Ve¯ ͵ujWݏendstream endobj 226 0 obj 2489 endobj 229 0 obj <> stream x\Ys&?bb-RZsa0NɦTzHS$-9>su0) 4uO__]+Ϻ/s9J߶0l{{gu+xl7ӽƏs1'^?y?i)z%b޵2cu~ y?9N ҺΉY؎&üD;œfxypiNA~7xNB/e/_6KmMze0~[j,wovmu'OjmBx0 f3v^`F.7Sj<juŗRkK+>A|_3lo#g- I|7LCmv5}' 6?`lw]+E"Vkﳏ`qmwkU zQsBwp'^(=hm D߳gѭgҨNs}fsVJHN#ZZ?7]7;yrzxK˦^F%"y䇲_qB,%`A8m}m/(w1^B~0ILjJŻ5}H Qj]j#`jG=s^ YVƮVQ&FPjp-cbG@@Rc 8Nf@d (ID V CR Oon ߥ7lz#S~~`U尪26}ZW5`W;?{q6d2ӫUMkk:rGytg+uu]"7gaAY |q1_5OPX2{UttGzZp]A3ok묲a @<`NkR0L'[@Rk͎A-~EY(JF@ J(jhZXP&-H1 xWw\1}"Q_/b^t81Oب`U6҅tTzR! V75f E=K,ʹ[[3630ōf @(p(kϯgs\,V'cQEm2hOuC|bIL ]JMKż6 h Iԧ=IKyEd vg#HŠ EhK踸*cN9m*q'OZDZa!d7zZ_h҈)`4K(#*>]8.JnyXo]$`'cmDtbm6>YZ>/AQ'gky\k6<8򃀩*.E.!+7:1XKd?#ɉ}IӶUڢX,>.,x1@Jg팽",Մ촾}J( "8L)>iaajqϞSPʌ}Y ReE(|ƃBe]+v~ޥ,/zDO?py`v=kSM|me+Xu,H[_ư"r.ɣ뭌1Qn*R62J;5Or np_!ϲzh]6jxqTN>wV j]aRښ7zCfjz9hu|-Em!zb"s0%q;{%LL`l1@5b2s/Jf~Y!kzS|ϑ0Aϫzw =WvSe5Q4fYct jh8.pS]]ɇ}RZMM WO[O11/_]S,zDY^;2340RW>.v;[`.F۪Whs)[g\T?P&t,ui;7N+7Mu3,;Dw ^ir8՝mxUJ<ڜ~GAp9gh{VPYFhp[%;~H(>W(J |%'W r(*&os[zIs10Fg]IX3ԁ5K]v0q}aǷցK\Tԯ#HJ5һ#Y=m:׸-l͒t_4^endstream endobj 230 0 obj 3655 endobj 233 0 obj <> stream x[YyoO;vZu\,F 0(ծ kɿޙufu L(4S]GVV_<^KOWl}x-WeFv^ƚVaãͣ=y~ou5_?o~gK LJQ]g.lx|}xw2zU &;:6NWm[(fnoǓzdm?~Ox s~X_j6~4lգ7f.P=<@HP[8;rPNŽ_oab}|L9tvTZOʨX ^ X?ÖBc)glK[Ǚf RgvQJaTZ,$Q: U$OZoJe@T$%:1%FT H b #ʋp=H~/D6GGzXv+ y(t2J 2-oS8,rU/j6~Pwyj|7QuWWJG~}\?7_Y}3iP_fm:3((u\e˲2o][#EEy^GR<(m &( YLȰYDM* QE['aa- @ aTn8|閎LqQ[d Zqg<ע[Xuz$v1'uܢdwX0T1T p N2i}6"R(`1ɲ['bPt8eYU%hvԘ:*< t: QDv(?rz7 ag|\Ct"G,NNp@ج^%;Ty~4ﺦ?*РfQ*Kw@w挺ҏLsJ|^"ns($ 2aXF Kt O\ouщ<*/΋>ޫ^is6ǍS_q % 7Hoo'olzEf F/xV/FfI.1Ltmoi 4w|VC6}Tc3$$4)#aEިI4o nfZ6'q~ј\0݆f6m/!w 31bscXK^̌| dVyM ACC-:_^x;n8$2?H3] zxZjc %*'A8嫣{G=L4B}ɺeXϯO`hwϽGZO`7!v}n0a+F4 x?KZEw;֢#zEY0Gc y?F/']8ZQf'ڗbz&%nCR5gm`/9 $h7|aThC7cp q#T%4Q2yˍ6A&Vjzf/nT_OZ;JZ%[(WUkoe_4њE/Y,u6o R}9_6mݽHVE6e\nzsYr6yR wn>uI&8FVț!6rw$}4n{t5)n$Nፉr)«Jت(UY8-  '{3QMPk s{źeҭ| }peҔ *2E8&(0L&ЏK5(^ң%,$*_#(AFSar hb BC y $w#LE>C&Ii: .z z.F w׳AyD+BBҏ|?ւQċT~ ddp18?hC4`I@  6ͅY I$ĉ"2*+p|uí7 z"Zb\ha/g[N1B*gN n/cٰ+%kIv5*R&L ܴ |TxpP~p/EqAf%٤SPT_65}R:=i!yYgLؾj+%ё>dqeo0G&Mne$o7z?7w WNN2&͌?f`SQIrW,J=rLF9Uc[OO$yɕo6Fn3ГkܔDXcY@oĐq==:Xa}14AXWQm ; TG%bvŸ̄yV,"hh~@r W<>FkA&%Y*~m7Sh=v ?BratnŲN͟(,r'5˹J±&h V8q K ͔0+e_endstream endobj 234 0 obj 3416 endobj 237 0 obj <> stream x\ooP}cI)&udɲp$ {gvIpot$haKr8Vۨh{vܾq[7Zuvk{0Lmy.-'_NgJi۴nt6Y仩jmǨufh5nt[MSqa.ϧ3}?>lՓiwe;ך{\A2qG&Ynrwδ)RmqrГժzbX+>ezgr &Q@ Ƶ 7o=l {1uszώ ra:Y7{CԄ{0w 9:l`aCQr>ꀭcyM,3m بQlLKMLQ#j[t0hX~-Pk䳼^4kߊ뿚yZL π UMz+bmޠ܋v˼Өwz `I\zlE5'_w=_jbO2bg{ɲN|–XeѦ:rm;n2ζ\$XBF/-hIt3m#"qP> _vO-W*2[s~0A);Z׆Zv&gϙ07lr~A֐}lt0# lfH^;%K&/#ۻ,_^/b5o4<Ҡ_pŤ!D㶏ZRkm{^Ig5^2ߗƝBolz'¡qƳɓDم]Z蹲f cI`-QފLSIUww.n6զrn0pqrZ,&CҸ'@5< V DŽoKgz$"x~W4yk7Rt~6df#E8`LЇ"DžRjRO uP+^BݚΜsSO!(j%MC8<7S_Wๆn{jȬSo?'ujI ʘF=| Ar=.3dHp$}),^r-]"7!$!'x jqQYHVhRP&?w O4e=v1?I1V/KvJ2 E렲8]VA$o'], ~'My}1@wu1> x32g3be}B.Wt"G,3YpBirׁ[vͲwJ:97E՝>+!;Bۡ0N'F#h?O +nFBSΌ}z<O"LD+|C"RsafnxJS&.R:+M3E.$yL7N4ypzSZiE.[&UՉ0PF,1^+;e ER /=b3tEA!Xy5*q0A[">-Ԟ{{A݇BzZm2?oɍtR΂<}Hd>u#g=Q-Ng %% Yym鴸:ƈ.uD /}FccK! _UO?Hz47f7~[ M_NT[ K#]z/SS~j/:ZK+Uka7, <_ɗԡ:I .MnʣY׷U6(8# WG{;<߫'`{N aWꚼfҰߕgC~6-[F"V9\4tttB>4Gm׸zt PG-QbկޙM:\uz_It*Eϗ,zfjpġ0)}d+K'WyHarqF/ggteʐ+aIJI^.\yٮk[e(HX!5kׁ? Fl Ax=(Wb)(HeWX2 =,]/BeBXXY:}2VJELF>nϩ(1 },H",:h~ Wo j T,~I_V߽FuLrH5< J 8A#^: R[ӥwJމgt5^}FnCT馋z_.G/BOp ېЫBC5.%, vrぶ>୦/D$3dSΤ$h1gk$}8K~Cido[in/ԺLŋW_M/-2 ! օXO -5km0ty%<6cΪ*t6_G*ѦXFRMkb\qQ;X6)n 4Ѹm۾jٸZU} liIVS~$:Kg xK?$]_B 7xVt> stream x[IuLSKF;@x ;֬Fr%+ˬ~{~_߆ӣG<9NxttP.kuQ|[xݱqzћs8ӽ/-ZNwU*D,*gX ?c_Oe|-N1kw6Aϯ[.oNsSЮᄢJÅcQMș3t G?|-yѰ@M'BA $$3%܅ tb0`H%⥙L\R\ ;|R-ЃOػY#\LN/ /fPtE Yuoæնe ) 6 wAic.jO8q!U~;Gfaa%CH ,3⚅Ƅ>v(/O2n=ư>l::<,w7{|{EdP`*?ر,--?OwRy.y?GT,06?+ޠ·IYC_x rp",h hA>"ehor4 pn9;?9LmE *~45Mm|JO8In|][?\+ý_ˏ{*`_~B7tjZT#-L2\β i\jT@/uge8nVIStv [j*4?ۃNfiaݧQm|L>Mc 4;YEbn CE'PSt+zU}f )ȪP"o }7T^ 45‰ťn4B)?>>F*ڟ H4=.-[<,*Z)˔>G9 )P߃fx&ɓ`Qxq&~"ʊYGJWBm>{8ޣA\TyI7wzU/O㥒nsm%q}ym˔^ŗ%C7H ћn;|3k0CpUu؍$!6н)ON" @+j-@)5{ UqM ņ} >KR DwNlŗ,I]SMVx7U"h ZcQkbk,•ZÑ]GU}1}η+:oEG;ه$k!i vc΄A ^G2FN?,!у=1X "Q76H4/NjY@9*p/o%`pu0΢#%6bogԈ2Uwa/;#1ՉmsX\Dzb,2g"]7n=OƏȩ?Ui',fQ*pV5173H ڠL|\aUO`zR2êTDw sY+#g@Yw@1&1:%N\Љ0y8 3ox~fNEwshLZo P5kAT=óMp nc j١2j5tqZ{1װ%Q׬O1T 0Qԓ$1{#r-9Ge/5>Y~-~*lI t+s<_R\Py0x(Ϋ0Lz%Hܔk\tT'NPU&KOks좉80iwadgF(4Yp6Q}D 7y<02@Fu5_ *{/".a@ 6T D4Et]}|[6)֭y}5 #EB qa#`¿܈6dӣ+B(/oMU˒iohr֤~r.#a9B[_% hnT*[_)waL_v#M`2&xS{VEPoXYSh%Az*rWW )Z`%³+-41B9lX{ f֔k1 ʹ%mª43gY8de\] vćNi7 :$,isK 8pÁu75)D# <I`t@o6ᶀ'XD80flX /Vf 6BSh@h6oIe8Cq5!b}@pdY}8<ەlX/wZUecf0mBy.^fH&&^/qvjTw r:w 18BPfxbz.F\j1l/CCX(jf^ _lEf*݄)!Sőꚦ>RmNLiQ=&QmͨYי#V25y- *N|m8Q(hBorRM`ͼl]}C3)D\p!P5X1msPp; k?&N,>zG|Oe^c5!۔adKk;!j)&W}IRagyCvWUDٲ́N,pyѝeƞ^S]SU̍Hn)9UrrSr+$ם;ڬ\%(jOv5A`Lc!E8\ e \@K8{>*RyeVZ.nLCvf2ZsO>;Al-fy`yu*KTTTxZwGH#r$ZN|Fӄt&tA2qNߟ_|aU|[QʼnAqH3 VNlhI2ŕIϨ cpw+a0ՈjcqL$~Cyk~1M T+U @PۊVΤWtKA&N_UHz(љ{-UvDF$At|yj7jFMq(jF1W*yJW6l*Y{>8DDNƜÌ0șNaR@%_P@s L= *ӥ. 5 Cpǯ;=:DEùga%J\8%W@1}ۚa h>[#gX5tpUPx.ϙȇnHXtOkEpv9VDa _;[q./[ÿlBendstream endobj 242 0 obj 4142 endobj 245 0 obj <> stream x\IGoBwkM`A H+$˲u2o^jzUV{.j~^n|@Н믯~OJE | &\ z(yb~z9ba.`%ú[ab~{oW#sh%A`̢RММC95LFE1|>yi租NEk 6 qxծvz}=+vNM!&\ҏVy[J ~ ֯b Rlmt8r'4E| >igNNʵ4^joKAct^{ Bja0} ^ Cc&٠`Zeuݮվ FN } VMr6`Zldi6e~3dVSFQ&lhBAwB2*~7W^m(Vj@,4=,*PtX6 ,i)iբ)){,t]>隳rz?/ZlnլT>G6w!,)=4[q`13(McŎGSDR4ʨY9x1O Φ4  PC@Z;@/}kT%g;Q1pYcn_f VJi-m>+4]fڠebh P7<sY^gVq!(K$,+tH/r!>]W{<+!5xkz\Pf B*0Ũ.L: I-7.Z7uT]wUBY]X֋j/#X᪮F00C+OS#k"#>ÖȭPun=:0h$tS^$`Gb"a1G# X^LNfXy#0gB Xu?0c` GvfrS/q@`R'  & Yw-V{X)oZgZHD4 gv~`@zQEzbh|eO:/:ݽk}2$'uh&,n. `F2 V&d$;3Bj +{S~}GL-;#!*d̪NjqT? 8Ey R ['yC.~@5! Ak±}7\C~b! }:F!1z-yS)qm{z}Fв=cs܍gԑV 3t.z+,!] jCnϑSqJut>qg` ؙbB>)k§+?0ɫtC&vEu.~KPh;XE$4C9*9qXhmd6^WP$|S[&j!m`) 0,40Odz 5ʰPr4op$jwh3yvhRЅsφ˃Q! _`ih=LZkT"ЄXF"_koixsIgqNK;K gߗU`F}3Z^ T+eV!P1`UUqV~9BRK>fHTӹGd0+ak0U$F1YF dxURUvd1GcuմT+vAYQ9^*0"0Vgs C .It$n΋/Z@7:CPXeG" t.Zm"j7I`|VܱOXNuhCg76Ԯq?3Ţ Duң  5<S Q%+Y 1%2~W21HZe몕](jQVX T.Tj0ѳ iI`rdJAZ I8"4 urJfe/P`ɡYAaqV2RxWZ+/!DLl3HG#cK5KNEЍ e.mOA0E&lt;,}]do98ݣ;".T`Fsq`<JAi`!wR !fДc?Q|eWX"[;6nfW /.PA9+ ᓡGj 3#6x֍ &HBՈz\vRUغĥ(| 7hO6R:A6|.@^m&iH Z9NH}b/W 2E[b=4)=tG *=%9 ؊K ]$_Nm~XM1"V)EmMw-{G{&,̍dكv|AxV l P"\ ]FKkGWv OhA}J"s]w!cY@FaC \dvH\Oj{=qN'jT5:{7Aݚ}3hnU 3Hg3ƹ"Cķs ֞Rg LFc8qj<¿R t3.mDBo6ampmfX"xVzk(>xgD_Gz>:|0I`( JWy||}ZF0=,H @J1gd NJu8v`j`"Z#nu`aud`ձD?S=]9]"@ܨ8Wx٦,8G$ /$lc/EW"*9bn3`X`2̝"rWEXt^$$]ZG-̘d㬫W6u'0vK[bOx/1yiaCnj4z0xo/UJd͍nuv_bK*Y (N#0Bp.dUXWg؅`>`k# MWcRzf\ RMg}=KzSU5|V!FM!kO;Z}ɧd7Rc(owEfR cr][&v\{1ُG0+d:&kqn5R"48Ź6a%‡!  oe/L[E i|;:$I#'{c[l8 CE`Y9a>QI͍ksr,F YT zZ٤kZy7s,I@l)*hEB2VjKJg|SgS)9|e<ʆ/Srh Uv(apӶ][mCt.iugQrC]=2\9yn LsKnvz[38b> stream xZY] ~[<{Rǽ/~3+=)*f1cʞ` >z99\3>ӋZ-OXXѿՑ:~.<ҥw~uç:e*Ϗ4}͜}N!ٚ㓫OvLf1ڝ.i]׻&7|>4v'SrQ0rve{թ܀um*잃sژ݃iôsLZBco*9esA`94j1g-=z9^ Ws*EA9b/B{f!DŽ+2ֵ1v5lT zoV|M{BN̅ω;;g'YPLl{3Q7ٻyYZ2Uճi [16BԷl[ ݼdȀ.37bJ*QMqEzr"a7BAc;la!I=eD x$4'o|8)(KyKl73Vg/km*Ew6~81١cƀTh2V )9 Nf4xMb3IG0#5/ 1sB ̄" N$ݳŲ$w!w kk&]V\/zz!*RA꧇؁i{s Z=šI38J "h#h.y%7zo+ޱDsӈ>Dn#Ji{H_52-yt<_MPmmLvWK 7O m^ݯ!ulavrXD [ϗ_ً0t͑WcCuC_Fmkxek<+ z\f P5dPNZI!! p:燃ނY)2A6e8uVgn+{%ZuCIE ͪRF}Dkb_Sqmx/3lBf}7C$ @BcZgj0V !YX&0h0$x¿rAĪ,?P{:TP9(Elq(0s  )!t(7< KnpR =\.ayF4Rdv4&rBJtJXQBUA8-56 EA D#kywfƵprxyu[dI fĪٶ0FU]`M򯴾1&Nȟ $+ ɓ~oS~ #b C NsL:fBT$C6/!x 6'|lX"kz$loWYz+nQsXF s%iS= .GҘx˼mj ^, ~͍W+tCΦ!Pq!5Z`멀C8DCgxg>ԚNx5DHok& XMXU$LQK&C񿈾%C%"u; àCOVDidp_/O , ᤜSI5cra'"QsI")z;ڑq`!~ ~%[l(Tޣ5&-q&.^)I~H Ivܲ=FPQ"[c 3"HCm:M[#upqBdɮlW];㢅֧VÒg2xuU 9#bB5<-mEl+J\@`űzbsT-Nv%q]X?E ')>)PQq$r-%UG3=8VTcM3(S AY⻠.*Y.[` V%&XdS~8X:AG~\g觱RpoN.^y.o&jY3q5cd3]p"xRJ^m,U"QB^-\))&}r|K!قo&G*i+"BdgHKY`@C -W=JVH h]U PÂqe.8zN7A\nѨF7R:\~j ;]b?TK&# o΢> /Contents 5 0 R >> endobj 20 0 obj <> /Contents 21 0 R >> endobj 32 0 obj <> /Contents 33 0 R >> endobj 38 0 obj <> /Contents 39 0 R >> endobj 42 0 obj <> /Contents 43 0 R >> endobj 46 0 obj <> /Contents 47 0 R >> endobj 50 0 obj <> /Contents 51 0 R >> endobj 60 0 obj <> /Contents 61 0 R >> endobj 64 0 obj <> /Contents 65 0 R >> endobj 70 0 obj <> /Contents 71 0 R >> endobj 74 0 obj <> /Contents 75 0 R >> endobj 80 0 obj <> /Contents 81 0 R >> endobj 84 0 obj <> /Contents 85 0 R >> endobj 90 0 obj <> /Contents 91 0 R >> endobj 94 0 obj <> /Contents 95 0 R >> endobj 98 0 obj <> /Contents 99 0 R >> endobj 102 0 obj <> /Contents 103 0 R >> endobj 106 0 obj <> /Contents 107 0 R >> endobj 110 0 obj <> /Contents 111 0 R >> endobj 114 0 obj <> /Contents 115 0 R >> endobj 120 0 obj <> /Contents 121 0 R >> endobj 124 0 obj <> /Contents 125 0 R >> endobj 128 0 obj <> /Contents 129 0 R >> endobj 132 0 obj <> /Contents 133 0 R >> endobj 136 0 obj <> /Contents 137 0 R >> endobj 140 0 obj <> /Contents 141 0 R >> endobj 144 0 obj <> /Contents 145 0 R >> endobj 148 0 obj <> /Contents 149 0 R >> endobj 154 0 obj <> /Contents 155 0 R >> endobj 158 0 obj <> /Contents 159 0 R >> endobj 162 0 obj <> /Contents 163 0 R >> endobj 168 0 obj <> /Contents 169 0 R >> endobj 172 0 obj <> /Contents 173 0 R >> endobj 176 0 obj <> /Contents 177 0 R >> endobj 180 0 obj <> /Contents 181 0 R >> endobj 184 0 obj <> /Contents 185 0 R >> endobj 188 0 obj <> /Contents 189 0 R >> endobj 192 0 obj <> /Contents 193 0 R >> endobj 196 0 obj <> /Contents 197 0 R >> endobj 200 0 obj <> /Contents 201 0 R >> endobj 204 0 obj <> /Contents 205 0 R >> endobj 208 0 obj <> /Contents 209 0 R >> endobj 212 0 obj <> /Contents 213 0 R >> endobj 216 0 obj <> /Contents 217 0 R >> endobj 220 0 obj <> /Contents 221 0 R >> endobj 224 0 obj <> /Contents 225 0 R >> endobj 228 0 obj <> /Contents 229 0 R >> endobj 232 0 obj <> /Contents 233 0 R >> endobj 236 0 obj <> /Contents 237 0 R >> endobj 240 0 obj <> /Contents 241 0 R >> endobj 244 0 obj <> /Contents 245 0 R >> endobj 248 0 obj <> /Contents 249 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 20 0 R 32 0 R 38 0 R 42 0 R 46 0 R 50 0 R 60 0 R 64 0 R 70 0 R 74 0 R 80 0 R 84 0 R 90 0 R 94 0 R 98 0 R 102 0 R 106 0 R 110 0 R 114 0 R 120 0 R 124 0 R 128 0 R 132 0 R 136 0 R 140 0 R 144 0 R 148 0 R 154 0 R 158 0 R 162 0 R 168 0 R 172 0 R 176 0 R 180 0 R 184 0 R 188 0 R 192 0 R 196 0 R 200 0 R 204 0 R 208 0 R 212 0 R 216 0 R 220 0 R 224 0 R 228 0 R 232 0 R 236 0 R 240 0 R 244 0 R 248 0 R ] /Count 52 >> endobj 1 0 obj <> endobj 19 0 obj <> endobj 31 0 obj <> endobj 37 0 obj <> endobj 41 0 obj <> endobj 45 0 obj <> endobj 49 0 obj <> endobj 59 0 obj <> endobj 63 0 obj <> endobj 69 0 obj <> endobj 73 0 obj <> endobj 79 0 obj <> endobj 83 0 obj <> endobj 89 0 obj <> endobj 93 0 obj <> endobj 97 0 obj <> endobj 101 0 obj <> endobj 105 0 obj <> endobj 109 0 obj <> endobj 113 0 obj <> endobj 119 0 obj <> endobj 123 0 obj <> endobj 127 0 obj <> endobj 131 0 obj <> endobj 135 0 obj <> endobj 139 0 obj <> endobj 143 0 obj <> endobj 147 0 obj <> endobj 153 0 obj <> endobj 157 0 obj <> endobj 161 0 obj <> endobj 167 0 obj <> endobj 171 0 obj <> endobj 175 0 obj <> endobj 179 0 obj <> endobj 183 0 obj <> endobj 187 0 obj <> endobj 191 0 obj <> endobj 195 0 obj <> endobj 199 0 obj <> endobj 203 0 obj <> endobj 207 0 obj <> endobj 211 0 obj <> endobj 215 0 obj <> endobj 219 0 obj <> endobj 223 0 obj <> endobj 227 0 obj <> endobj 231 0 obj <> endobj 235 0 obj <> endobj 239 0 obj <> endobj 243 0 obj <> endobj 247 0 obj <> endobj 251 0 obj <> endobj 252 0 obj <>stream x6CMSY8tIE>9FKZfkCopyright (C) 1997 American Mathematical Society. All Rights ReservedCMSY8Computer Modernasteriskmathprime0*:fwPwu}}utt@ty_yys$h%(+oy}|},~y{|x$L$K~xr%|0t 1qromcjF}~s? dX endstream endobj 253 0 obj 468 endobj 254 0 obj <>stream xuV pemh"5 ـ8TUzBhAB4iϛMRI[PZQteCQS9=fEUm˟$~~<ߒĤ,$IQqql( YLĕKgM܆܊N%n#ɒueժV{(=4|bu]FQ]-]xҢZFQ!SIKeyLǟ(+r]iR)}l 1V&X][נkJF%cv+_FU(eFnl*J*ZAeBUP)trVҩ- TLUE#*)U77_W+zWPh*J O@ QG0!dd8!i'euGAAZIEdO6'Dz[(;ݢ 2=.JU==]]=\΅iSHC~!y:уy P5uqCD2= $}2`x>n$xڂ$*&<7P&Q/Ӿ2DkAoliۣNZg8vh$ ^RVGv\IcvtzP942_0"G贃]-f1쯰_@Y:^mf)?Dԙo1xk}WߌAOG|'w~{!bh(hoΨoN|kl.g?9=,B3/mi/=kpKx2Tβ>DĬ%j:FTnb>+fpF- *o2e">˓T>v9 8Z=Iĸ?I 8h\pF!/45y&Kΐo'*y}m]<,/nʯ ^/yGFh ̠injBSq_ѱ@$ j vd fvX`1:q[kA(6e61Čv o6mVf4#7^SzA2eg|tF{oxE{m-۬>Ot]hޅP9w焿 }BG !a GP2v (b2\ ;u`h'YMQ AppojˉC#w Imhߺˀ L,xd4K>stream xXyTS׷1{[ZE[mE-sUZbA&AH¤ IvafRAg։jժժmjm; {?oXuν{߷vDAH$82g-,& %c|`h0nh"Z? %Z( mTk Y/ ZFo &_B߰^jneo~,,\i*R5eyԏ|Ndurmf͚=gP jI7wBʖzZKE-&S+);j.LyP9zʆzr +@ͣܨj,R㨗(KjeEfd(D}!:hko|d$WKӗ̽!!C  vf#:G62q/`B O^L}1c|4}}?DomF1ȯ Bn (KR^ۉ`G`Hͼݪ)5$Rl a0 4TO_N {@E#+@Byg0y&1Nzх*R$B"(q@#-*FJh)$r@-BVH+9IUt&9WteCbuBaaGW\ "50e/Tܑ*aD#Y{)̬XkŨ6Dk=g# rte,'2+-!,< и eWKM\q|BL4`O$$H`&EA~=ba-b4Dݜ 60?-Q$-żtO^ɰ$^&iI#7ON=[Ipr#D}R D-ב1/A&–j]ŠC 7^" dو秃"UHRr'0`G/;_M(ʯQq:Sl+Kats< r:je>tWrvZX䔢,HKu5I$՚IrܬXQQ=W8JRaiǖ$y$ka^x5^ (Eԟ0Oh4$ACFs8{U&=ީAil¾zIFlmz?.>zS8'FǍK#Oym*<]?pDW¿EzeZa^^{%zT$ʣnn&Shf^tBWxf~S,|/|6*o:D&*wFT*Rx nn;@ 9Vu٭DʅD2p2W8}UA(? 63pj 8( ZxK$j11ڱ*>C*P/TyiOB,DKس Q]j #|B#sm7"L?RI*`5Qubq [ڔ 2%\ure#Xx`?4Dh T9)t> `VuP'ڇ9poga=IE0%/qހlŒ*=)V cĢ13Ǣٛ]󦒿m!/ XЁ kgx9oJu|t=4XvU=xG`W G$F:U+#M# jU4o'Mr[MAQLRn6Ԑ˔dB"IQU\dt ٓHzjVUs [%xb-^EtԲ;73U1' Z#</'}jݬ="u8w:uC|lg*U4[S'b@9ݿ)F˄),0` |ՑW(T e˶Wה 2lZc2,hjМF AYjC, WzIH.h 6hJd,O]\Z gez}q}cx6.S!qIR}w-a\hmh6 wakV~Ŋ؊r1>f;oj{"*@R+wedȌ:2 jue9MiYn(cnvN烚srJ4T i L!h+K;J}Wƒr?PYC$B8-Sv// "-Ү^} ]9%F\vC8\:y_}r8 E^nELB6u.&MTpM{-i'K2F7y:fz^=DzU>@(ەW'\Wk  :vz0;/."(L%WeD)s󱊾pqrS~Eʦ WN/3n!M^6*h0}W?;}ۧԆAɎf&Mƅx0j,QhڠH{dLNBAVQ(zR,\3}o%FQ-Q3`AGuONPWbUF"`DY*JLll Z1ևIZtAó>E:^jU L|bf 9\9L~~p߾7Í~7-" ,`ƚWڑ#'0w %.2Ɠ3 AM4 '|f*BÁ<كpa%~$tT;)7A'I ʢpgRP+XV {ABNo&ڠXYSQkPmf19˪~/m$ymh4aBpڲ' nn*sw2}hWa3/GK֣]zсhK*0YҷڽnU UR]buMyyMGh;ޏ+΃7F۵)S%'h8^ʭ:NuzY7Z5\?ߕI&]nn@szTU*XeF"^ӛB\PYHX@-3J/},Ak(uĶe3uwv<\!(,1OYy+;Ue.))uhuڻc9f8zM=b˽nUqH|%0}T~h~霊-v̷ai[ dQeAEo |Dm' :H4 J5z A=&(j!\F~HCrG,Ŭ\HH{7e{z;pJϜ!c13?#[@ve]8,U *̗ǜl=&XD "GkЈjD č &TʤhI|ٶb~iVM ?3 bĀY_;O]~eZ9wpkJ+kJwG3A]|Z`{vLSap3@g >ߍ<mb8d!Ee3@eC_O Shga;g= h;bcKU!WRj3He6)"6ҳIAYɜQDXQqiIK(W{B˼AOITG5[$wHY?5(BOYFw&鸤"/-/5 8:ꖘ w 0 endstream endobj 257 0 obj 4527 endobj 258 0 obj <>stream x]{LSgƿCxgөtgdaSd([{ii"(mV (*N@.VtM\&6uNSfKC4-/7qg>ysS f/:ΰzi! PWs9;~C)OO_"=ߌd=#5|axM6fRb%M5XY)% iËt)'X 0ߖ endstream endobj 259 0 obj 1445 endobj 260 0 obj <>stream x[HqK,kwax 2!]j+xH(\:Rys榛~h3JQuUWRw仰t/ 46ƙ!ky:Xv4Ϗb+o$PzPt| \C3>stream xX t׹`& I tƁ:4K# `ְ`U6e[ekFGn˒ ` !&iKKIuq_Ҵi{r|cHw+ nF6[cÅ;i5^zYkjdHw 5ezu|3D>tPGUjW2INq:` z dԮy$>M:mrB=_^?+b)IyP[otG\ks].gu4CN^S =vq߭ɠR K}>@Z`4(T-TͭO i0J1dz2Ktek540SgN*vx?_]A{exo^ ]A |YzQlo<3_zbPwѱSOA/ qyARq ٽW/L6ʁ40sj*=4usy\h]_Ma@W bd հfZB47FDRWCM-tIv5k3dlڢTqV8#凰_:z-k)?^~,x Ζ-c uE r!ǖ7_zK %Pib_x_=Lzdgrf4PP&o&=?4 djn0;P0* g&KQ8C,rqw٠~HG/=UG\CCIlµVXኧos '.iͺ V" }3&i"ӂ,`u4bPMO5>EqXyO44O@h/o:G |J^Y:7>HM}0l 9D7=:&⬢7}D]X ˰Pwڔ)-fȿ4P"^=O?;gϬgZ#U*@U ɚ Jh3xߖ띀(AʹgyiRj&$nA[ڰlPK+ YnX=%C/ eJY|A'O1T/ ^P8Ύ.-c'pB \%Wa$fǎ {铑pScSޖŴb=h d9Bodž]X[i Hm?Z^e;L15z&ݩG F1/Z~?}#jX$|ނc(5"x|M>'8'ΔXT6yTnR9yP:0i-He,^!J2;7\ϝ~6vxLƧ" ҲRYPE%wb# v|?_*}ICpdMȗzPP'7B3|w79Kp7܁s%$h'=*jc/>y7~|$e%%SJX&^{s(hakgY}Y Y̌ɴ38LNԉÛ.֞2{r1WJC͕m2%x $/h.zZ;2. v'd$eqV;qèzo>5Cbam/` p75( =Fn\ߐ9zuuhT ee%mUl#*.Q{CeC]N|S=nk Jpcʤ5Ѡ"Ր>J2VUJ5iNr_lv&;Kˍ^P&o:?Bo~$DFDζ.ZX]v7l.UQy1.nD6J~y ^Oibm.Ll܋Q UVG J0d 6ʟ۟=gH7Bk6tA \ި3մ\KtEjw%TX%lvSA[`B $y3„G*>c_BB%z{R[RT(%kBjsץ3P ۻow2Ɛc{_TF6\>݋~+_DU?)rF N1̇7"sl %Wn8oB4FpۚS_ кeEfTFzK٬,$ZjXP@՘^R09|?{JM-_ })D[GD----TblM_mNǿ'ISOQ?c"V{r1")\#ҸQw*c}52TuFPA6qFR@oőy<>ޡrQNH&9_P;&^F:>!jVuz:  ܡ e*:[0DmE;MOЭWD}uR2L HK_W"u@ַ4DklynE_-D^m[b/JQkz6H%pغoPo4( FV!Uzj;m ֒o˩7+ri_v%Og5  `I]_ng贂-N>7—(z'FĘZiE.7 c\50hT͖,U#YP27@Sh:< GbX_}@y;[Ff5 @]_ endstream endobj 263 0 obj 6005 endobj 264 0 obj <>stream xcd`ab`ddds 4~H3a!ìs}7]G;*9(3=DAYS\17(391O7$#57QOL-SpQ(VJ-N-*KM霟[PZZZWPhd1w/æ?3>fMα6gQ^VuIYo?muݝ]L0eR_K~Nc{X endstream endobj 265 0 obj 249 endobj 266 0 obj <>stream x=yPSW_ y(*OڗX[N(b (ba B"KPAҰ=0(*`ec[֥1׎S|ǽw8p8"Ooîd;1Fnˑ2Ar8nGD$4,f&q2f.qR?O9=OQS-A#4 nx)kE":RF8ҁpN9S0 Rc`e腞WZ iJ`S[cI6oEש2怇}I0F=6iIOFڠuNe.e7@Ioܛi5GNKy9CiYgTt~k'В[99n9ܙ]X]_nОig_;=",>yT [>Dh_9_"$EO>_!zo+ 4EPA5WEd'7: c[żnowq~Lbr.i婆F]^YaZuQ%TGr*dR,UF%(_l l)1Eδ7 5=a\RHĆ5[Eb;E0ͮrq9_^=yA `D[X#}3ʀB+(-:m9'?tik2/ 4^o!ZS\t(/CAC9?@Z: S"d̷VA f3gH;KMh-mYX*1b(yA#و?J݈FvfbWqOҐ ܝGBkjZlbqlH|x䩀VVŦ.gH}Aj)\ uXyU~N9%p$E{&ʰޓ!*nȯydz "Bc]0Lͭل/UJJF?'~/|Ba=ټDPHW VK- W*6öွ[WTgc)ݦ=Ƕojx{f& iitjLO\>$e96MRclH#C6/6#[תv% mpp:;[+z&4DՉA8W`*upM))aq߰h|1Igi//\Buĵ endstream endobj 267 0 obj 1406 endobj 268 0 obj <>stream xYxTe> d=XJqQ"E0t&Le|gzIfR'= )$tP%+{W'bYyջɓI1rpVoڶ~|S}9)#|⦳o|}S_4ziἹqTa^z¾̩VϞ`ٲ%SW%Ǧ'DGLI55:!63oUIISWdL3SYS7Ħl㪼M1o ^͌ [em[!')rGnrT g.57s.|,A%`b 1MAįfMUb>X@Hl%3mzb@,&f;/Feb'xXBo3xbA'ē89)b2L,WH6|>nHܼͼꀿop1M}rٓ㒟ZTko9ѳQe9I8.s'/\5rWuzӿSƩNuM{툌%x8^E9o+W"hh: "@$+Aӈivr"AX  %o% c)19!굹J*qaK\Kbt0x/h׷sI.چF#^dz}>I-Si0B-F PTU>xn.VutTw(dɐFȤxgE`li3B+ M@ZXPVGGQJF&\~{{-3FOfT싳έzpNF+Usjܞsc' ]:w9[;}[7||} +hȧgyYYEG `JuLWhZ@;"%#t#XL%Hdx4 b0[-N>3;60-  ~*!g3 XMn;Ӄ?s&I\HT[$jܑ[+-ɯJrUܜBV̴PP8 e"]uU 'v8D*Z6YYzI;gj`K4t^5Ǟ\,5[m5 o _k\y x3)zt4b-l?&Z=pnp0DdH S ?|0 ;ӷ 60vQZjB!W sA)j%6.>a_|;ơ#h箖fh?*Txk Ӡe+~u{OxBvA,!r@.hJr2}w%XĔ4¤ZH!̮ӧtȆBR`GJU%z&k= =r oGFLܿK 堗pN3&&ҠujRWE\\&Y]BsARBKdWϼ%΢kЂhݿo^^N-)5QfwxќA }_B' 1+jkz|a(x'Xk>^D4 {]RhiOxQϠ7LwrlIcRޢA;,g3aHЃ^]EV.R :Jv~k:lЂclAVGxhFmU„i2X&?}#}Ō ̸ ꟄOWngu:9ZV"2S @~W?*\$ %o_R֋دrPaPPql@< ٙXAGKd-Ybq|!|?H6ˏ)hCYHEȟ4ۅ^Cӏ^- v̧7܅!+qiۦoݧ\:CL :CV|F5leb&ݹN Ia_Iڲ&U gȲpz+z܏+=].j+u I #cynJ](Y-΀2L^RSSU5;w9M_?ZI($@F쪆 ғćwf|ՎY_7ZkB&|k&ˡӏSsX~ZۍpnscEc9Y_}޵io̎KDŽ}^t ܾבv ' BLTv^4}Տz뵊J}"NZR:d4wpej$VQkr=WT!&yP'fzLa.TfPV9Tп/<*z@Qf?F Nm#!DWo1 pv7]Px6ԤĞ[[u>}aY"Jv:|<5Zly@,#oGw҄%0Uvj zO4@謰UB)Y\X$nɻ,Ƿf4S&A,̎dYWq\pv"@]wyʻl/kDP:^3T 恚bm^ֈұ,]BE5' m6֋F=F91:FwQm" 7VwNm4yg)Q;YKk:gGGeq:"v2Qꌬ":s(gg懿ݳR+`EYJA'Y]{Epgag?0uiLh~01:߿ ''sG7@b!{-U P6j&@*$mb(+6=A:EjB,95"f49~=h,#ɏih׻[h{g`8^\T9`JU^ er1tN<O h+a[Ͷ5aOɡ۔>OA^H!Ԕ`yI`wƣg}7I|.z2_eP-Jh('ߍV!k Y2%RR%`!cN=:^2QV2596q0'5B᪨/oJͯݽho/?^/:|k̕5LXG*iKbg#篘pC_UN Y#P6sʬXF9j8[_*8}xEϡ tWjSkN N~~4REţ~h$iȁ~J26J 1t4Dc7yՍbxjpg{ՌBul]7Gzsׯ/r}d Hp2ѥ]DuVh3JJ |y˧ĿH5 IoS^® b5h qE+&^hJ]N׋B"|Ƀ ]擧p>g')'$Rjpp¥S0p}!l,W,B( 1' HVSƇ NoW/TAv!ɬ:_vԶ:#r6Չ]1P\g侱f7%3=3SbUZTu1{l8sA݇Nz%'/CFU;4S<(VG//UnN-KٰYJh8(>rsIyZ]0dgZ [ZϘis%,T^媬:wU#xP 84O}Ykm^Sjz(>dy.OĤ,i LGO(k/i [BmƁ.m)Ɠ6984F48@tĨw wؙjq3JReܷķ|>~_gz: ;k)J]JVZK)r#SA Gc&((7?դ_ j=ۙXǿ0UH%_i>䑚H^dPi*aK7ۗ]ivmp :,Ct*Sb`8l`%j%dDQ9;}O3^X*gD8,N ~C..&0Yg^-vy8wKh9ārrsQʶrT]t gng'e 3]waC ]q,J#ڐj0& w55&k-16R[j$zbvEjZH sE&h;:UQL5P"Ou U'`(l8كyv)Bz[tZnK0cFoX]r`Lvp 8iT"FeVTߤ¡T.TX &,L DP(_fHVV B_F<`u&Uf4MTrVܿ?D\aOVECmиAF>\P8ʆY@L#/S>%M&կayԮyjXH&K~pj-;${_OXtˍ3& %*=13tx~=Oq*8>pim*JHf)SjyIlGLD"Q!_ŠS2 rZ< 3&˨bSi׬a|eh=voE@|8 ߐcՁƶ6KTj +FGY& HɔioK7P~T}aY!T02#24h,S Lmey0ns48*f:HȴcOtzr07JoTFq_}_ekoŠ!F=Ơѕꎈ*yei᠆Km4{wݍ<>`z}L A)]+-+L&a֨SS܂DVSX=MƖkL}n6_yq+)--'e^ΨUdBbjJGn9Z$gCe<5V~9'Uq(5@SE\ Ҫ16 XN_L#I6 !ea5:7LOw ùN_h3l@SBX%!֒JDw{60ym .d.Ж+t#۪2hNM+b`/8RJTFA-Nξ~*,VjNހ"~!Yqx߮و +3TFY'9\NT~Jw F!.r ^ {kO{0ГhAqm0*J&J|sY w6, DNO mP6 fN.s}9~ڴ[vn-`43۰q)R^;WRP!Nd'v$ 8b7uWk#\.t~ɒ#X9K pQ|25q&Fj%(oJEI=AD II%9MޡH C/Ο7`ⷁ-5^7轁O )Vmm*~z8I[1CnO@:Ka 6|?ʹ{($;SbI?mzPO񺇭s txC=1rIرmz endstream endobj 269 0 obj 6718 endobj 270 0 obj <>stream xVCMMI7+,)&FKZCopyright (C) 1997 American Mathematical Society. All Rights ReservedCMMI7Computer ModerniJMU.Ҫopnqnzv`~z\e~}t;_bdw揗cT(]z~ᷯpt|rMw?`  7 rV endstream endobj 271 0 obj 353 endobj 272 0 obj <>stream x5yPSWqD_Z VT*-(be $#Jr YX5((qE(uåZ\:Z>ڱq*s;$9$I zwcHӉK< -qE>ФEKW'&e$dd'ٳ}% H$(I"9GHKi dri4Y%y7?1!)&KcJ _|;k6AnC!F 1 F.τF\!KN:(6}Y0-5i|Bew ūU^gw_\p)OU'-LUDO[ڮA9!L2 ztoEoй08C ,xV~DY)tߕ%Qѡ)^@Njfyxa>49riL[l.zo+y%PZ˔eOß4M] ;X?ؚk*>wB?쌇 H(PsӶJyd^CqECs5x9h^nM|uh>/`Nv/ b k+PH·3%4\ꋶi4m8fcxJGazEqN@o 1ne@V.]BX_@upX5 ъPX 4p:b[gSeY}k!W}h8}_`?eʥU>TK!m=p МkEh!N0o[STk1o,(mqDɑ&F{06~8޹o`ںaE\LGVأ:+k e4LTF"OJk"v7co*\9tţpPSmvhn<fn1,+Ha~F\G{8Hdu:5|`)tq*sBt^ endstream endobj 273 0 obj 1491 endobj 274 0 obj <>stream xXXT׶>0s5Grk,1(ŎbIDzgf1 PD(0($5j&F>17իMn>&/oǜYgoc҉d\-2q`'qH@h၃Ƈp{ݓd6K}vXXY8c49^.~[-l\OU>[]YX)o/ŹcYk;\,l}]tNV{۹>ˬw,n  W-ܹzQǚ OǵM8iwN>vƸwg`f`1C;f>3ʬ`l 0f% gV1 If5X1kf$yŬc2S{ƖLc3kf:Ӌaax/ӏ1c̙L3)|@ɘPf\YU6Z&a\r!;X羝uw5ZmA7]#豨Gvzy]GG'iwSWKs{s/w鿠̀%bv*(áh&o尔wTڄId!p47*7h&ZD :N퉥Z57%Y5 ;@+~٤&OL&HgUFf7؁/5m۰06!" 2UT u_辱읏7 [uQM3NI'k[-vRY1 5{. U䲍-]}ttYdn\8-?ĸZ_4nؙώ6"^ݵcx%#gK;j*11<8u9Mw'aX\&003'EgH6ߛB#5*43ܕZ9]NU}Lj)Cca6Iku*M a4bLYI0/Rx)BJ%Ϣ!Ⳕ%V&$ia'6U*ic"#+zt2Ρ oj—BNCU͡`!08H E/Ѵ .)4* "h2&b\[I@~̻tg`7*2Ot+S`Ffr,4xmp|gYpЫop8 vA[U'X2miKc!Z;bFY/QK<%hɖQhJ]я=P^{cSʱaU  S, mbxw@j1LN*MtIE5J 2HפRܗ>b"Z{ֶ;v1Z[K{݈É'J\тX:,]F.ai'AiKpV]l[VVi~kp}ā47~,F+1NE~Ӷ7t*9tFM Omo?o&iq-Mv[E"w`2T4kN?~_!R}.|;pK8˦37FE/?џvŋKƣH[:\M4&Xy@31 Uۘ)+uWP)DOx3,idEj=] Fk F m+ (g:V5`(т%mh7+?v?:D*dS Nzt˪;r싋c fp޵]b<7\`{se5j@9ÞSX|Lw]n m8X}{w?Jll Lj '"ғr8O//Mfq]_涂멺 !OՑjd-Z>1{&h]eCf(U\䅆k#c81>y%W)Epd|yji~䉰,2r%-oq۸;9Nywo# yo̗ҩ1*5&StpZ$Xy}enl-pP>7tx:ЖgQ%!b7q6_iq#c}.EF;{WURpa?p>KqڤBb.KA~P'W65\< q==S鄤t !T]J=/ $H}?_ &hă5n/uhٯOW*j WcVhS/:d.PQ[Nfnw%3anALr.mlV3@ŘGq- c'΂ӒgحN!3%$̑zQѐ'IZ% w7%oAA 2rKVp(GX Vל \>_:^d!SF],' T9Jz UJU"6f-\x⸎].R-)A]l Je^r~{K{!Cu@E]}pي'*"aٹxĥUIU g< Ɂ-z 5c%&j?Cه̞Hd k7憩N"lMI`Nxsd1߮IIBVVFNyMw%2/aUo 1ba[RT[/JoUW:,:')$s [ȟ4]>Kq[k޼lև '|:E;p($9^)}J2)_F(HA{8mߒj-s*&>/TFb2HTJ0!t6G&tW &mO*gP+M'mG&zJ.FΧ奤DF{Q\Qm|$3 %QOMaE(>⼶t`麌ܧ84,{h?32s# m Y6]Ѩb2\!?, ՟))ndYZ ݲ 0A͖>͐ p L KNH̕:V Q@8( 2K _ALu?-wYbtMh{Br;]VvZ&c3C8{Bj0!,)>u==zjsMI&&+EufjƱm҂SbK<XHwSj^ɩiܛ"#>i0^?GJ{$mߣ*pAԈx4\EL9WTUb wg 2JYK.3T[Y2LB ŪmIhVӡ0$ȇRNc{lp2ַvNukeԜk!ׁJEƇ67)F)7*=4ɪ!tK`΄ ,Çl=?'HWBܧWJ΅N=`HdhWPЎ(xAXFRi+WjCȥ]"hI=õm x^ɠׂ|F)4G;|G.Ѓ XШYJUxe]w_eKCS+TS(F-ZZ]?LmICYk*Ei 6-NjC(`wZM섶Ż`IETƌj+?[CE{v2Bs5wNGs` FIr%IL)i(D\!W5l:+s}=NTPXGhZ G B6D`vXK%QUrL]Rf[x:ƾo CHmKs?qW.=x㔯aA[b<Ԫ7{CbMʚGW#ǹo>M>㒆Cj]X;8׊Ƴ[?LzYHB yf?D ut ZS (#g%qBznA=ZNy 3GX!)b*9ftgkR戴pO/E PD} +#8\$Tx.z"l6CzynNZO[\#\49M³$igA=Hd|Qk*_wb.X*J@ߢ_n>,|e]z+wl"`._*ذO̙~VZv =ec?y#2-J-EIi,%<]Tjwo95 f]!!D9tkGyWj\[}](]vnմ7҂8T NNC Nxk&r#-&nIUŲs"ݺߓ ) 2w%D m]=%>@cS*skأPAg#o!g,풦j!J _n[~þҺO4sظiRQjo]7Z7_q/goh+@wEr4٭sIZn)VMie]Si];e]%u0 un endstream endobj 275 0 obj 5897 endobj 276 0 obj <>stream xV TSg~!\jN:RVNZZTƥ#H $b. PE; c[:ĩ5 jZu\؞g|ůߊQjCc~HeLN<QJSJ%W #NP)C>^ەX&c>ڈ ]}*1(jNVRsy j5Z@mVSQ(?ʛBKS/-R2jD&1H>vtKä]K]B.IײeL-sgf.}{_..qĀD6pRxBh 6*zZXAHQ0tVFO̝TF夿 r w2|-Y Z_L]RNS6wІlI>7T {;nK/<tjmJC"w *9_:e b }aΤ+Jv/C_[,Z0ٳ$$wd a7=tgn^`_RwT|3]%.HY o~}'9b(o^f[fGc X0'1;L w=>=sd+Y}ݽs.[3#&T$cgTUP6feL쌰֠P`+'YE֠ 8{7!-%)+17 32B z t SeiaDإLѴUs,É?Nږo'u?!nj߿$)6IwJp#kc8"QL2ߟ#ᭆZ!3#9׮_eEٮ.3X 0uٱQ`Xlo$7^CHEki62v.譻N~ҏ*_+МV,ބwڴ8O`FFKaC,Gl!8F[|n'*Ko8N8q4`r}@߶b"_/;F7ц'/ "`q f;]`$ ǜzeM8VRf8!fvM;U1.^/,B.?`v10uUյmU[Ql?›Kҷ :.+c7ucXώHQ)5%9%;.ݨlo*yECy՗In` GE{Py07c "%7$l̢kx5NV@44%̙Sn R(B6}vw£p G(R0&َS򼁇Ylyb,=-OC k+xAoq#S]͇;͑tv~~HzQ;=^@4A!bkv6$7k>j];#;ܨ>(JSř1ib1}? `~a<8> D^TA/G;*=Č-

߯5)Bc7`Dxɒ@вdr>0v/.g' 3L{*IW9o؛z |b /?9cūKCe?x}B5̲#N fL(VeҨZ5P GFS05l4dMdG큸Dh/_)JMMrmQޓyYChѶA rKؒ&V1ola8stGq`! {RսxC ̺g'(jYQjC]X/:<(cE9 Ph~i3"u`DίXH-.Jz_eVo`PŚv6ǃꠉ'}x\+z`Id GLǵ]Bn7<,<6 ] ->^mEkPpd&K; LSaMu,KC1cI,K7%gq΀iBn\Zed>e1hWz(رQԿ1 endstream endobj 277 0 obj 2363 endobj 278 0 obj <>stream xYyTSֿ1ps* Vk[mVQjGD0C f $C "8+jUKlh[hӾ>߉ SWǷַbܽw@@ٍy"'3 3q{gfm" ^~ pDI./2tY.Dȃ>rs@,uYeX&*N$r]/FP~E\R)JZI  ^zW^Ƭya_}'~ĝv{SjZIMvR*j:>GS3wZ5j IRm;JIm6PnD&Q"ʑbj2@MRQxJHMgg]sGSK2j9F%/z ֌:*t-;`?^b^DM}άfL=F?sQRcS==n㗌?SNOuLxaIrю[럞t;M`ON'ϝ0 yL,vK: YQFMkQf#1덂#&yYVCjKK!(9,4(!9D2++zmɥf"*T̩SPEy%yPLM6/i& S^:r ;8ep< D딻?RLdL\~/o\燱A=FLȃu :~;T*ΐ]ǭ-7AwZWy_{$dW3Th.zeP=9QlDT./%E>q_uNn΅TMNA[tcx{;=^Ĉ<;&$7 f&%P/#+4?s.Uue_Qv,DDށoIdу v{,6 NP ar/C.8B%eD ӣ'$B$94@ ޏDZГrADd yƢs`3sfxYq.*~/_vW#V.(8`BKͽUI I{) _C@+h.}>^G\/wƾ gm, !4'`+9Dٿܗ8pB^נQ94wM,yh >/&/ Cab R֦4w-ʣ _#nRcVhsхS^X5V}ӱ5 ~*n ːC 3_"q?=;C•h{*\dz@-x=&TM>bQ o#aܥDц&tXþ2]3p >+pdEρp+/ ` USJ_ƦnQ K!&0q../1]cOބ|;fpLpHg#\(m =i2΢ 4r- zS,&IevlEp#6`€,DB`y QIw8"_υWD3pB]W)f{w;wt=[}=y ^m_7fC8M1o69ukD2OuU̵渢t>G"U@ӷ7i쉞aSeuA#sQ?om87(cY]tU70uVP C&lRJF&3=;JiHeD}Ժ^Ac^'1o/}cρJ]SUkybp9`zs& ۆ:aBtМB$,KqL\U|u#uMt|g@$Jj-.ҨFje|6 M*i+wxlq&j5RhJg 3 Qreh"z_~9޻;jh;Kdͥn]CtꬂBne(cb0>B* y?K a_HHNj9i,Tee ^?ljhŚrR5썧"\mVDb1FSC*ebJ$vxT aV;͋KJ,TYߊvTdEKkDoro:G)6QVnoUK r^WYahi·6)K34PL2$TЎQN;%pWV^+7]&,53#3i`?? ?K wL;^+#+ůj:$@sT_߅,^my@!Xnh A&ZqtY'tt!28!~-T+#DBN@'*T;P wˊ*+9VŦdf%qK엚 1ΠH+MG7Լ\u.)hU┢7B˖vYD?RPʣC!MĤ5dY"T֗^%=`>\6`u !eЦ\"P&?`Q9ɖp ʁ &Y2*ռ-pjܸ72'ZK)ɅC^TfT78PdcrIƎ6k; 8 endstream endobj 279 0 obj 5410 endobj 280 0 obj <>stream x>MSBM10SA6$!FLQCopyright (C) 1997 American Mathematical Society. All Rights ReservedMSBM10EulerR3 8Q|!{d|fZsYH᱋ ' y{yzĐYYRxzyzRUkl&JmX$xU}h lx2~{w|pysF8*wAb  7 6x endstream endobj 281 0 obj 460 endobj 282 0 obj <>stream xY\Sg׿a\WAQUqUTq^aC3y{{)^8qmpڡXT[؇ Aޏ_{s ,(@ \<}W;Hn-TjeèInHSۖE=B&-ynܹ9{w s+\m5n!p=Uzx(ں!*`fс{Y{.y[P +|}7FrY>m 3&Μ۳&~);fԱ3_dE۶puw1Vcj)5JQke=5ZG-QӨz#j:5@fP)gʑIM6R+)j5LmVS͔BmPK!MYQBʚbTRè~p?eC ([j eNQHj0eISoQ;(rxʎMͧ>P E6%2p#l\735_a~b;,K"\%lf?>Z_f7߀C?;ŠvӇPC[ho}q,̰=>>rA l#FG8hwd(QQ?Gww}x-vѫFƌ:dnc?nܣ#ǻ/FW1PW4:F-$kaFբ`$l:&WbKxOm;H"¹8Y=|AJJ~( ХP,ONN@ Rq/*d+tXKT*_ЪP'g!1b] dI=4-l]\Mf A1ƣf?+{qPjK,!Բ.AXm+Q%OX,+Qc(>a$ ߌ\ !OCѶ +3erx+j2'M[`l0+³XOq+MuZwOᬁ4`:%%;Gb;S5xmGkxX*:gҏovqzgHhdkkxY{0b5UiXU"a=gIޥA8z-6n8#1gWL Tа+ЫD^l 2:ewhcTw kt9a-|v\ǖjNd" ?I#J 0 : AP ޶qG̴YdxW//3cGsX3ЙuTݹw\ף`qd1ib@` f2zk7oso^OG 7* .ނUW~LăS4ćm( DТ311l+;6Q8YWp cW('Vbe1VC?Jd`xizO {=ӦZ2\fhxvNA>'X]Q G9sؙH;w=DQ;,dƂ.j;l'Xg hTk~Ul .I{4 v0 ޟ-]X'!XfpuĆ&> Jugk8[T^b|w0>;RVgDVz9~ܹ+;?~uCHd$Q@;}Si.,:[}e!9n`L-PeLzRj i2"gA'a`n?~18zCnq2Z'r!h&M[a !jTԖyUjgZ063}no"㑱y .^W/GE̡n W"(ee1_c'.:v4.E hۢΫe0P2@|X?xiis}):3 "SƞJHp u/=E%\E }wbEԉWn&ڈG$LX@L<-B)l^ha9,:Fo(7g$>&jMnuKq?ppr̈ QV@GSE":='7h*Iqnj7I0/t{/Hx맭_źػg D\Jij~0bO QCnk}94Ol{wC[GX.b#Z'HNEr>Q7:< H+P$&q"ʵPӭ<تn EB1qbv/ &»_vZ(T|z2Ǘw;3<%[y5.E߱-tCprfT>DŽ<{oF~w>}RGsrtWfϖmd1s̢."00,,0"{݀7B-[uzٴs]GrԷئʢ\&:-sQuϣqK <)۳oBw\FX~rkkB'%?soXJmh'3?VF/gGC:{ߟ^8D)ZgURĘJwxMqѾ&*8~Grȑ'? û}Rgt/`X׻4F^A~(Z.N'O:fBUa AG`~{# F Z!@>l#ߠm$LDÿ 1LKڃ&@$2>h2OzjU| eݛ 4rFeczuY?U3R&вdSM@4XKaV7%j%\>3t]8_OaCT]-Iث5?v6M/Yw^ ă,_wȳ5v۠!E!hM. YHȓ֭GN,^a0:AuH==vO 'X|$$1 T u^g79%‰([w9&mbq[Do ~F K5a86{!k^b , "e+/L _xOēV<ƴCZ;m4A%yY$ϔU!Iq)kYj,%FĔUegr읽Wlٻe3-Wp/e"k/-(( rs F=ޞm[=-Іӭ/5;~-20!;P(B{?qd7Gb2ȈJSˎ( ? 50L#*۾ir96ǽU|RYA.jkDWP% |閍wfoP׭#Cbf%;t+<2b>`$ n1h/8)-P7̫fj̊ϣrMMҀ(-lfǔVɒBxHpt~s=!\'k?JSч1O UyMOa)}Owv:⁸ūԕBi6W|TE1%!0Q*IQZ2ү;? n?!vY)˶-7S56ԓgg<]^AaoH)[*F(MzgW[a OYYJTTEBľ3~^Go$\/3e`C~} BGcn9*df2&%5OPm.| `S$2l#bđɅI<bjm\Rl2ME9|K,wDRoڗ[/DViw쪍IG9)/,-VHѾ࢞*%H:7u=c0|*U~=-.,\)/MOGEN.o)ʺ ̫I"Мĥ&EċUM/.f!ݡ}lEzvwn493skgϻgJ.YtWN+kP!:2r_PP\P˼3]t Ԣu7t\ ]bmNyҶM__՞hE~ןe0gۢUkt& '~򊃚9mZk?zr sCЦfK '\fuxf İX,tUW*3r QEH=Sw̹xng؀KBXv;ԁZkkL3$!ġX&T^*hǵtwj(bU  Q1\y vY="ʼni$" $QĿ38;Pm ^*pFNG͈Q+?E-ÂؙѼ<m!oy"gx<1!Uۜeq%ܢ~Xw|6?ԟ,:Urzti=NxV UbA(Sه␯_pX\dC3nf=ܐYoJ)ɚh }H0NŦP޽ endstream endobj 283 0 obj 7582 endobj 284 0 obj <>stream x]Q]Ha}_nִZ*}͏(P+LD)˽hnsks-Ĺ͉nD1d "$t]tS7_˾YW]G\C9K.9pÒK&4R XɘG Ηss}@7|s}ڜy2LB !=myrun[<{.V{ceMŔO>stream xztä́ 6-t$0:SqqUrU$^$#۸{M ޣޥQj H $jZBMFRNRj 5ZG-Rrj5@QөF#j>5KR4%M QoQݩ~TʎIu^T7Օ@RqGmQT5K@j;D9S[H].6]cħ.Zf#ɔi.a(f3owt S{<֫oz>su*=18Oof=V{`v_?w hs߾Žq?Mt|p{!!%C]9lMò={g;6|#f䠑FR*ht͘D+^m6`AF 1岡;q/^L&NwA7\E⣞  Y{9Q|%^mI-Ai[Φk2c 8]X'-@G5ZBo 4rtz~S镠t`.n0\ݰk[5%^ q:6X.[g)f.-һb~2zV;+Jf6Y/ב=XE ZMjpbdVh ;J9 ]`  |v]j|2^6h2Hp,e, >rT9Gv5@imQs/!Ku zb#*$!%dr+'ϟuZqzrN9p, q~0]V0ҫ?x&I7ѡJQ7VvAb@gBJ"+;/i}S~AkQDP'iTJ }o`Mރ[e:`&ֈm\B{j5n֚$xMKl;"'!5{txyBMPJҔ [ e8Zu'AMnۢ6e!MzAj{HG 07\%jDU$ ol e=T͗#e(6ɬ&erj:uYiꅜ U2AG#tIOO\0d"m[O;]I'w$D~da_N7ss<[MAgN9 fdE;yIywagPimŲGIKs[\{W/?@ g^< |}B**9BPiUo;lv.!O(_(T IƏ 0H"=TL-tGRVڄJp[1CMҋW+* w;b/pOw4qb@=I9YWj >{05^#tt;>$*wٺ}#0V6*Vތ[m J/}NKh4"ByHDah顆Np!0ߍDvVȐ+vhс]>aCZԧgk,C=Z\rI$WdAw_lgj xh WCj)P(UJMx :CnoHGʇp`΍pY䍿_piW:Ni!'>V3(mE|P#)P[i!i/K:m.;A2Ke! <'nl {94I͕6":)n6-LJ F ǀ=^{ix"M P&jex蠙XGx.tEw}D&F>$f޾5%Tt5GǓ t/cK,:02kǴ:}A]gmGȤO/tJrvWB̪WhB:t0 ŰfwzJϼ;hD^4'YQ&kd&B"lፁ40:Fݭy,rcHExݱ'h)&#f__s ]q ~{†/UKb?H,ġhZx ?XmgOȂ=#ő+}6EY=C` EH|E=`#}Z~2>-{j2 ``aqbw>u:AS'Z=Me0I, H>xpR UT<2EU5FuN[76諡@3A(,5Jhw%:WtEK,-A=uw#oߕRop _+5*fQ5$h2 :L~Y 77UuP<>|KdYg駹d$T2U0R$֊J8Z[eL$mϾڟ>'X,֋ /Csoh,v+&1h>#+[`~,EGr WM&Ztr tgvY'#zP4Ѡ[SqڴD`!%JhHMJK9%{iMDX΄<_g[#8tʖ{K=K&`a!T-T $sjUbJUd;Ue!WI.B_"淠ttغ2ƇѢ$CW} W)%hyme?i4 G/XGC 90uUwGʞųOo| 7o.p.AK#ZRDZm}Z Kūr'07oWg@.qI) |Ba${]MukKf>b[(¿c%pZS><˛=rɆBG7J,v&4B4BC[]4)h)Ta[6֝D<޵DȿH>$FB5W#;ْӍn}bA|#ٺI|x|yͿŅ}:V[+I#7ى4!x늷yѼG9U;7@=IGӳa{ro'5ճ`7s|X$<y)ů[XقX ].K 0XULe1((*"dɠS>9ZV}{Xa55*BS@P7ӄE ("b|LI";kZXƐ~r4&( !AqC8IGO~C = v =6ђ\J|A_jUm_:ρH.$Ր{6fu$iLZ1 q nv$#&Loqb~ f﹠{5 -h!jC$$iT*;8wE|"z&(!uԄL4e~]F>5!-;-֒5(U5"VO]9uH$a:HB'TxKHNq/;>S#vBYRO\QѪHrU5P9x`B~VYAd ~3Vp|Ó4LO3!t}BݬY$}Mjiԕah=1:Fnt\\}y;+Amq[|re,] n)s[5^Zg{O/;Yakw0 =`K[XI\–(J 8n$Ui d 0t7B&'>]9ڍEl[W@_}ac SÃf问V(н/4*>.%;HU*T9Lٴh303:/ 4FWV+RdUrk9ts̛ms{OC]|KA3\6>zmlAcUE]%ĶsrTk pHV+5J}vʂ՜aBjԧT Ŷj·bЧ0VZDat-FYYǎ!jaX۬ЌpHDB iĠ.h 6e$eC}'󅱧0LcO v}6Q"ݹ{JKCK!Z!h g7i!l9>UbT=f;.p H :큕cy%hl^JzC\ܐ`,E,E~ aHRRl0ݩ;7FIz(}xr?;^մ;tW}\W3kߌZF~XLjTzd'NUPuƆn|aԨdsT̀XNrN*}RUnXYeG0,k3PBU|0 qJNiF-$Xf%ߴF?RdBvx Mdy*;ĮzwS`<vX A q5HKFmv$Cb>Nf壙|z=O{"DrsYte* _~ogJ>alxMl罫8|aMp>* *UpÅ㥨 Q#sa,'\X;vM k6ZE(s1:&[pnŲ/Hui'N0{չm"sh@:[-n[zY\ ߽X7.8iMnEdhbjV-[;eBR1ފg/~1wpX;-c~$.B%$)ՙ=uܥgbpZ/էm? C5Kޛ¹Ϛ ( jXl͊ `f?=~kWB>Nh*I LٚX/x& qxf$Ľû>27YZ5W<7ZBb?QC=OK",F=l>WߨcAN':=ĩS/_!KH P3);_n+DPn?|RaۊNx~RL=gv8'3|9~\sb9ˡ OLЬ* ܼMMֆiR YDFڮPdB1Wrq(7g$vmf*j RoQ {+2pCzE6+Q著&TjДFɾy Ox7^`xki wuCb!ըw$omaQ05ׇCi.8 uz<5U)b1Էd: 12|L!#-j<~ BŖ"o'ldϹ2-;d Q5Ǣ‘mĨHv4;-1) ¢Vl *D(1sø\ 1xEZrq ^eK"T)k C~'#Nc\sLW ,`r sUYYC{XVXor i; ׌EMYT+)(1dI 4""8\H M+IDPZAg<|0xabJ{&_UʄJ;i0 E23n "f&~XHr#40:VVpo'v;Yg EEN[VgRՂCdnDTr▉5mغ(?}.V9`H3Mx&Zb[o{Qt~ ej3zxn^˙c%SF0>J&4VD3OuF6Aϫ4,kfFTGgNɝӵ: gV1A+Ӹd5ݱÆwaΖ>F֟Cv f[ 1IEN/!3/NZ)ŕsw w (e1E5ajSc--̌m'5$^33h|3:klEȞE/+> #)|)U7䑖-7)[WI_.r Hp8UbǼx ޱ{v媑b`2e/S%cq\}V | vGm=̬\cJJb =( {!$mї|:7x*aAr 5fA*Dj j3?;, *fV/кH4 tEǦK+g>R_Ye45@+s:n++}nY.l%'EbdK%.n F6DN^ .rC$PW<XߞղnՠJ-L.KL O!p9n5MA].>|>stream xVit!R@'t%@5 m KHM6l۲ldK]]mdK,lK^/,&BnBRNB)mHh:r4i99Q}9}s߻wYYlIJڹ&-18+tVZ:k|&wN҅T"jc#sXm2mn$>׮})qS_R_/8̫0?V %n*/OL61W ?vKUEuOL*+ y~IAET2%eŠ<IA"kuH* YlG"#f"X,fB"Xfme'~u9u8Np3\4LSsiEYs:TD4r'K;51W@rz8#+;2XjlHsd;ЊZVԠNULb2 [of$,/-bj\gҐ`Jh;YcJJuK<XDfYsІS? 7&H +*Pc| p-[e%Vkҳf]tj08F b6( Q/XRT%}g A旫VEpGL溷VRq5_37$pm6CB^*B%Ko'4:Q^vLmFczs{Q\iBX'zw7zTO$ 6t̋1u㩩*@]!t^s+ZXReGDqis>_iM'K֩jm\L W?7ՑU[|&ND7rH۰r/^Rz$h '04+᪉C:]Xj!-:DNMq1beSu ;zTo6;O;{F^ppK"ubWxy_zV:I cL1r,֪4XSv5*K4p($t;;:p \dJ9?q0- KM7i;4+oNfO>q%K&ۼw;:fB`~LEc2*L0PjG,s%{3ښ|YNeԗ#:=7~I@/6K5T5xS6"b 3 =$V/mfOp6 %GZn) 3CLdzQU\4\8uc#E[JҋsA5P~95gz1I)fl.PB;~dGZz*6K=[>Q0C%;3YFa p$h˩U sqeMU8%^ݨ`h .\a.*A_ښ|wmiI] ȁd[Bp%Lp#̓ 6Υ)x(=fgrj3%ǰc}%.CU8!5wiJ&Šy[Wgw-ܾ=nȥX]sM-c}!lj %$zuRćO":ПC4tz9& )MeٌpysdJ7!a}]^cbE퐩Z;Ta2ꯙ(fhmgcg(A Kez!oݫU*4}v:H::;l .DPFc endstream endobj 289 0 obj 2774 endobj 290 0 obj <>stream x}W TWB#m[Aq3( B@QC^w7/AAA(:ɉf6>h$nV:Q̜=u}U=1CLzrsq|uʤqV҇r _* OG3>`2oGޤaqN<;,ZiٞИ;"VŅ ?v;ڱ34.iӲݻYuZfW={BcVED2 #.KAz _s}|`yNgƟY,g0kOfŸ0뙕cff\Mffla<{FŌd8Ѣazd3V*FR;zHonQ+d.zu3v0l[v^eiVm QSq^x(3<I+*i aLPAf a4mi?Dr m7mܱ7NDK>zOTMNc- I)%I`3f;kt,u|xVn + .'<-4N5K Abʓjk+W'7hI(6, n³wAEp~&U;Ưg)jgOe\yZj 9m-p ^Gke=*`UXF2wu] ܮz6ط4ǂ['% rϠ⫖ jC! qȯf-Ab:Hx9@vTL[TOJ]3f\}#MS8D8xef552+TWstk ?)E,>½߷¥Pվ W= .mW;5̌!4THvNvP]\))0k ׺B9ђ*!2$.:%";:=w)kg.?W~ͣx3=K$'XZTZDJOHyd (SMraINN{{?vEDlZUMQ&➠t&C- M}R[]}eߒN=i4'wZn8v;ɸju^, }A3[>@A1swc9^?XNqb*,j FfULǿ EꮮeG\ԋ(O»Lq5DD}_̢gBdB);ֳ6/\QO?ޅ]7LY@J 3yo]LE6S 3t9sc9ܻ~JOzd!#Ǹ~o=U jgҝhVs!Of^#բi}~70NTi5G du.wQ}p܄T˵ begf.7wӑUh."(V;,e/q SÀ򉺽!j&%PX$ (EFYkal55_ )zI8NKc@(?vSuduo|2[" b{|] ; "DG'\(DlxRi8L?*(NAAuhfp4ʣc(%=gzz,ZC{Ƿ8 P-J1h9D[/ut6ϷDCvav*5S7U]t4%O]w]+z\.@:$-lAT[Zǖ'(/%Uxw [{[:k\XkP7Vh,!tW$3z3O@7>9>EO 4|efhs@W_@{24dq!VDBm%K/)?Fg[K/w/!pYI Yq(*YXicVhcʓ6;Er endstream endobj 291 0 obj 3397 endobj 292 0 obj <>stream x]1 EwN B`KV 0C "dI[U/o=wt0rw(tg |% %wkӮ&nx&5GF[2  QO$e/uJ7U{V I %۵O\ 9 / |J1QW'S endstream endobj 293 0 obj 169 endobj 54 0 obj <> endobj 294 0 obj <> endobj 295 0 obj <>stream x]1n0 EwB7D;V \%Cd > endobj 297 0 obj <> endobj 10 0 obj <> endobj 8 0 obj <> endobj 166 0 obj <> endobj 36 0 obj <> endobj 298 0 obj <> endobj 299 0 obj <>stream x];0D{bo_ M \Y#Y[Sp{b((fռL5NI\=?:1#f,NTӒqί\^uPx U͇`o͈ZAA̟uf{Afuhn̅7xʬ2#pCN!M endstream endobj 300 0 obj 154 endobj 152 0 obj <> endobj 301 0 obj <> endobj 30 0 obj <> endobj 28 0 obj <> endobj 302 0 obj <> endobj 118 0 obj <> endobj 26 0 obj <> endobj 24 0 obj <> endobj 303 0 obj <> endobj 88 0 obj <> endobj 78 0 obj <> endobj 304 0 obj <> endobj 68 0 obj <> endobj 18 0 obj <> endobj 305 0 obj <> endobj 58 0 obj <> endobj 306 0 obj <> endobj 16 0 obj <> endobj 307 0 obj <> endobj 308 0 obj <>stream x]1n!E{N v-!q(Rr,"ϟ"4bpn,9Jδxws!fvb^0:y*YE$x1:z: t/k<qGީnùJ- /* n. endstream endobj 309 0 obj 223 endobj 56 0 obj <> endobj 310 0 obj <> endobj 14 0 obj <> endobj 53 0 obj <> endobj 11 0 obj <> endobj 9 0 obj <> endobj 7 0 obj <> endobj 165 0 obj <> endobj 35 0 obj <> endobj 151 0 obj <> endobj 29 0 obj <> endobj 27 0 obj <> endobj 117 0 obj <> endobj 25 0 obj <> endobj 23 0 obj <> endobj 87 0 obj <> endobj 77 0 obj <> endobj 67 0 obj <> endobj 17 0 obj <> endobj 57 0 obj <> endobj 15 0 obj <> endobj 55 0 obj <> endobj 13 0 obj <> endobj 2 0 obj <>endobj xref 0 311 0000000000 65535 f 0000278019 00000 n 0000365023 00000 n 0000277566 00000 n 0000269587 00000 n 0000000015 00000 n 0000003940 00000 n 0000359431 00000 n 0000351001 00000 n 0000359100 00000 n 0000350607 00000 n 0000358670 00000 n 0000349797 00000 n 0000364721 00000 n 0000358080 00000 n 0000363853 00000 n 0000356483 00000 n 0000362923 00000 n 0000355330 00000 n 0000278067 00000 n 0000269737 00000 n 0000003960 00000 n 0000011059 00000 n 0000361533 00000 n 0000353691 00000 n 0000361269 00000 n 0000353490 00000 n 0000360669 00000 n 0000352753 00000 n 0000360413 00000 n 0000352564 00000 n 0000278152 00000 n 0000269889 00000 n 0000011080 00000 n 0000018993 00000 n 0000359883 00000 n 0000351479 00000 n 0000278272 00000 n 0000270041 00000 n 0000019014 00000 n 0000025405 00000 n 0000278392 00000 n 0000270193 00000 n 0000025426 00000 n 0000031669 00000 n 0000278457 00000 n 0000270345 00000 n 0000031690 00000 n 0000037274 00000 n 0000278566 00000 n 0000270497 00000 n 0000037295 00000 n 0000043957 00000 n 0000358459 00000 n 0000349053 00000 n 0000364465 00000 n 0000357572 00000 n 0000363566 00000 n 0000355933 00000 n 0000278631 00000 n 0000270649 00000 n 0000043978 00000 n 0000049269 00000 n 0000278751 00000 n 0000270801 00000 n 0000049290 00000 n 0000057697 00000 n 0000362716 00000 n 0000355175 00000 n 0000278849 00000 n 0000270953 00000 n 0000057718 00000 n 0000065196 00000 n 0000278991 00000 n 0000271105 00000 n 0000065217 00000 n 0000071405 00000 n 0000362185 00000 n 0000354621 00000 n 0000279144 00000 n 0000271257 00000 n 0000071426 00000 n 0000076741 00000 n 0000279264 00000 n 0000271409 00000 n 0000076762 00000 n 0000083741 00000 n 0000361917 00000 n 0000354261 00000 n 0000279373 00000 n 0000271561 00000 n 0000083762 00000 n 0000090228 00000 n 0000279515 00000 n 0000271713 00000 n 0000090249 00000 n 0000097206 00000 n 0000279602 00000 n 0000271865 00000 n 0000097227 00000 n 0000103586 00000 n 0000279733 00000 n 0000272018 00000 n 0000103608 00000 n 0000108384 00000 n 0000279854 00000 n 0000272173 00000 n 0000108406 00000 n 0000112065 00000 n 0000279931 00000 n 0000272328 00000 n 0000112087 00000 n 0000117488 00000 n 0000279997 00000 n 0000272483 00000 n 0000117510 00000 n 0000124772 00000 n 0000361059 00000 n 0000353332 00000 n 0000280074 00000 n 0000272638 00000 n 0000124794 00000 n 0000132393 00000 n 0000280208 00000 n 0000272793 00000 n 0000132415 00000 n 0000139686 00000 n 0000280318 00000 n 0000272948 00000 n 0000139708 00000 n 0000146973 00000 n 0000280406 00000 n 0000273103 00000 n 0000146995 00000 n 0000153570 00000 n 0000280505 00000 n 0000273258 00000 n 0000153592 00000 n 0000161585 00000 n 0000280582 00000 n 0000273413 00000 n 0000161607 00000 n 0000166656 00000 n 0000280725 00000 n 0000273568 00000 n 0000166678 00000 n 0000169195 00000 n 0000280835 00000 n 0000273723 00000 n 0000169217 00000 n 0000174659 00000 n 0000360221 00000 n 0000352310 00000 n 0000280912 00000 n 0000273878 00000 n 0000174681 00000 n 0000179531 00000 n 0000281046 00000 n 0000274033 00000 n 0000179553 00000 n 0000184577 00000 n 0000281167 00000 n 0000274188 00000 n 0000184599 00000 n 0000187818 00000 n 0000359665 00000 n 0000351286 00000 n 0000281310 00000 n 0000274343 00000 n 0000187840 00000 n 0000191819 00000 n 0000281411 00000 n 0000274498 00000 n 0000191841 00000 n 0000195724 00000 n 0000281532 00000 n 0000274653 00000 n 0000195746 00000 n 0000198103 00000 n 0000281631 00000 n 0000274808 00000 n 0000198125 00000 n 0000203441 00000 n 0000281708 00000 n 0000274963 00000 n 0000203463 00000 n 0000207393 00000 n 0000281818 00000 n 0000275118 00000 n 0000207415 00000 n 0000209287 00000 n 0000281928 00000 n 0000275273 00000 n 0000209309 00000 n 0000213230 00000 n 0000281994 00000 n 0000275428 00000 n 0000213252 00000 n 0000217395 00000 n 0000282071 00000 n 0000275583 00000 n 0000217417 00000 n 0000222530 00000 n 0000282137 00000 n 0000275738 00000 n 0000222552 00000 n 0000224755 00000 n 0000282247 00000 n 0000275893 00000 n 0000224777 00000 n 0000228249 00000 n 0000282324 00000 n 0000276048 00000 n 0000228271 00000 n 0000233759 00000 n 0000282412 00000 n 0000276203 00000 n 0000233781 00000 n 0000236988 00000 n 0000282522 00000 n 0000276358 00000 n 0000237010 00000 n 0000241823 00000 n 0000282610 00000 n 0000276513 00000 n 0000241845 00000 n 0000244408 00000 n 0000282742 00000 n 0000276668 00000 n 0000244430 00000 n 0000248159 00000 n 0000282808 00000 n 0000276823 00000 n 0000248181 00000 n 0000251671 00000 n 0000282885 00000 n 0000276978 00000 n 0000251693 00000 n 0000256052 00000 n 0000282984 00000 n 0000277125 00000 n 0000256074 00000 n 0000260290 00000 n 0000283094 00000 n 0000277272 00000 n 0000260312 00000 n 0000266116 00000 n 0000283160 00000 n 0000277419 00000 n 0000266138 00000 n 0000269565 00000 n 0000283237 00000 n 0000283303 00000 n 0000283859 00000 n 0000283880 00000 n 0000286356 00000 n 0000286378 00000 n 0000290993 00000 n 0000291015 00000 n 0000292548 00000 n 0000292570 00000 n 0000293356 00000 n 0000293377 00000 n 0000299470 00000 n 0000299492 00000 n 0000299829 00000 n 0000299850 00000 n 0000301344 00000 n 0000301366 00000 n 0000308172 00000 n 0000308194 00000 n 0000308635 00000 n 0000308656 00000 n 0000310235 00000 n 0000310257 00000 n 0000316242 00000 n 0000316264 00000 n 0000318715 00000 n 0000318737 00000 n 0000324235 00000 n 0000324257 00000 n 0000324805 00000 n 0000324826 00000 n 0000332496 00000 n 0000332518 00000 n 0000333328 00000 n 0000333349 00000 n 0000342377 00000 n 0000342399 00000 n 0000345261 00000 n 0000345283 00000 n 0000348768 00000 n 0000348790 00000 n 0000349032 00000 n 0000349316 00000 n 0000349427 00000 n 0000349776 00000 n 0000350251 00000 n 0000351931 00000 n 0000352062 00000 n 0000352289 00000 n 0000352476 00000 n 0000353233 00000 n 0000354175 00000 n 0000355082 00000 n 0000355840 00000 n 0000356318 00000 n 0000357047 00000 n 0000357255 00000 n 0000357551 00000 n 0000357981 00000 n trailer << /Size 311 /Root 1 0 R /Info 2 0 R /ID [(e{-2A\))(e{-2A\))] >> startxref 365217 %%EOF